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 la System.IO.Stream API porque Java.IO.IOException se puede producir desde Stream.Read() en lugar de System.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.

    Systemsignifica que, por ejemplo, InputStreamInvoker implementa System.IO.Streamcorrectamente y Stream.Read() no iniciará Java.IO.IOException instancias. (En su lugar, puede producir un System.IO.IOException objeto que contiene como Java.IO.IOException valor Exception.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 con javac -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 enlazan Mono.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étodo base, mientras que todos los demás tipos de enlaces de la jerarquía de herencia se compilan con XAJavaInterop1 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 * 36530 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.IJavaObjectsin 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. El Dexes 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, -do --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 administrado HttpMessageHandler.

    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:

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.

Xamarines el repositorio lista aprobada (recomendado) en el Administrador del SDK de Visual Studio.

GoogleV2es 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:

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 apkaab 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
  • minSDK : inserta el valor mínimo admitido del Sdk de AndroidManifest.xml o 11 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 SignAndroidPackagetiene 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 atributotrueen y agrega automáticamente . INTERNET permiso para que un depurador pueda asociarse al proceso. Una aplicación es depurable si DebugSymbols es TrueyDebugType 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én Truees 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 .apktiempos 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.