Propiedades de compilación
Las propiedades de MSBuild controlan el comportamiento de los destinos. Se especifican en el archivo del proyecto, por ejemplo, MyApp.csproj, dentro de un elemento MSBuild PropertyGroup.
AdbTarget
La propiedad $(AdbTarget)
especifica el dispositivo Android de destino en el que se puede instalar el paquete Android o desde el que se puede quitar.
El valor de esta propiedad es el mismo que el de la opción del dispositivo de destino adb
.
AfterGenerateAndroidManifest
Destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente después del destino de _GenerateJavaStubs
interno, que es donde se generará el archivo AndroidManifest.xml
en $(IntermediateOutputPath)
. Si quiere realizar modificaciones en el archivo AndroidManifest.xml
generado, puede hacerlo mediante este punto de extensión.
AndroidAapt2CompileExtraArgs
Especifica opciones de la línea de comandos que se pasan al comando aapt2 compile al procesar recursos de Android.
AndroidAapt2LinkExtraArgs
Especifica opciones adicionales de la línea de comandos que se pasan al comando aapt2 link al procesar recursos de Android.
AndroidAddKeepAlives
Una propiedad booleana que controla si el vinculador insertará GC.KeepAlive()
invocaciones dentro de proyectos de enlace para evitar la recolección de objetos prematura.
El valor predeterminado es True
para las compilaciones de configuración de lanzamiento.
AndroidAotAdditionalArguments
Propiedad de cadena que permite pasar opciones adicionales al compilador Mono durante la tarea Aot
para los proyectos que tienen $(AndroidEnableProfiledAot)
o $(AotAssemblies)
establecidos en true
.
El valor de cadena de la propiedad se agrega al archivo de respuesta cuando se llama al compilador cruzado Mono.
En general, esta propiedad debe dejarse en blanco, pero en ciertos escenarios especiales podría proporcionar una flexibilidad útil.
La propiedad $(AndroidAotAdditionalArguments)
es diferente de la propiedad relacionada $(AndroidExtraAotOptions)
; $(AndroidAotAdditionalArguments)
pasa opciones independientes completas separadas por espacios como --verbose
o --debug
al compilador AOT, mientras $(AndroidExtraAotOptions)
que contiene argumentos separados por comas que forman parte de la opción --aot
del compilador AOT.
AndroidAotCustomProfilePath
Archivo que aprofutil
debe crear para contener los datos del generador de perfiles.
AndroidAotProfiles
Propiedad de cadena que permite al desarrollador agregar perfiles de AOT desde la línea de comandos. Es una lista de rutas de acceso absolutas separadas por comas o puntos y comas.
AndroidAotProfilerPort
Puerto al que aprofutil
debe conectarse al obtener datos de generación de perfiles.
AndroidAotEnableLazyLoad
Habilite la carga diferida (retrasada) de los ensamblados AOT-d, en lugar de cargarlos previamente en el inicio. El valor predeterminado es True
para las compilaciones de lanzamiento con cualquier forma de AOT habilitada.
Introducido en .NET 6
AndroidApkDigestAlgorithm
Valor de cadena que especifica el algoritmo de síntesis del mensaje que se usará con jarsigner -digestalg
.
El valor predeterminado es SHA-256
.
AndroidApkSignerAdditionalArguments
Propiedad de cadena que permite al desarrollador proporcionar argumentos a la herramienta apksigner
.
AndroidApkSigningAlgorithm
Valor de cadena que especifica el algoritmo de firma que se usará con jarsigner -sigalg
.
El valor predeterminado es SHA256withRSA
.
AndroidApplication
Valor booleano que indica si el proyecto es para una aplicación Android (True
) o para un proyecto de la biblioteca de Android (False
o no existe).
Solo puede existir un proyecto con <AndroidApplication>True</AndroidApplication>
en un paquete de Android. (Desafortunadamente, este requisito no se ha comprobado, lo que puede dar lugar a errores sutiles y extraños respecto a los recursos de Android).
AndroidApplicationJavaClass
Nombre completo de clase de Java que se va a usar en lugar de android.app.Application
cuando una clase hereda de Android.App.Application.
La propiedad $(AndroidApplicationJavaClass)
se establece generalmente mediante otras propiedades, como la propiedad $(AndroidEnableMultiDex)
de MSBuild.
AndroidAvoidEmitForPerformance
Propiedad booleana que determina si se "evita" o no System.Reflection.Emit
para mejorar el rendimiento de inicio. De forma predeterminada, esta propiedad es True
.
El uso de tiene un impacto notable en el rendimiento de System.Reflection.Emit
inicio en Android. Este comportamiento está deshabilitado de forma predeterminada para los siguientes modificadores de características:
Switch.System.Reflection.ForceInterpretedInvoke
: después de la segunda llamada aMethodInfo.Invoke()
oConstructorInfo.Invoke()
, se emite código para mejorar el rendimiento de las llamadas repetidas.Microsoft.Extensions.DependencyInjection.DisableDynamicEngine
: después de la segunda llamada para recuperar un servicio de un contenedor de inserción de dependencias, se emite código para mejorar el rendimiento de las llamadas repetidas.
Es deseable en la mayoría de las aplicaciones Android deshabilitar este comportamiento.
Consulte la documentación sobre modificadores de características de bibliotecas de clases base para obtener más información sobre los modificadores de características disponibles.
Se ha agregado en .NET 8.
AndroidBinUtilsPath
Ruta de acceso a un directorio que contiene binutils de Android como ld
, el enlazador nativo y as
, el ensamblador nativo. Estas herramientas se incluyen en la carga de trabajo de .NET para Android.
El valor predeterminado es $(MonoAndroidBinDirectory)\binutils\bin\
.
AndroidBoundExceptionType
Valor de cadena que especifica cómo se deben propagar las excepciones cuando un tipo proporcionado por .NET para Android implementa un tipo o interfaz de .NET en términos de tipos de Java, por ejemplo Android.Runtime.InputStreamInvoker
, y System.IO.Stream
, o Android.Runtime.JavaDictionary
y System.Collections.IDictionary
.
Java
: El tipo de excepción de Java original se propaga tal cual.Java
significa que, por ejemplo,InputStreamInvoker
no implementa correctamente la API deSystem.IO.Stream
porqueJava.IO.IOException
se puede iniciar desdeStream.Read()
en lugar deSystem.IO.IOException
.System
: El tipo de excepción de Java original se detecta y se encapsula en un tipo de excepción de .NET adecuado.System
significa que, por ejemplo,InputStreamInvoker
implementa correctamenteSystem.IO.Stream
yStream.Read()
no iniciará instancias deJava.IO.IOException
. (En su lugar, puede iniciar un objetoSystem.IO.IOException
que tengaJava.IO.IOException
como el valor deException.InnerException
).El valor predeterminado es
System
.
AndroidBoundInterfacesContainConstants
Propiedad booleana que determina si se admitirán constantes de enlace en interfaces o se usará la solución alternativa para crear una clase IMyInterfaceConsts
.
El valor predeterminado es True
.
AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods
Propiedad booleana que indica si se admitirán los miembros predeterminados y estáticos en las interfaces, o una solución alternativa antigua de crear una clase del mismo nivel que contenga miembros estáticos como abstract class MyInterface
.
El valor predeterminado es True
en .NET 6 y False
para versiones heredadas.
AndroidBoundInterfacesContainTypes
Propiedad booleana que indica si se admitirán tipos anidados en interfaces o la solución alternativa de crear un tipo no anidado como IMyInterfaceMyNestedClass
.
El valor predeterminado es True
en .NET 6 y False
para versiones heredadas.
AndroidBuildApplicationPackage
Valor booleano que indica si crear y firmar el paquete (.apk). Establecer este valor en True
es equivalente a usar SignAndroidPackage
como destino de compilación.
De forma predeterminada, esta propiedad es False
.
AndroidBundleConfigurationFile
Especifica un nombre de archivo que se va a usar como archivo de configuración para bundletool
al compilar un lote de aplicaciones de Android. Este archivo controla algunos aspectos de cómo se generan APK desde el lote, por ejemplo, en qué dimensiones se divide el lote para generar APK.
.NET para Android configura algunas de estas opciones automáticamente, incluida la lista de extensiones de archivo para dejar sin comprimir.
Esta propiedad solo es pertinente si $(AndroidPackageFormat)
está establecido en aab
.
AndroidBundleToolExtraArgs
Especifica las opciones de línea de comandos que se van a pasar al comando bundletool al compilar agrupaciones de aplicaciones.
AndroidClassParser
Propiedad de cadena que controla cómo se analizan los archivos .jar
. Los valores posibles son:
class-parse: usa
class-parse.exe
para analizar el código de bytes directamente, sin ayuda de una JVM.jar2xml: este valor está obsoleto y ya no se admite.
AndroidCodegenTarget
Propiedad de cadena que controla la ABI de destino de generación de código. Los valores posibles son:
XamarinAndroid: este valor está obsoleto y ya no se admite.
XAJavaInterop1: usa Java.Interop de uso para las invocaciones de JNI. Los ensamblados de enlace que usan
XAJavaInterop1
solo se pueden compilar y ejecutar con Xamarin.Android 6.1 o posterior. Xamarin.Android 6.1 y versiones posteriores enlazanMono.Android.dll
con este valor.
El valor predeterminado es XAJavaInterop1
.
AndroidCreatePackagePerAbi
Una propiedad booleana que determina si se debe crear un conjunto de archivos, por ABI especificado en $(AndroidSupportedAbis)
, en lugar de tener compatibilidad con todos los ABI de un solo archivo .apk
.
Vea también la guía Compilar APK específicos de ABI.
AndroidCreateProguardMappingFile
Propiedad booleana que controla si se genera un archivo de asignación de proguard como parte del proceso de compilación.
Al agregar lo siguiente al csproj, se generará el archivo y se usará la propiedad AndroidProguardMappingFile
para controlar la ubicación del archivo de asignación final.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
Al generar archivos .aab
, el archivo de asignación se incluye automáticamente en el paquete. No es necesario cargarlo manualmente en Google Play Store. Al usar .apk
archivos, AndroidProguardMappingFile
deberá cargarse manualmente.
El valor predeterminado es True
cuando se usa $(AndroidLinkTool)
=r8.
AndroidDebugKeyAlgorithm
Especifica el algoritmo predeterminado que se usará para debug.keystore
. El valor predeterminado es RSA
.
AndroidDebugKeyValidity
Especifica la validez predeterminada que se usará para debug.keystore
. El valor predeterminado es 10950
o 30 * 365
o 30 years
.
AndroidDebugStoreType
Especifica el formato de archivo de almacén de claves que se va a usar para debug.keystore
. Se establece de forma predeterminada en pkcs12
.
AndroidDeviceUserId
Permite implementar y depurar la aplicación en cuentas de invitado o de trabajo. El valor es el valor uid
que se obtiene del comando adb siguiente:
adb shell pm list users
El comando anterior devolverá los datos siguientes:
Users:
UserInfo{0:Owner:c13} running
UserInfo{10:Guest:404}
El objeto uid
es el primer valor entero. En la salida anterior, son 0
y 10
.
AndroidDexTool
Propiedad de estilo de la enumeración con los valores válidos de dx
o d8
. Indica qué compilador dex de Android se usa durante el proceso de compilación de .NET para Android.
El valor predeterminado es dx
. Consulte nuestra documentación sobre D8 y R8.
AndroidEnableDesugar
Propiedad booleana que determina si desugar
está habilitado. Android no admite actualmente todas las características de Java 8 y la cadena de herramientas predeterminada implementa las nuevas características de lenguaje ejecutando transformaciones de código de bytes, llamadas desugar
, en la salida del compilador javac
. El valor predeterminado es False
si se usa $(AndroidDexTool)=dx
y True
si se usa$(AndroidDexTool)
=d8
.
AndroidEnableGooglePlayStoreChecks
Propiedad booleana que permite a los desarrolladores deshabilitar las siguientes comprobaciones de Google Play Store: XA1004, XA1005 and XA1006. Deshabilitar estas comprobaciones resulta útil para los desarrolladores que no tienen como destino Google Play Store y que no quieren ejecutar las comprobaciones mencionadas.
AndroidEnableMarshalMethods
Una propiedad bool, que determina si se habilitan o no los métodos de serialización de LLVM.
Los métodos de serialización de LLVM son una optimización de inicio de la aplicación que usa puntos de entrada nativos para el registro de métodos de Java native
.
Esta propiedad es False de forma predeterminada.
Se ha agregado en .NET 8.
AndroidEnableMultiDex
Propiedad booleana que determina si se usará la compatibilidad con Multi-Dex en el archivo .apk
final.
De forma predeterminada, esta propiedad es False
.
AndroidEnableObsoleteOverrideInheritance
Propiedad booleana que determina si los métodos enlazados heredan [Obsolete]
automáticamente los atributos de los métodos que invalidan.
Se ha agregado compatibilidad con esta propiedad en .NET 8.
De forma predeterminada, esta propiedad es True
.
AndroidEnablePreloadAssemblies
Propiedad booleana que controla si todos los ensamblados administrados que se incluyen en el paquete de aplicación se cargan o no durante el inicio del proceso.
Cuando se establece en True
, todos los ensamblados que se incluyen en el paquete de aplicación se cargan durante el inicio del proceso, antes de que se invoque cualquier código de aplicación.
Cuando se establece en False
, los ensamblados solo se cargan cuando es necesario.
La carga de ensamblados según sea necesario permite que las aplicaciones se inicien más rápido y también es más coherente con la semántica de .NET de escritorio.
Para ver los ahorros de tiempo, establezca la propiedad del sistema debug.mono.log
en timing
y busque el mensaje Finished loading assemblies: preloaded
en adb logcat
.
Puede que las aplicaciones o bibliotecas que usan inserción de dependencias necesiten que esta propiedad se establezca en True
si estas requieren a su vez que AppDomain.CurrentDomain.GetAssemblies()
devuelva todos los ensamblados del conjunto de aplicación, incluso si el ensamblado no hubiera sido necesario.
De forma predeterminada, este valor es False.
AndroidEnableProfiledAot
Propiedad booleana que determina si los perfiles de AOT se usarán o no durante la compilación Ahead Of Time.
Los perfiles se muestran en el grupo de elementos .Grupo de elementos @(AndroidAotProfile)
. Este ItemGroup contiene perfiles predeterminados. Se puede reemplazar quitando los perfiles de AOT existentes y agregando los suyos.
De forma predeterminada, esta propiedad es False
.
AndroidEnableRestrictToAttributes
Propiedad de estilo de enumeración con valores válidos de obsolete
y disable
.
Cuando se establece obsolete
en , los tipos y los miembros marcados con la anotación androidx.annotation.RestrictTo
de Java o que están en paquetes de Java no exportados se marcarán con un [Obsolete]
atributo en el enlace de C#.
Este [Obsolete]
atributo tiene un mensaje descriptivo que explica que el propietario del paquete de Java considera que la API es "interna" y advierte sobre su uso.
Este atributo también tiene un código XAOBS001
de advertencia personalizado para que se pueda suprimir independientemente de la API obsoleta "normal".
Cuando se establece disable
en , la API se generará como normal sin atributos adicionales. (Este es el mismo comportamiento que antes de .NET 8).
La adición [Obsolete]
de atributos en lugar de quitar automáticamente la API se ha realizado para conservar la compatibilidad de api con los paquetes existentes. Si prefiere quitar miembros que tienen la @RestrictTo
anotación o están en paquetes java no exportados, puede usar Transformar archivos además de esta propiedad para evitar que estos tipos se enlacen:
<remove-node path="//*[@annotated-visibility]" />
Se ha agregado compatibilidad con esta propiedad en .NET 8.
Esta propiedad se establece obsolete
en de forma predeterminada.
AndroidEnableSGenConcurrent
Propiedad booleana que determina si se usará el recolector de GC simultáneo de Mono.
De forma predeterminada, esta propiedad es False
.
AndroidErrorOnCustomJavaObject
Propiedad booleana que determina si los tipos pueden implementar Android.Runtime.IJavaObject
sin heredarlo también de Java.Lang.Object
o Java.Lang.Throwable
:
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
Cuando es True, estos tipos generarán un error XA4212; en caso contrario, una advertencia XA4212.
De forma predeterminada, esta propiedad es True
.
AndroidExplicitCrunch
Esta propiedad ya no se admite.
AndroidExtraAotOptions
Propiedad de cadena que permite pasar opciones adicionales al compilador Mono durante la tarea Aot
para los proyectos que tienen $(AndroidEnableProfiledAot)
o $(AotAssemblies)
establecidos en true
.
El valor de cadena de la propiedad se agrega al archivo de respuesta cuando se llama al compilador cruzado Mono.
En general, esta propiedad debe dejarse en blanco, pero en ciertos escenarios especiales podría proporcionar una flexibilidad útil.
La propiedad $(AndroidExtraAotOptions)
es diferente de la propiedad relacionada $(AndroidAotAdditionalArguments)
; $(AndroidAotAdditionalArguments)
coloca argumentos separados por comas en la opción --aot
del compilador Mono. $(AndroidExtraAotOptions)
pasa en su lugar opciones completas separadas por espacios independientes como --verbose
o --debug
al compilador.
AndroidFastDeploymentType
Lista de valores separada por :
(dos puntos) para controlar qué tipos se pueden implementar en el directorio de implementación rápida del dispositivo de destino cuando la propiedad de MSBuild $(EmbedAssembliesIntoApk)
es False
. Si un recurso se implementa rápido, no se inserta en el archivo .apk
generado, lo que puede acelerar los tiempos de desarrollo. (Cuanto más rápido se implementa, con menos frecuencia es necesario recompilar el archivo .apk
, y el proceso de instalación puede ser más rápido). Los valores válidos son:
Assemblies
: implementa los ensamblados de aplicación.Dexes
: implemente archivos, bibliotecas nativas y typemaps.dex
. El valorDexes
solo se puede usar en dispositivos que ejecutan Android 4.4 o posterior (API-19).
El valor predeterminado es Assemblies
.
La compatibilidad con la implementación rápida de recursos a través de ese sistema se quitó en la confirmación f0d565fe. Esto se debe a que requería el uso de la API en desuso para trabajar.
Experimental.
AndroidFragmentType
Especifica el tipo completo predeterminado que se usará para todos los elementos de diseño de <fragment>
al generar el código de los enlaces de diseño. El valor predeterminado es el tipo de Android Android.App.Fragment
estándar.
AndroidGenerateJniMarshalMethods
Propiedad booleana que permite la generación de métodos de serialización JNI como parte del proceso de compilación. Reduce en gran medida el uso de System.Reflection
en el código de aplicación asistente de enlace.
El valor predeterminado es False
. Si los desarrolladores quieren usar la nueva característica de métodos de serialización JNI, pueden establecer
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
en su archivo .csproj
. Especifique también la propiedad en la línea de comandos mediante
-p:AndroidGenerateJniMarshalMethods=True
Experimental. El valor predeterminado es False
.
AndroidGenerateJniMarshalMethodsAdditionalArguments
Propiedad de cadena que se puede usar para agregar parámetros a la invocación jnimarshalmethod-gen.exe
y es útil para la depuración, de modo que se puedan usar opciones como -v
, -d
o --keeptemp
.
El valor predeterminado es una cadena vacía. Se puede establecer en el archivo .csproj
o en la línea de comandos. Por ejemplo:
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
O bien
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
AndroidGenerateLayoutBindings
Permite la generación de código subyacente de diseño si se establece en true
o lo deshabilita por completo si se establece en false
.
El valor predeterminado es false
.
AndroidGenerateResourceDesigner
El valor predeterminado es true
. Cuando se establece en false
, deshabilita la generación de Resource.designer.cs
.
AndroidHttpClientHandlerType
Controla la implementación de System.Net.Http.HttpMessageHandler
predeterminada que se va a utilizar mediante el constructor predeterminado System.Net.Http.HttpClient
. El valor es un nombre calificado con el ensamblado de una subclase HttpMessageHandler
, adecuada para usarse con System.Type.GetType(string)
.
En .NET 6 y versiones posteriores, esta propiedad solo tiene efecto cuando se usa junto con $(UseNativeHttpHandler)=true
.
Los valores más comunes para esta propiedad son los siguientes:
Xamarin.Android.Net.AndroidMessageHandler
: use las API de Java de Android para realizar solicitudes HTTP. Es similar al heredadoXamarin.Android.Net.AndroidClientHandler
con varias mejoras. Admite HTTP 1.1 y TLS 1.2. Es el controlador de mensajes HTTP predeterminado.System.Net.Http.SocketsHttpHandler, System.Net.Http
: controlador de mensajes predeterminado en .NET. Admite HTTP/2, TLS 1.2 y es el controlador de mensajes HTTP recomendado para usar con Grpc.Net.Client. Este valor es equivalente a$(UseNativeHttpHandler)=false
.Anulación de la cadena vacía, que es equivalente a
System.Net.Http.HttpClientHandler, System.Net.Http
Se corresponde a la opción Predeterminado de las páginas de propiedades de Visual Studio.
El asistente para nuevo proyecto selecciona esta opción para los nuevos proyectos cuando la versión de Android mínima está configurada en Android 4.4.87 o versiones anteriores en Visual Studio, o bien cuando la opción Plataformas de destino está establecida en Desarrollo moderno o Compatibilidad máxima en Visual Studio para Mac.
System.Net.Http.HttpClientHandler, System.Net.Http
: use elHttpMessageHandler
administrado.Se corresponde a la opción Administrado de las páginas de propiedades de Visual Studio.
Nota:
En .NET 6, el tipo que especifique no debe ser Xamarin.Android.Net.AndroidClientHandler
o System.Net.Http.HttpClientHandler
heredar de cualquiera de estas clases. Si va a migrar desde "clásico" Xamarin.Android, use AndroidMessageHandler
o derive su controlador personalizado en su lugar.
Nota:
La compatibilidad con la propiedad $(AndroidHttpClientHandlerType)
funciona estableciendo la variable de entorno XA_HTTP_CLIENT_HANDLER_TYPE
.
Un valor $XA_HTTP_CLIENT_HANDLER_TYPE
encontrado en un archivo con una acción de compilación de @(AndroidEnvironment)
tendrá prioridad.
AndroidIncludeWrapSh
Un valor booleano que indica si el script del contenedor de Android (wrap.sh
) se debe empaquetar en el APK. El valor predeterminado es false
porque el script de contenedor puede influir significativamente en la forma en que la aplicación se inicia y funciona, y el script debe incluirse solo cuando sea necesario, por ejemplo, al depurar o cambiar el comportamiento de inicio o entorno de ejecución de la aplicación.
El script se agrega al proyecto con la acción de compilación ,La acción de compilación @(AndroidNativeLibrary)
, porque se coloca en el mismo directorio que las bibliotecas nativas específicas de la arquitectura y se debe denominar wrap.sh
.
La forma más fácil de especificar la ruta de acceso al script wrap.sh
es colocarla en un directorio con el nombre de la arquitectura de destino. Este enfoque funcionará si se tiene tan solo un objeto wrap.sh
por arquitectura:
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
Sin embargo, si el proyecto necesita más de un objeto wrap.sh
por arquitectura para distintos propósitos, este enfoque no funcionará.
En su lugar, en estos casos el nombre se puede especificar con los metadatos Link
de AndroidNativeLibrary
:
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Si se usan los metadatos Link
, la ruta de acceso especificada en su valor debe ser una ruta de acceso de biblioteca específica de la arquitectura nativa válida, relativa al directorio raíz APK. El formato de la ruta de acceso es lib\ARCH\wrap.sh
donde ARCH
puede ser uno de los siguientes:
arm64-v8a
armeabi-v7a
x86_64
x86
AndroidIncludeAssetPacksInPackage
Esta propiedad controla si una compilación de Asset Packs se incluye automáticamente en el archivo final .aab
. El valor predeterminado true
es .
En determinados casos, es posible que el usuario quiera liberar una versión provisional. En estos casos, el usuario no necesita actualizar el paquete de recursos. Especialmente si el contenido del paquete de recursos no ha cambiado. Esta propiedad permite al usuario omitir los paquetes de recursos si no son necesarios.
Agregado en .NET 9
AndroidInstallJavaDependencies
El valor predeterminado es true
para las compilaciones de la línea de comandos. Cuando se establece en true
, habilita la instalación del SDK de Java al ejecutar el <InstallAndroidDependencies/>
destino.
Se ha agregado compatibilidad con esta propiedad en .NET 9.
AndroidJavadocVerbosity
Especifica cómo deben ser los comentarios de documentación XML de C# "detallados" al importar la documentación de Javadoc en proyectos de enlace.
Requiere el uso de Acción de compilación @(JavaSourceJar)
.
La propiedad $(AndroidJavadocVerbosity)
es similar a la enumeración, con valores posibles de full
o intellisense
:
intellisense
: solo emite los comentarios XML:<exception/>
,<param/>
,<returns/>
,<summary/>
.full
: emita elementosintellisense
, así como<remarks/>
,<seealso/>
y cualquier otra cosa que sea compatible.
El valor predeterminado es intellisense
.
AndroidKeyStore
Valor booleano que indica si se debe usar información de firma personalizada. El valor predeterminado es False
, lo que significa que se usará la clave de firma de depuración predeterminada para firmar paquetes.
AndroidLaunchActivity
Actividad de Android que se va a iniciar.
AndroidLinkMode
Especifica qué tipo de vinculación debe realizarse en los ensamblados contenidos dentro del paquete de Android. Solo se usa en proyectos de aplicación de Android. El valor predeterminado es SdkOnly. Los valores válidos son:
None: no se intenta la vinculación.
SdkOnly: la vinculación se realizará solo en las bibliotecas de clase base, no en los ensamblados del usuario.
Full: la vinculación se realizará en las bibliotecas de clase base y en los ensamblados del usuario.
Nota:
El uso de un valor para
AndroidLinkMode
de Full da lugar con frecuencia a aplicaciones interrumpidas, en especial cuando se usa la reflexión. Evítelo a menos que sepa realmente lo que está haciendo.
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
AndroidLinkResources
Cuando true
, el sistema de compilación vinculará los tipos anidados de la clase Resource
de Resource.Designer.cs en todos los ensamblados. El código IL que usa esos tipos se actualizará para usar los valores directamente en lugar de acceder a los campos.
La vinculación de los tipos anidados puede tener un pequeño impacto en la reducción del tamaño del apk y también puede ayudar con el rendimiento de inicio. Solo las compilaciones de "lanzamiento" están vinculadas.
Experimental. Solo diseñado para trabajar con código como
var view = FindViewById(Resources.Ids.foo);
No se admitirán otros escenarios (como la reflexión).
AndroidLinkSkip
Especifica una lista de nombres de ensamblado delimitada por punto y coma (;
), sin extensiones de archivos, que no se deben vincular. Solo se usa dentro de proyectos de aplicaciones Android.
<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
AndroidLinkTool
Propiedad de estilo de la enumeración con los valores válidos de proguard
o r8
. Indica el reductor de código que se usa con el código Java. El valor predeterminado es una cadena vacía o proguard
si $(AndroidEnableProguard)
es True
. Consulte nuestra documentación sobre D8 y R8.
AndroidLintEnabled
Propiedad booleana que permite que el desarrollador ejecute la herramienta lint
de Android como parte del proceso de empaquetado.
Cuando $(AndroidLintEnabled)
=True, se usan las propiedades siguientes:
También se pueden usar las acciones de compilación siguientes:
Consulte la Ayuda de Lint para obtener más información sobre las herramientas lint
de Android.
AndroidLintEnabledIssues
Propiedad de cadena que es una lista separada por comas de problemas de Lint que se van a habilitar.
Solo se usa cuando $(AndroidLintEnabled)
=True.
AndroidLintDisabledIssues
Propiedad de cadena que es una lista separada por comas de problemas de Lint que se van a deshabilitar.
Solo se usa cuando $(AndroidLintEnabled)
=True.
AndroidLintCheckIssues
Propiedad de cadena que es una lista separada por comas de problemas de Lint que se van a comprobar.
Solo se usa cuando $(AndroidLintEnabled)
=True.
Nota: Solo se comprobarán estos problemas.
AndroidManagedSymbols
Propiedad booleana que controla si se generan puntos de secuencia para que la información de nombre de archivo y número de línea se pueda extraer de los seguimientos de la pila de Release
.
AndroidManifest
Especifica un nombre de archivo para usar como plantilla para el archivo AndroidManifest.xml
de la aplicación.
Durante la compilación, cualquier otro valor necesario se combina para producir el archivo AndroidManifest.xml
real.
$(AndroidManifest)
debe contener el nombre de paquete en el atributo /manifest/@package
.
AndroidManifestMerger
Especifica la implementación para combinar archivos de AndroidManifest.xml. Se trata de una propiedad de estilo de enumeración donde legacy
selecciona la implementación original de C# y manifestmerger.jar
selecciona la implementación de Java de Google.
El valor predeterminado es actualmente manifestmerger.jar
. Si desea usar la versión anterior, agregue lo siguiente a csproj.
<AndroidManifestMerger>legacy</AndroidManifestMerger>
La fusión de Google permite la compatibilidad con xmlns:tools="http://schemas.android.com/tools"
tal y como se describe en la documentación de Android.
AndroidManifestMergerExtraArgs
Propiedad de cadena para proporcionar argumentos a la herramienta de documentación de Android.
Si quiere obtener una salida detallada de la herramienta, puede agregar lo siguiente a .csproj
.
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
Propiedad de estilo de la enumeración con los valores válidos de Xamarin
o GoogleV2
.
Controla qué repositorio usa el destino InstallAndroidDependencies
para determinar qué paquetes y versiones de paquetes de Android están disponibles y se pueden instalar.
Xamarin
es el repositorio de la lista aprobada (recomendado) en el Administrador de SDK de Visual Studio.
GoogleV2
es el repositorio de la lista completa (no compatible) en el Administrador de SDK de Visual Studio.
Si $(AndroidManifestType)
no se establece, Xamarin
se usa.
AndroidManifestPlaceholders
Lista separada por punto y coma de pares de reemplazo clave-valor para AndroidManifest.xml, donde los pares tienen el formato key=value
.
Por ejemplo, un valor de propiedad de assemblyName=$(AssemblyName)
define un marcador de posición de ${assemblyName}
que puede aparecer en AndroidManifest.xml:
<application android:label="${assemblyName}"
Esto proporciona un método para insertar variables del proceso de compilación en el archivo AndroidManifest.xml.
AndroidMultiDexClassListExtraArgs
Propiedad de cadena que permite a los desarrolladores pasar argumentos adicionales a com.android.multidex.MainDexListBuilder
al generar el archivo multidex.keep
.
Un caso específico es si se obtiene el siguiente error durante la compilación de dx
.
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
Si recibe este error, puede agregar lo siguiente al elemento .csproj
.
<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>
que permitirá que el paso dx
se realice correctamente.
AndroidPackageFormat
Propiedad de estilo de la enumeración con los valores válidos de apk
o aab
. Indica si quiere empaquetar la aplicación Android como un archivo APK o un paquete de aplicaciones Android. Los grupos de aplicaciones son un nuevo formato para las compilaciones de Release
que se quieran enviar a Google Play. El valor predeterminado es apk
.
Si $(AndroidPackageFormat)
se establece en aab
, se establecen otras propiedades de MSBuild necesarias para los lotes de aplicaciones de Android:
$(AndroidUseAapt2)
esTrue
.$(AndroidUseApkSigner)
esFalse
.$(AndroidCreatePackagePerAbi)
esFalse
.
Esta propiedad quedará en desuso para .NET 6. Los usuarios deben cambiar a la versión más reciente AndroidPackageFormats
.
AndroidPackageFormats
Propiedad delimitada por punto y coma con valores válidos de apk
y aab
.
Indica si quiere empaquetar la aplicación Android como un archivo APK o un paquete de aplicaciones Android. Los grupos de aplicaciones son un nuevo formato para las compilaciones de Release
que se quieran enviar a Google Play.
Al crear una compilación de lanzamiento, es posible que quiera generar aab
y un apk
para su distribución en varios almacenes.
Si se establece AndroidPackageFormats
en aab;apk
, ambos se generarán. Al establecer AndroidPackageFormats
en aab
o apk
, solo se generará un archivo.
El valor predeterminado es aab;apk
solo para Release
las compilaciones.
Se recomienda seguir usando solo apk
para la depuración.
AndroidPackageNamingPolicy
Propiedad de estilo de enumeración para especificar los nombres de paquete de Java del código fuente de Java generado.
El único valor admitido es LowercaseCrc64
.
AndroidProguardMappingFile
Especifica la regla de ProGuard -printmapping
para r8
. Esto significa que el archivo mapping.txt
se generará en la carpeta $(OutputPath)
. Este archivo se puede usar para cargar paquetes en Google Play Store.
De forma predeterminada, este archivo se genera automáticamente al usar AndroidLinkTool=r8
y generará el siguiente archivo $(OutputPath)mapping.txt
.
Si no quiere generar este archivo de asignación, puede usar la propiedad AndroidCreateProguardMappingFile
para dejar de crearlo.
Agregue lo siguiente en el proyecto
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
o utilice -p:AndroidCreateProguardMappingFile=False
en la línea de comandos.
AndroidD8IgnoreWarnings
Especifica --map-diagnostics warning info
que se va a pasar a d8
. El valor predeterminado es True
, pero se puede establecer en False
para exigir un comportamiento más estricto. Consulte el código fuente D8 y R8 para obtener más información.
Se ha agregado en .NET 8.
AndroidR8IgnoreWarnings
Especifica la regla de ProGuard -ignorewarnings
para r8
. Esto permite a r8
continuar con la compilación dex aunque se encuentren ciertas advertencias. El valor predeterminado es True
, pero se puede establecer en False
para exigir un comportamiento más estricto. Para obtener más información, consulte elmanual de ProGuard.
A partir de .NET 8, especifica --map-diagnostics warning info
. Consulte el código fuente D8 y R8 para obtener más información.
AndroidR8JarPath
Ruta de acceso a r8.jar
para su uso con el compilador y reductor de dex de r8. El valor predeterminado es una ruta de acceso a la instalación de la carga de trabajo de .NET para Android. Para obtener más información, vea la documentación sobre D8 y R8.
AndroidResgenExtraArgs
Especifica opciones adicionales de la línea de comandos que se van a pasar al comando aapt al procesar recursos de Android.
AndroidResgenFile
Especifica el nombre del archivo de recursos que se va a generar. La plantilla predeterminada establece esta propiedad en Resource.designer.cs
.
AndroidSdkBuildToolsVersion
El paquete de herramientas de compilación de Android SDK proporciona, entre otras, las herramientas aapt y zipalign. Se pueden instalar varias versiones diferentes del paquete de herramientas de compilación al mismo tiempo. Para realizar el paquete de herramientas de compilación elegido para empaquetar, se comprueba y usa una versión de herramientas de compilación "preferida", si existe; en caso contrario, se usa el paquete de herramientas de compilación instalado con la versión más alta.
La propiedad de MSBuild $(AndroidSdkBuildToolsVersion)
contiene la versión de herramientas de compilación preferida. El sistema de compilación de .NET para Android proporciona un valor predeterminado en Xamarin.Android.Common.targets
y el valor predeterminado se puede invalidar dentro del archivo de proyecto para elegir una versión alternativa de las herramientas de compilación, si (por ejemplo) el aapt más reciente se bloquea mientras se sabe que funciona una versión anterior de aapt.
AndroidSigningKeyAlias
Especifica el alias de la clave en el almacén de claves. Es el valor de keytool -alias usado al crear el almacén de claves.
AndroidSigningKeyPass
Especifica la contraseña de la clave en el archivo de almacén de claves. Este es el valor especificado cuando keytool
pide que se escriba la contraseña de clave para $(AndroidSigningKeyAlias).
Esta propiedad también admite los prefijos env:
y file:
que se pueden usar para especificar una variable de entorno o un archivo que contiene la contraseña.
Estas opciones proporcionan una manera de evitar que la contraseña aparezca en los registros de compilación.
Por ejemplo, para usar una variable de entorno denominada AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>
Para usar un archivo ubicado en C:\Users\user1\AndroidSigningPassword.txt
:
<PropertyGroup>
<AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
Nota:
El prefijo env:
no se admite cuando $(AndroidPackageFormat)
está establecido en aab
.
AndroidSigningKeyStore
Especifica el nombre del archivo del almacén de claves que crea keytool
. Corresponde al valor proporcionado a la opción keytool - keystore.
AndroidSigningStorePass
Especifica la contraseña en $(AndroidSigningKeyStore)
.
Es el valor proporcionado a keytool
al crear el archivo de almacén de claves y cuando se pide que se escriba la contraseña del almacén de claves.
Esta propiedad también admite los prefijos env:
y file:
que se pueden usar para especificar una variable de entorno o un archivo que contiene la contraseña. Estas opciones proporcionan una manera de evitar que la contraseña aparezca en los registros de compilación.
Por ejemplo, para usar una variable de entorno denominada AndroidSigningPassword:
<PropertyGroup>
<AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>
Para usar un archivo ubicado en C:\Users\user1\AndroidSigningPassword.txt
:
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>
Nota:
El prefijo env:
no se admite cuando $(AndroidPackageFormat)
está establecido en aab
.
AndroidSigningPlatformKey
Especifica el archivo de clave que se va a usar para firmar el apk.
Esto solo se usa al compilar aplicaciones system
.
AndroidSigningPlatformCert
Especifica el archivo de certificado que se va a usar para firmar el apk.
Esto solo se usa al compilar aplicaciones system
.
AndroidStripILAfterAOT
Propiedad bool que especifica si se quitarán o no los cuerpos de método de los métodos compilados de AOT.
El valor predeterminado es false
y los cuerpos de método de los métodos compilados de AOT no se quitarán.
Cuando se establece en true
, $(AndroidEnableProfiledAot)
se establece false
en de forma predeterminada.
Esto significa que, en las compilaciones de configuración de versión, en la que $(RunAOTCompilation)
está true
habilitada de forma predeterminada, AOT está habilitada para todo.
Esto puede dar lugar a un aumento de los tamaños de la aplicación. Este comportamiento se puede invalidar estableciendo explícitamente $(AndroidEnableProfiledAot)
true
en dentro del archivo del proyecto.
Se ha agregado compatibilidad con esta propiedad en .NET 8.
AndroidSupportedAbis
Propiedad de cadena que contiene una lista delimitada por punto y coma (;
) de ABI que se deberían incluir en el archivo .apk
.
Los valores admitidos son:
armeabi-v7a
x86
arm64-v8a
x86_64
AndroidTlsProvider
Esta propiedad está obsoleta y no debe usarse.
AndroidUseAapt2
Propiedad booleana que permite al desarrollador controlar el uso de la herramienta aapt2
para el empaquetado.
De forma predeterminada, será True.
Esta propiedad no se puede establecer en false.
AndroidUseApkSigner
Propiedad booleana que permite al desarrollador usar la herramienta apksigner
en lugar de jarsigner
.
AndroidUseDefaultAotProfile
Propiedad bool que permite al desarrollador suprimir el uso de los perfiles de AOT predeterminados.
Para suprimir los perfiles de AOT predeterminados, establezca la propiedad en false
.
AndroidUseDesignerAssembly
Una propiedad bool que controla si el sistema de compilación generará como _Microsoft.Android.Resource.Designer.dll
una aplicación en un Resource.Designer.cs
archivo. Las ventajas de esto son aplicaciones más pequeñas y un tiempo de inicio más rápido.
El valor predeterminado está true
en .NET 8.
Como autor de Nuget, se recomienda enviar tres versiones del ensamblado si desea mantener la compatibilidad con versiones anteriores.
Uno para MonoAndroid, uno para net6.0-android y otro para net8.0-android. Para ello, use Xamarin.Legacy.Sdk. Esto solo es necesario si el proyecto de biblioteca de Nuget usa elementos del proyecto o a través de AndroidResource
una dependencia.
<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>
Como alternativa, desactive esta configuración hasta que haya quedado en desuso tanto clásico como net7.0-android.
Los proyectos de .NET 8 que elijan desactivar esta configuración no podrán consumir referencias que lo usen. Si intenta usar un ensamblado que tiene esta característica habilitada en un proyecto que no lo hace, recibirá un XA1034
error de compilación.
Se ha agregado en .NET 8.
AndroidUseInterpreter
Propiedad booleana que hace que .apk
contenga el intérprete mono y no el JIT normal.
Experimental.
AndroidUseLegacyVersionCode
Propiedad booleana que permite al desarrollador revertir el cálculo de versionCode al comportamiento anterior de Xamarin.Android 8.2. SOLO debe usarse para los desarrolladores con aplicaciones en Google Play Store. Se recomienda encarecidamente utilizar la nueva propiedad $(AndroidVersionCodePattern)
.
AndroidUseManagedDesignTimeResourceGenerator
Propiedad booleana que cambiará las compilaciones en tiempo de diseño para usar el analizador de recursos administrados en lugar de aapt
.
AndroidUseNegotiateAuthentication
Propiedad booleana que permite la compatibilidad con la autenticación NTLMv2/Negotiate en AndroidMessageHandler
. El valor predeterminado es Falso.
Se ha agregado en .NET 7.
AndroidUseSharedRuntime
Esta propiedad está obsoleta y no debe usarse.
AndroidVersionCode
Propiedad de MSBuild que se puede usar como alternativa a /manifest/@android:versionCode
en el archivo AndroidManifest.xml
. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Este será el valor predeterminado en .NET 6.
Esta propiedad se omite si se usan $(AndroidCreatePackagePerAbi)
y $(AndroidVersionCodePattern)
.
@android:versionCode
es un valor entero que se debe incrementar para cada versión de Google Play. Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/@android:versionCode
.
AndroidVersionCodePattern
Propiedad de cadena que permite al desarrollador personalizar versionCode
en el manifiesto.
Consulte Crear el código de la versión para el APK para más información sobre cómo decidir el valor de versionCode
.
Algunos ejemplos: si abi
es armeabi
y versionCode
en el manifiesto es 123
, {abi}{versionCode}
producirá un código de versión de 1123
cuando $(AndroidCreatePackagePerAbi)
sea True; de lo contrario, producirá un valor de 123.
Si abi
es x86_64
y versionCode
en el manifiesto es 44
, se generará 544
cuando $(AndroidCreatePackagePerAbi)
sea True; de lo contrario, se producirá un valor de 44
.
Si se incluye una cadena con formato de relleno a la izquierda, {abi}{versionCode:0000}
, produciría 50044
porque estamos rellenando a la izquierda versionCode
con 0
. Como alternativa, puede usar el relleno decimal, como ,{abi}{versionCode:D4}
que hace lo mismo que el ejemplo anterior.
Solo se admiten cadenas con formato de relleno "0" y "Dx", dado que el valor DEBE ser un entero.
Elementos de clave predefinidos
abi: inserta la ABI de destino para la aplicación.
- 2:
armeabi-v7a
- 3:
x86
- 4:
arm64-v8a
- 5:
x86_64
- 2:
minSDK: inserta el valor de SDK mínimo admitido del archivo
AndroidManifest.xml
o11
si no se define ninguno.versionCode: usa el código de versión directamente de
Properties\AndroidManifest.xml
.
Puede definir elementos personalizados con la propiedad $(AndroidVersionCodeProperties)
, que se define a continuación.
De forma predeterminada, el valor se establece en {abi}{versionCode:D6}
. Si un programador quiere mantener el comportamiento anterior, se puede reemplazar el valor predeterminado mediante el establecimiento de la propiedad $(AndroidUseLegacyVersionCode)
en true
.
AndroidVersionCodeProperties
Propiedad de cadena que permite al desarrollador definir elementos personalizados para usar con $(AndroidVersionCodePattern)
.
Tienen el formato de un par key=value
. Todos los elementos de value
deben ser valores enteros. Por ejemplo: screen=23;target=$(_AndroidApiLevel)
. Como puede ver, pueden hacer uso de propiedades de MSBuild existentes o personalizadas en la cadena.
ApplicationId
Propiedad de MSBuild que se puede usar como alternativa a /manifest/@package
en el archivo AndroidManifest.xml
. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Este será el valor predeterminado en .NET 6.
Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/@package
.
ApplicationTitle
Propiedad de MSBuild que se puede usar como alternativa a /manifest/application/@android:label
en el archivo AndroidManifest.xml
. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Este será el valor predeterminado en .NET 6.
Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/application/@android:label
.
ApplicationVersion
Propiedad de MSBuild que se puede usar como alternativa a /manifest/@android:versionName
en el archivo AndroidManifest.xml
. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Este será el valor predeterminado en .NET 6.
Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/@android:versionName
.
AotAssemblies
Propiedad booleana que determina si los ensamblados se compilarán por adelantado en código nativo e incluirán en aplicaciones.
De forma predeterminada, esta propiedad es False
.
En desuso en .NET 7. Migre a la nueva $(RunAOTCompilation)
propiedad de MSBuild en su lugar, ya que la compatibilidad $(AotAssemblies)
con se quitará en una versión futura.
AProfUtilExtraOptions
Opciones adicionales que se van a pasar a aprofutil
.
BeforeBuildAndroidAssetPacks
Los destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente antes de compilar los AssetPack
elementos.
Agregado en .NET 9
BeforeGenerateAndroidManifest
Los destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente antes de _GenerateJavaStubs
.
Configuración
Especifica la configuración de compilación que se usará, como "Depuración" o "Versión". La propiedad Configuration se usa para determinar los valores predeterminados de otras propiedades que determinan el comportamiento de destino. Se pueden crear configuraciones adicionales dentro del IDE.
De forma predeterminada, la configuración de Debug
dará lugar a los destinos Install
y SignAndroidPackage
que crean un paquete de Android más pequeño que, para funcionar, requiere la presencia de otros archivos y paquetes.
La configuración predeterminada Release
dará lugar a los destinos Install
y SignAndroidPackage
que crean un paquete de Android que es independiente, y se puede usar sin necesidad de instalar ningún otro paquete o archivo.
DebugSymbols
Valor booleano que determina si el paquete de Android es depurable, en combinación con la propiedad $(DebugType)
.
Un paquete depurable contiene símbolos de depuración, establece el atributo //application/@android:debuggable
en true
y agrega automáticamente el permiso INTERNET
para que el depurador pueda adjuntarlo al proceso. Una aplicación es depurable si DebugSymbols
es True
y DebugType
es la cadena vacía o Full
.
DebugType
Especifica el tipo de símbolos de depuración que se van a generar como parte de la compilación, que también afecta a si la aplicación es depurable. Los valores posibles son:
Full: se generan símbolos completos. Si la propiedad de MSBuild Propiedad de MSBuild
DebugSymbols
es tambiénTrue
, entonces el paquete de aplicación es depurable.PdbOnly: se generan símbolos "PDB". El paquete de aplicación no es depurable.
Si DebugType
no está establecido o es la cadena vacía, la propiedad DebugSymbols
controla si la aplicación es o no depurable.
EmbedAssembliesIntoApk
Propiedad booleana que determina si los ensamblados de la aplicación se deben insertar o no en el paquete de aplicación.
Esta propiedad debe ser True
para compilaciones de versión y False
para compilaciones de depuración. Puede que deba ser True
en las compilaciones de depuración si la implementación rápida no admite el dispositivo de destino.
Cuando esta propiedad es False
, la propiedad de MSBuild $(AndroidFastDeploymentType)
también controla lo que se insertará en el archivo .apk
, lo que puede afectar a los tiempos de implementación y recompilación.
EnableLLVM
Propiedad booleana que determina si se usará o no LLVM al realizar la compilación Ahead Of Time de los ensamblados en código nativo.
El NDK de Android debe estar instalado para compilar un proyecto que tenga esta propiedad habilitada.
De forma predeterminada, esta propiedad es False
.
Esta propiedad se omite a menos que la propiedad de MSBuild $(AotAssemblies)
sea True
.
EnableProguard
Propiedad booleana que determina si se ejecuta o no ProGuard como parte del proceso de empaquetado para vincular código Java.
De forma predeterminada, esta propiedad es False
.
Si es True
, los archivos de @(ProguardConfiguration) se usarán para controlar la ejecución de proguard
.
GenerateApplicationManifest
Habilita o deshabilita las siguientes propiedades de MSBuild que emiten valores en el archivo final AndroidManifest.xml
:
El valor $(GenerateApplicationManifest)
predeterminado es true
.
JavaMaximumHeapSize
Especifica el valor del parámetro de java-Xmx
que se usará al compilar el archivo .dex
como parte del proceso de empaquetado. Si no se especifica, la opción -Xmx
suministra java con un valor de 1G
. Se ha detectado que esto suele ser necesario en Windows en comparación con otras plataformas.
Es necesario especificar esta propiedad si el destino _CompileDex
produce un error java.lang.OutOfMemoryError
.
Personalice el valor cambiando lo siguiente:
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
JavaOptions
Especifica opciones de la línea de comandos que se pasarán a Java al compilar el archivo .dex
.
JarsignerTimestampAuthorityCertificateAlias
Esta propiedad permite especificar un alias en el almacén de claves para una autoridad de marca de tiempo. Para obtener más información, consulte la documentación de compatibilidad con la marca de tiempo de la firma de Java.
<PropertyGroup>
<JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>
JarsignerTimestampAuthorityUrl
Esta propiedad permite especificar una dirección URL para un servicio de autoridad de marca de tiempo. Se puede usar para asegurarse de que la firma de .apk
incluye una marca de tiempo.
Para obtener más información, consulte la documentación de compatibilidad con la marca de tiempo de la firma de Java.
<PropertyGroup>
<JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>
LinkerDumpDependencies
Propiedad booleana que permite la generación del archivo de dependencias del enlazador. Este archivo se puede usar como entrada para la herramienta illinkanalyzer.
El archivo de dependencias denominado linker-dependencies.xml.gz
se escribe en el directorio del proyecto. En. NET5/6 se escribe junto a los ensamblados vinculados en el directorio obj/<Configuration>/android<ABI>/linked
.
El valor predeterminado es Falso.
MandroidI18n
Especifica la compatibilidad con la internacionalización que se incluye con la aplicación, como tablas de intercalación y ordenación. El valor es una lista separada por comas o punto y coma de uno o varios de los siguientes valores sin distinción entre mayúsculas y minúsculas:
None: no incluye codificaciones adicionales.
All: incluye todas las codificaciones disponibles.
CJK: incluye las codificaciones china, japonesa y coreana, como Japonés (EUC) [enc-jp, CP51932], Japonés (Shift-JIS) [iso-2022-jp, shift_jis, CP932], Japonés (JIS) [CP50220], Chino simplificado (GB2312) [gb2312, CP936], Coreano (UHC) [ks_c_5601-1987, CP949], Coreano (EUC) [euc-kr, CP51949], Chino tradicional (Big5) [big5, CP950] y Chino simplificado (GB18030) [GB18030, CP54936].
MidEast: incluye las codificaciones de Oriente Medio como Turco (Windows) [iso-8859-9, CP1254], Hebreo (Windows) [windows-1255, CP1255], Árabe (Windows) [windows-1256, CP1256], Árabe (ISO) [iso-8859-6, CP28596], Hebreo (ISO) [iso-8859-8, CP28598], Latín 5 (ISO) [iso-8859-9, CP28599] y Hebrero (alternativa a ISO) [iso-8859-8, CP38598].
Other: incluye otras codificaciones, como Cirílico (Windows) [CP1251], Báltico (Windows) [iso-8859-4, CP1257], Vienamita (Windows) [CP1258], Cirílico (KOI8-R) [koi8-r, CP1251], Ucraniano (KOI8-U) [koi8-u, CP1251], Báltico (ISO) [iso-8859-4, CP1257], Cirílico (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Asamés [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Malayalam [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011] y Tailandés (Windows) [CP874].
Rare: incluye codificaciones raras como IBM EBCDIC (Turco) [CP1026], IBM EBCDIC (Latín 1, sistemas abiertos) [CP1047], IBM EBCDIC (EE. UU. y Canadá con Euro) [CP1140], IBM EBCDIC (Alemania con Euro) [CP1141], IBM EBCDIC (Dinamarca/Noruega con Euro) [CP1142], IBM EBCDIC (Finlandia/Suecia con Euro) [CP1143], IBM EBCDIC (Italia con Euro) [CP1144], IBM EBCDIC (Latinoamérica/España con Euro) [CP1145], IBM EBCDIC (Reino Unido con Euro) [CP1146], IBM EBCDIC (Francia con Euro) [CP1147], IBM EBCDIC (Internacional con Euro) [CP1148], IBM EBCDIC (Islandés con Euro) [CP1149], IBM EBCDIC (Alemania) [CP20273], IBM EBCDIC (Dinamarca/Noruega) [CP20277], IBM EBCDIC (Finlandia/Suecia) [CP20278], IBM EBCDIC (Italia) [CP20280], IBM EBCDIC (Latinoamérica/España) [CP20284], IBM EBCDIC (Reino Unido) [CP20285], IBM EBCDIC (Katakana japonés extendido) [CP20290], IBM EBCDIC (Francia) [CP20297], IBM EBCDIC (Árabe) [CP20420], IBM EBCDIC (Hebreo) [CP20424], IBM EBCDIC (Islandés) [CP20871], IBM EBCDIC (Cirílico: serbio, búlgaro) [CP21025], IBM EBCDIC (EE. UU. y Canadá) [CP37], IBM EBCDIC (Internacional) [CP500], Árabe (ASMO 708) [CP708], Centroeuropo (DOS) [CP852], Cirílico (DOS) [CP855], Turco (DOS) [CP857], Europeo occidental (DOS con Euro) [CP858], Hebreo (DOS) [CP862], Árabe (DOS) [CP864], Ruso (DOS) [CP866], Griego (DOS) [CP869], IBM EBCDIC (Latín 2) [CP870] y IBM EBCDIC (Griego) [CP875].
West: incluye codificaciones occidentales, como las siguientes: Europeo occidental (Mac) [macintosh, CP10000], Islandés (Mac) [x-mac-icelandic, CP10079], Centroeuropeo (Windows) [iso-8859-2, CP1250], Europeo occidental (Windows) [iso-8859-1, CP1252], Griego (Windows) [iso-8859-7, CP1253], Centroeuropeo (ISO) [iso-8859-2, CP28592], Latín 3 (ISO) [iso-8859-3, CP28593], Griego (ISO) [iso-8859-7, CP28597], Latín 9 (ISO) [iso-8859-15, CP28605], Estados Unidos OEM [CP437], Europeo occidental (DOS) [CP850], Portugués (DOS) [CP860], Islandés (DOS) [CP861], Francés canadiense (DOS) [CP863] y Nórdico (DOS) [CP865].
<MandroidI18n>West</MandroidI18n>
MonoAndroidResourcePrefix
Especifica un prefijo de ruta de acceso que se quita del principio de los nombres de archivo con una acción de compilación de AndroidResource
. Esto permite cambiar la ubicación de los recursos.
El valor predeterminado es Resources
. Cambie este valor a res
con estructuras de proyectos de Java.
MonoSymbolArchive
Propiedad booleana que controla si los artefactos de .mSYM
se crean para usarlos más adelante con mono-symbolicate
, a fin de extraer información “real” de nombre de archivo y número de línea de los seguimientos de la pila de versión.
Este valor es True de forma predeterminada para aplicaciones de “lanzamiento“ que tienen habilitados los símbolos de depuración: $(EmbedAssembliesIntoApk)
es True, $(DebugSymbols)
es True y $(Optimize)
es True.
RunAOTCompilation
Propiedad booleana que determina si los ensamblados se compilarán por adelantado en código nativo e incluirán en aplicaciones.
Esta propiedad es False
de forma predeterminada para Debug
las compilaciones y True
de forma predeterminada para Release
las compilaciones.
Esta propiedad de MSBuild reemplaza la $(AotAssemblies)
propiedad de MSBuild de Xamarin.Android. Es la misma propiedad que se usa para Blazor WASM.