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.
Se ha agregado en Xamarin.Android 9.4.
AndroidAapt2CompileExtraArgs
Especifica opciones de la línea de comandos que se pasan al comando aapt2 compile al procesar recursos de Android.
Se ha agregado en Xamarin.Android 9.1.
AndroidAapt2LinkExtraArgs
Especifica opciones adicionales de la línea de comandos que se pasan al comando aapt2 link al procesar recursos de Android.
Se ha agregado en Xamarin.Android 9.1.
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.
Esta propiedad se agregó en Xamarin.Android 11.2.
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. Se ha agregado en Xamarin.Android 10.1.
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
. En Xamarin.Android 10.0 y versiones anteriores, el valor predeterminado era SHA1
.
Se ha agregado en Xamarin.Android 9.4.
AndroidApkSignerAdditionalArguments
Propiedad de cadena que permite al desarrollador proporcionar argumentos a la herramienta apksigner
.
Agregado en Xamarin.Android 8.2.
AndroidApkSigningAlgorithm
Valor de cadena que especifica el algoritmo de firma que se usará con jarsigner -sigalg
.
El valor predeterminado es SHA256withRSA
. En Xamarin.Android 10.0 y versiones anteriores, el valor predeterminado era md5withRSA
.
Agregado en Xamarin.Android 8.2.
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.
Agregado en Xamarin.Android 6.1.
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 instalación de Xamarin.Android.
El valor predeterminado es $(MonoAndroidBinDirectory)\binutils\bin\
.
Se ha agregado en Xamarin.Android 10.0.
AndroidBoundExceptionType
Valor de cadena que especifica cómo se deben propagar las excepciones cuando un tipo proporcionado por Xamarin.Android implementa un tipo o una interfaz de .NET en términos de tipos 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
.Java
es el comportamiento de propagación de excepciones en todas las versiones de Xamarin.Android, incluido Xamarin.Android 13.0.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
).System
es el valor predeterminado de .NET 6.0.
Se ha agregado en Xamarin.Android 10.2.
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
en .NET 6 y False
para versiones heredadas.
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.
Después de Xamarin.Android 7.1, se agregó compatibilidad con esta propiedad.
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.
Xamarin.Android configura algunos de estos valores automáticamente, incluida la lista de extensiones de archivo que se deben dejar sin comprimir.
Esta propiedad solo es pertinente si $(AndroidPackageFormat)
está establecido en aab
.
Se ha agregado en Xamarin.Android 10.3.
AndroidBundleToolExtraArgs
Especifica las opciones de línea de comandos que se van a pasar al comando bundletool al compilar agrupaciones de aplicaciones.
Esta propiedad se agregó en Xamarin.Android 11.3.
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: usa
jar2xml.jar
para utilizar la reflexión de Java y extraer tipos y miembros de un archivo.jar
.
Las ventajas de class-parse
sobre jar2xml
son las siguientes:
class-parse
puede extraer nombres de parámetro del código de bytes de Java que contiene símbolos de depuración (código de bytes compilado conjavac -g
).class-parse
no "omite" las clases que se heredan de miembros de tipos que no se pueden resolver o que los contienen.
Agregado en Xamarin.Android 6.0.
El valor predeterminado está jar2xml
en Xamarin.Android "heredado" y class-parse
en .NET 6 y versiones posteriores.
La compatibilidad con jar2xml
está obsoleta y jar2xml
se quita en .NET 6.
AndroidCodegenTarget
Propiedad de cadena que controla la ABI de destino de generación de código. Los valores posibles son:
XamarinAndroid: usa la API de enlace de JNI presente desde Mono para Android 1.0. Los ensamblados de enlace compilados con Xamarin.Android 5.0 o posterior solo se pueden ejecutar en Xamarin.Android 5.0 o posterior (adiciones de API/ABI), pero el origen es compatible con versiones de producto anteriores.
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.
Las ventajas de XAJavaInterop1
son las siguientes:
Ensamblados más pequeños.
Almacenamiento en caché de
jmethodID
para invocaciones de métodobase
, mientras que todos los demás tipos de enlaces de la jerarquía de herencia se compilan conXAJavaInterop1
o versiones posteriores.Almacenamiento en caché de
jmethodID
de los constructores de JCW (Java Callable Wrapper) para subclases administradas.
El valor predeterminado es XAJavaInterop1
.
La compatibilidad con XamarinAndroid
está obsoleta y se quitará la compatibilidad con XamarinAndroid
como parte de .NET 6.
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.
Agregado en Xamarin.Android 12.3.
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
.
Se ha agregado en Xamarin.Android 10.2.
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
.
La propiedad $(AndroidDeviceUserId)
se agregó en Xamarin.Android 11.2.
AndroidDexTool
Propiedad de estilo de la enumeración con los valores válidos de dx
o d8
. Indica el compilador de dex que se usa durante el proceso de compilación de Xamarin.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.
Se ha agregado en Xamarin.Android 9.4.
AndroidEnableMultiDex
Propiedad booleana que determina si se usará la compatibilidad con Multi-Dex en el archivo .apk
final.
En Xamarin.Android 5.1, se agregó compatibilidad con esta propiedad.
De forma predeterminada, esta propiedad es False
.
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.
La precarga de ensamblados es lo que hace Xamarin.Android.
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 se establecerá en True
para Xamarin.Android y se establecerá en False
para compilaciones de .NET 6 y versiones superiores.
Se ha agregado en Xamarin.Android 9.2.
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.
La compatibilidad con esta propiedad se ha agregado en Xamarin.Android 9.4.
De forma predeterminada, esta propiedad es False
.
AndroidEnableSGenConcurrent
Propiedad booleana que determina si se usará el recolector de GC simultáneo de Mono.
Se agregó compatibilidad con esta propiedad en Xamarin.Android 7.2.
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.
En Xamarin.Android 8.1, se agregó compatibilidad con esta propiedad.
De forma predeterminada, esta propiedad es True
.
AndroidExplicitCrunch
Ya no se admite en Xamarin.Android 11.0.
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.
Se ha agregado en Xamarin.Android 10.2.
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. Esta propiedad se agregó en Xamarin.Android 6.1.
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. Se ha agregado en Xamarin.Android 9.2.
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"
Se ha agregado en Xamarin.Android 9.2.
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
.
Agregado en .NET 6 RC 1. Ya no se admite en Xamarin.Android.
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)
.
Los valores más comunes para esta propiedad son los siguientes:
Xamarin.Android.Net.AndroidClientHandler
: use las API de Java de Android para realizar solicitudes de red. El uso de las API de Java permite tener acceso a las direcciones URL TLS 1.2, cuando la versión de Android subyacente admita dicho protocolo. Solo Android 5.0 y versiones posteriores proporcionan compatibilidad confiable con TLS 1.2 a través de Java.Esto corresponde a la opción Android de las páginas de propiedades de Visual Studio y la opción AndroidClientHandler de las páginas de propiedades de Visual Studio para Mac.
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 5.0 (Lollipop) o versiones posteriores en Visual Studio, o bien cuando Plataformas de destino está establecido en Más reciente y más grande en Visual Studio para Mac.
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:
Si la compatibilidad con TLS 1.2 es necesaria en las versiones de Android anteriores a la 5.0, o si se requiere con System.Net.WebClient
y las API relacionadas, se debe usar $(AndroidTlsProvider)
.
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.
Agregado en Xamarin.Android 6.1.
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
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
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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).
Se ha agregado compatibilidad se ha agregado en Xamarin.Android 11.3.
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
.
Agregado en Xamarin.Android 6.1.
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 legacy
. Esto cambiará a manifestmerger.jar
en una versión futura para armonizar el comportamiento con Android Studio.
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.
Se ha introducido en Xamarin.Android 10.2.
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>
Introducido en Xamarin.Android 11.x
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.
Agregado en Xamarin.Android 13.0. En Xamarin.Android 13.0, si $(AndroidManifestType)
no se establece, se usa Xamarin
.
Antes de Xamarin.Android 13.0, la configuración $(AndroidManifestType)
no tiene ningún efecto y se usa GoogleV2
.
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.
Se ha agregado en Xamarin.Android 8.3.
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.
Para .NET 6 AndroidPackageFormats
solo se establecerá en aab;apk
para las compilaciones Release
. Se recomienda seguir usando solo apk
para la depuración.
Para Xamarin.Android heredado, el valor predeterminado es ""
.
Como resultado, Xamarin.Android heredado NO generará de forma predeterminada ambas como parte de una compilación de lanzamiento. Si un usuario quiere generar ambas salidas, deberá definir lo siguiente en su configuración de Release
.
<AndroidPackageFormats>aab;apk</AndroidPackageFormats>
También deberá quitar el AndroidPackageFormat
existente para esa configuración si lo tiene.
Agregado en Xamarin.Android 11.5.
AndroidPackageNamingPolicy
Propiedad de estilo de enumeración para especificar los nombres de paquete de Java del código fuente de Java generado.
En Xamarin.Android 10.2 y versiones posteriores, el único valor admitido es LowercaseCrc64
.
En Xamarin.Android 10.1, también había disponible un valor de LowercaseMD5
transitorio que permitía volver a cambiar al estilo de nombre del paquete Java original, tal y como se usaba en Xamarin.Android 10.0 y versiones anteriores. Esa opción se quitó en Xamarin.Android 10.2 para mejorar la compatibilidad con entornos de compilación que tienen la conformidad con FIPS aplicada.
Se ha agregado en Xamarin.Android 10.1.
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.
Esta propiedad se agregó en Xamarin.Android 11.2.
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.
Se ha agregado en Xamarin.Android 10.3.
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 en la instalación de Xamarin.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 Xamarin.Android proporciona un valor predeterminado en Xamarin.Android.Common.targets
, y el valor predeterminado se puede reemplazar dentro del archivo de proyecto para elegir una versión alternativa de las herramientas de compilación si, por ejemplo, la herramienta aapt más reciente se bloquea mientras se sabe que una versión anterior de aapt funciona.
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).
En Xamarin.Android 10.0 y versiones anteriores, esta propiedad solo admite contraseñas de texto sin formato.
En Xamarin.Android 10.1 y versiones posteriores, 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.
En Xamarin.Android 10.0 y versiones anteriores, esta propiedad solo admite contraseñas de texto sin formato.
En Xamarin.Android 10.1 y versiones posteriores, 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
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
AndroidSigningPlatformCert
Especifica el archivo de certificado que se va a usar para firmar el apk.
Esto solo se usa al compilar aplicaciones system
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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
: requiere Xamarin.Android 5.1 y versiones posteriores.x86_64
: requiere Xamarin.Android 5.1 y versiones posteriores.
AndroidTlsProvider
Valor de cadena que especifica qué proveedor de TLS se debe usar en una aplicación. Los valores posibles son:
Anulación de la cadena vacía: en Xamarin.Android 7.3 y versiones superiores, esto equivale a
btls
.En Xamarin.Android 7.1, esto equivale a
legacy
.Esto corresponde a la configuración Predeterminado de las páginas de propiedades de Visual Studio.
btls
: usa Boring SSL para la comunicación TLS con HttpWebRequest.Esto permite el uso de TLS 1.2 en todas las versiones de Android.
Esto corresponde a la configuración TLS 1.2+ nativo de las páginas de propiedades de Visual Studio.
legacy
: en Xamarin.Android 10.1 y versiones anteriores, use la implementación de SSL administrada histórica para la interacción de la red. No admite TLS 1.2.Esto corresponde a la configuración TLS 1.0 administrado de las páginas de propiedades de Visual Studio.
En Xamarin.Android 10.2 y versiones posteriores, este valor se omite y se usa el valor
btls
.default
: es poco probable que este valor se use en proyectos de Xamarin.Android. El valor recomendado que se usará en su lugar es la cadena vacía, que corresponde a la configuración Default de las páginas de propiedades de Visual Studio.El valor
default
no se ofrece en las páginas de propiedades de Visual Studio.Actualmente, esto equivale a
legacy
.
Agregado en Xamarin.Android 7.1.
AndroidUseAapt2
Propiedad booleana que permite al desarrollador controlar el uso de la herramienta aapt2
para el empaquetado.
De forma predeterminada, será False y Xamarin.Android usará aapt
.
Si el desarrollador quiere usar la nueva función de aapt2
, tiene que agregar:
<AndroidUseAapt2>True</AndroidUseAapt2>
en su archivo .csproj
. También puede proporcionar la propiedad en la línea de comandos:
/p:AndroidUseAapt2=True
Esta propiedad se agregó en Xamarin.Android 8.3. La configuración de AndroidUseAapt2
en false
está en desuso en Xamarin.Android 11.2.
AndroidUseApkSigner
Propiedad booleana que permite al desarrollador usar la herramienta apksigner
en lugar de jarsigner
.
Agregado en Xamarin.Android 8.2.
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
.
Se ha agregado en Xamarin.Android 10.1.
AndroidUseInterpreter
Propiedad booleana que hace que .apk
contenga el intérprete mono y no el JIT normal.
Experimental.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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)
.
Agregado en Xamarin.Android 8.2.
AndroidUseManagedDesignTimeResourceGenerator
Propiedad booleana que cambiará las compilaciones en tiempo de diseño para usar el analizador de recursos administrados en lugar de aapt
.
Agregado en Xamarin.Android 8.1.
AndroidUseSharedRuntime
Propiedad booleana que determina si se requieren los paquetes en tiempo de ejecución compartido para ejecutar la aplicación en el dispositivo de destino. Confiar en los paquetes de entorno de tiempo de ejecución compartido permite que el paquete de aplicación sea más pequeño y acelera el proceso de creación y desarrollo del paquete, lo que da lugar a un ciclo de respuesta de compilación, implementación y depuración más rápido.
Antes de Xamarin.Android 11.2, esta propiedad debía ser True
para las compilaciones de depuración y False
para los proyectos de versión.
Esta propiedad se quitó en Xamarin.Android 11.2.
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
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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
.
Agregado en Xamarin.Android 7.2.
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.
Agregado en Xamarin.Android 7.2.
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
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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
.
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
AotAssemblies
Propiedad booleana que determina si los ensamblados se compilarán en modo Ahead Of Time en código nativo y se incluirán en el archivo .apk
.
En Xamarin.Android 5.1, se agregó compatibilidad con esta propiedad.
De forma predeterminada, esta propiedad es False
.
AProfUtilExtraOptions
Opciones adicionales que se van a pasar a aprofutil
.
BeforeGenerateAndroidManifest
Los destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente antes de _GenerateJavaStubs
.
Se ha agregado en Xamarin.Android 9.4.
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.
En Xamarin.Android 5.1, se agregó compatibilidad con esta propiedad.
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.
En Xamarin.Android 5.1, se agregó compatibilidad con esta propiedad.
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 predeterminado $(GenerateApplicationManifest)
es true
en .NET 6 y false
en Xamarin.Android "heredado".
Se ha agregado compatibilidad con esta propiedad en Xamarin.Android 11.3.
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.
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.
Agregado en Xamarin.Android 7.1.