Propiedades de compilación
Las propiedades de MSBuild controlan el comportamiento de los destinos. Se especifican en el archivo de proyecto, por ejemplo MyApp.csproj, dentro de un PropertyGroup de MSBuild.
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 las opciones de línea de comandos que se van a pasar al comando de compilación aapt2 al procesar recursos y recursos de Android.
Se ha agregado en Xamarin.Android 9.1.
AndroidAapt2LinkExtraArgs
Especifica las opciones de línea de comandos que se van a pasar al comando de vínculo aapt2 al procesar recursos y 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 versión.
Esta propiedad se agregó en Xamarin.Android 11.2.
AndroidAotAdditionalArguments
Propiedad de cadena que permite pasar opciones al compilador mono durante la Aot
tarea para los proyectos que tienen $(AndroidEnableProfiledAot)
o $(AotAssemblies)
establecen 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 $(AndroidAotAdditionalArguments)
propiedad 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 --aot
opción 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 punto y coma. 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 release con cualquier forma de AOT habilitado.
Se introdujo en .NET 6.
AndroidApkDigestAlgorithm
Valor de cadena que especifica el algoritmo de síntesis que se va a 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 apksigner
herramienta.
Agregado en Xamarin.Android 8.2.
AndroidApkSigningAlgorithm
Valor de cadena que especifica el algoritmo de firma que se va a 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 comprueba, lo que puede dar lugar a errores sutiles y extraños con 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.
Normalmente, la $(AndroidApplicationJavaClass)
propiedad se establece mediante otras propiedades, como la $(AndroidEnableMultiDex)
propiedad 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 como está.Java
significa que, por ejemplo,InputStreamInvoker
no implementa correctamente laSystem.IO.Stream
API porqueJava.IO.IOException
se puede producir 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 ajusta en un tipo de excepción de .NET adecuado.System
significa que, por ejemplo,InputStreamInvoker
implementaSystem.IO.Stream
correctamente yStream.Read()
no iniciaráJava.IO.IOException
instancias. (En su lugar, puede producir unSystem.IO.IOException
objeto que contiene comoJava.IO.IOException
valorException.InnerException
).System
es el valor predeterminado en .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 IMyInterfaceConsts
clase.
El valor predeterminado está True
en .NET 6 y False
para heredado.
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 está True
en .NET 6 y False
para heredado.
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 está True
en .NET 6 y False
para heredado.
AndroidBuildApplicationPackage
Valor booleano que indica si crear y firmar el paquete (.apk). Establecer este valor en True
es equivalente al uso de . SignAndroidPackage
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 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
.
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 .jar
se analizan los archivos. 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 heredan de o contienen miembros de tipos que no se pueden resolver.
Agregado en Xamarin.Android 6.0.
El valor predeterminado está jar2xml
en "heredado" Xamarin.Android 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 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
Propiedad booleana que determina si se debe crear un conjunto de archivos(uno por ABI especificado en $(AndroidSupportedAbis)
--en lugar de tener compatibilidad con todas las API en un solo .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 a su csproj, se generará el archivo y se usará la AndroidProguardMappingFile
propiedad para controlar la ubicación del archivo de asignación final.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
Al generar .aab
archivos, el archivo de asignación se incluye automáticamente en el paquete. No es necesario cargarlo en Google Play Store manualmente. Al usar .apk
archivos, AndroidProguardMappingFile
deberá cargarse manualmente.
El valor predeterminado es True
cuando se usa $(AndroidLinkTool)
=r8.
Se ha 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
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 $(AndroidDeviceUserId)
propiedad 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 realizando transformaciones de código de bytes, denominadas desugar
, en la salida del javac
compilador. El valor predeterminado es False
si se usa $(AndroidDexTool)=dx
y True
si se usa=$(AndroidDexTool)
d8
.
AndroidEnableGooglePlayStoreChecks
Una propiedad bool que permite a los desarrolladores deshabilitar las siguientes comprobaciones de Google Play Store: XA1004, XA1005 y XA1006. Deshabilitar estas comprobaciones es útil para los desarrolladores que no tienen como destino Google Play Store y no desean ejecutar esas comprobaciones.
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 agrupados en el paquete de aplicación se cargan durante el inicio del proceso o no.
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
.
Las aplicaciones o bibliotecas, que usan la inserción de dependencias, pueden requerir que esta propiedad sea True
si, a su vez, requieren que AppDomain.CurrentDomain.GetAssemblies()
devuelvan todos los ensamblados del conjunto de aplicaciones, incluso si el ensamblado no hubiera sido necesario.
De forma predeterminada, este valor se establecerá True
en para Xamarin.Android y se establecerá en False
para compilaciones de .NET 6+.
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 .@(AndroidAotProfile)
grupo de elementos. 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 al compilador mono durante la Aot
tarea para los proyectos que tienen $(AndroidEnableProfiledAot)
o $(AotAssemblies)
establecen 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 $(AndroidExtraAotOptions)
propiedad es diferente de la propiedad relacionada $(AndroidAotAdditionalArguments)
; $(AndroidAotAdditionalArguments)
coloca argumentos separados por comas en la --aot
opción 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 se implemente rápidamente, menos frecuentemente .apk
es necesario volver a generar y el proceso de instalación puede ser más rápido). Entre los valores válidos se incluyen:
Assemblies
: implementa los ensamblados de aplicación.Dexes
: implemente archivos, bibliotecas nativas y typemaps.dex
. ElDexes
valor 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 bool que permite generar métodos de serialización de 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 desean 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 jnimarshalmethod-gen.exe
invocación 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
.
Se ha agregado en .NET 6 RC 1. 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 acceder a las direcciones URL de TLS 1.2 cuando la versión subyacente de Android admite TLS 1.2. Solo Android 5.0 y versiones posteriores proporcionan compatibilidad confiable con TLS 1.2 a través de Java.Corresponde a la opción Android en las páginas de propiedades de Visual Studio y la opción AndroidClientHandler en 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.
Desencadenar o la cadena vacía, que es equivalente a
System.Net.Http.HttpClientHandler, System.Net.Http
Corresponde a la opción Predeterminada en 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 el administradoHttpMessageHandler
.Corresponde a la opción Administrado en 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 $(AndroidHttpClientHandlerType)
propiedad funciona estableciendo la variable de XA_HTTP_CLIENT_HANDLER_TYPE
entorno.
Valor $XA_HTTP_CLIENT_HANDLER_TYPE
que se encuentra en un archivo con una acción De compilación de @(AndroidEnvironment)
tendrá prioridad.
Agregado en Xamarin.Android 6.1.
AndroidIncludeWrapSh
Valor booleano que indica si el script de contenedor de Android (wrap.sh
) debe empaquetarse en el APK. El valor predeterminado es false
dado que el script contenedor puede influir significativamente en la forma en que la aplicación se inicia y funciona y el script solo debe incluirse cuando sea necesario, por ejemplo, al depurar o cambiar de otro modo el comportamiento de inicio o tiempo de ejecución de la aplicación.
El script se agrega al proyecto con la acción de compilación ,@(AndroidNativeLibrary)
acción de compilación, ya que 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 comentarios de documentación XML de C# "detallados" al importar la documentación de Javadoc en proyectos de enlace.
Requiere el uso de @(JavaSourceJar)
acción de compilación.
La $(AndroidJavadocVerbosity)
propiedad es similar a la enumeración, con valores posibles de full
o intellisense
:
intellisense
: solo emite los comentarios XML:<exception/>
,<param/>
,<returns/>
, .<summary/>
full
: emitaintellisense
elementos, 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.Designer.cs Resource
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 "Release" 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 agregó compatibilidad con esta propiedad 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 bool que permite al desarrollador ejecutar la herramienta android lint
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 desea 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 InstallAndroidDependencies
target para determinar qué paquetes y versiones de paquetes de Android están disponibles y se pueden instalar.
Xamarin
es el repositorio lista aprobada (recomendado) en el Administrador del SDK de Visual Studio.
GoogleV2
es el repositorio lista completa (no compatible) en el Administrador de SDK de Visual Studio.
Se agregó en Xamarin.Android 13.0. En Xamarin.Android 13.0, si $(AndroidManifestType)
no se establece, Xamarin
se usa.
Antes de Xamarin.Android 13.0, la configuración $(AndroidManifestType)
no tiene ningún efecto y GoogleV2
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 a al com.android.multidex.MainDexListBuilder
generar el multidex.keep
archivo.
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 dx
paso 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 desea empaquetar la aplicación Android como un archivo APK o un paquete de aplicaciones de 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 desea empaquetar la aplicación Android como un archivo APK o un paquete de aplicaciones de Android. Los grupos de aplicaciones son un nuevo formato para las compilaciones de Release
que se quieran enviar a Google Play.
Al compilar una compilación de versión, es posible que quiera generar y aab
una apk
para su distribución en varios almacenes.
aab;apk
Si se establece AndroidPackageFormats
en , ambos se generarán. Al establecer AndroidPackageFormats
en o apk
aab
solo se generará un archivo.
Para .net 6 AndroidPackageFormats
solo se establecerá aab;apk
en para Release
compilaciones. Se recomienda seguir usando solo apk
para la depuración.
Para Legacy Xamarin.Android El valor predeterminado es ""
.
Como resultado, Legacy Xamarin.Android NO generará de forma predeterminada ambas como parte de una compilación de versión. Si un usuario quiere generar ambas salidas, deberá definir lo siguiente en su Release
configuración.
<AndroidPackageFormats>aab;apk</AndroidPackageFormats>
También deberá quitar el existente AndroidPackageFormat
para esa configuración si lo tiene.
Se ha 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 desea generar este archivo de asignación, puede usar la AndroidCreateProguardMappingFile
propiedad para dejar de crearlo.
Agregue lo siguiente en el proyecto.
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
o use -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 aplicar 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 las opciones de línea de comandos que se van a pasar al comando aapt al procesar recursos y 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 system
aplicaciones.
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 system
aplicaciones.
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 TLS se debe usar en una aplicación. Los valores posibles son:
Desconjunte o la cadena vacía: en Xamarin.Android 7.3 y versiones posteriores, 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 red. Esto 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 aapt2
herramienta 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 bool que permite al desarrollador usar la apksigner
herramienta 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 .apk
que 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 a su comportamiento anterior a Xamarin.Android 8.2 anterior. 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
Una propiedad de MSBuild que se puede usar como alternativa a /manifest/@android:versionCode
en el AndroidManifest.xml
archivo. 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 $(AndroidCreatePackagePerAbi)
se usan 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 en versionCode
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 mínimo admitido del Sdk de
AndroidManifest.xml
o11
si no se define ninguno.versionCode : usa el código de versión directamente desde
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 que se van a 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
Una propiedad de MSBuild que se puede usar como alternativa a /manifest/@package
en el AndroidManifest.xml
archivo. 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
Una propiedad de MSBuild que se puede usar como alternativa a /manifest/application/@android:label
en el AndroidManifest.xml
archivo. 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
Una propiedad de MSBuild que se puede usar como alternativa a /manifest/@android:versionName
en el AndroidManifest.xml
archivo. 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 Debug
configuración dará lugar a Install
Y SignAndroidPackage
tiene como destino la creación de un paquete Android más pequeño que requiere la presencia de otros archivos y paquetes para funcionar.
La configuración predeterminada Release
dará como resultado la Install
Y SignAndroidPackage
tiene como destino la creación de un paquete de Android independiente y se puede usar sin instalar ningún otro paquete o archivo.
DebugSymbols
Valor booleano que determina si el paquete de Android es depurable, en combinación con la $(DebugType)
propiedad .
Un paquete depurable contiene símbolos de depuración, establece el //application/@android:debuggable
atributotrue
en y agrega automáticamente . INTERNET
permiso para que un depurador pueda asociarse al proceso. Una aplicación es depurable si DebugSymbols
es True
yDebugType
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
DebugSymbols
La propiedad MSBuild tambiénTrue
es y, a continuación, se puede depurar el paquete de aplicación.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
, a continuación, $(AndroidFastDeploymentType)
La propiedad MSBuild también controla lo que se insertará en , lo que puede afectar a los .apk
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 $(GenerateApplicationManifest)
predeterminado es true
en .NET 6 y false
en "heredado" Xamarin.Android.
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 las opciones de línea de comandos que se van a pasar a Java al compilar el .dex
archivo.
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 bool que permite generar el 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 codificaciones chinas, japonesas y coreanas 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 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], latino 5 (ISO) [iso-8859-9, CP28599] y hebreo (alternativa Iso) [iso-8859-8, CP38598].
Otros: incluyen otras codificaciones como cirílico (Windows) [CP1251], Báltico (Windows) [iso-8859-4, CP1257], vietnamita (Windows) [CP1258], cirílico (KOI8-R) [koi8-r, CP1251], ucrania (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 Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, o, 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].
Raro: Incluya codificaciones poco frecuentes como IBM EBCDIC (Turco) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (US-Canada con Euro) [CP1140], IBM EBCDIC (Alemania con Euro) [CP1144]1], IBM EBCDIC (Dinamarca/Noruega con Euro) [CP1142], IBM EBCDIC (Finlandia/Suecia con Euro) [CP1143], IBM EBCDIC (Italia con Euro) [CP1144], IBM EBCDIC (América Latina/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 EBCDICDIC (Alemania) [CP20273], IBM EBCDIC (Dinamarca/Noruega) [CP20277], IBM EBCDIC (Finlandia/Suecia) [CP20278], IBM EBCDIC (Italia) [CP20280], IBM EBCDIC (América Latina/España) [CP20284], IBM EBCDIC (Reino Unido) [CP20285], IBM EBCDIC (japonés Katakana Extended) [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 (US-Canada) [CP37], IBM EBCDIC (Internacional) [CP500], árabe (ASMO 708) [CP708], Centroeuropeo (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 (latino 2) [CP870] e IBM EBCDIC (griego) [CP875].
Oeste: incluye codificaciones occidentales como Europa Occidental (Mac) [macintosh, CP10000], Islandés (Mac) [x-mac-islandés, CP10079], Europa Central (Windows) [iso-8859-2, CP1250], Europa occidental (Windows) [iso-8859-1, CP1252], griego (Windows) [iso-8859-7, CP1253], Centroeuropeo (ISO) [iso-8859-2, CP28592], latino 3 (ISO) [iso-8859-3, CP28593], griego (ISO) [iso-8859-7, CP28597], latino 9 (ISO) [iso-8859-15, CP28605], OEM Estados Unidos [CP437], Europa 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 .mSYM
los artefactos se crean para su uso posterior con mono-symbolicate
, para extraer información de nombre de archivo "real" y número de línea de seguimientos de la pila de versiones.
Esto es True de forma predeterminada para las aplicaciones "Release" que tienen habilitados símbolos de depuración: $(EmbedAssembliesIntoApk)
es True, $(DebugSymbols)
es True y $(Optimize)
es True.
Agregado en Xamarin.Android 7.1.