Compartir a través de


Propiedades de compilación

Las propiedades de MSBuild controlan el comportamiento de los destinos. Se especifican en el archivo del proyecto, por ejemplo, MyApp.csproj, dentro de un elemento MSBuild PropertyGroup.

AdbTarget

La propiedad $(AdbTarget) especifica el dispositivo Android de destino en el que se puede instalar el paquete Android o desde el que se puede quitar. El valor de esta propiedad es el mismo que el de la opción del dispositivo de destino adb.

AfterGenerateAndroidManifest

Destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente después del destino de _GenerateJavaStubs interno, que es donde se generará el archivo AndroidManifest.xml en $(IntermediateOutputPath). Si quiere realizar modificaciones en el archivo AndroidManifest.xml generado, puede hacerlo mediante este punto de extensión.

AndroidAapt2CompileExtraArgs

Especifica opciones de la línea de comandos que se pasan al comando aapt2 compile al procesar recursos de Android.

AndroidAapt2LinkExtraArgs

Especifica opciones adicionales de la línea de comandos que se pasan al comando aapt2 link al procesar recursos de Android.

AndroidAddKeepAlives

Una propiedad booleana que controla si el vinculador insertará GC.KeepAlive() invocaciones dentro de proyectos de enlace para evitar la recolección de objetos prematura.

El valor predeterminado es True para las compilaciones de configuración de lanzamiento.

AndroidAotAdditionalArguments

Propiedad de cadena que permite pasar opciones adicionales al compilador Mono durante la tarea Aot para los proyectos que tienen $(AndroidEnableProfiledAot) o $(AotAssemblies) establecidos en true. El valor de cadena de la propiedad se agrega al archivo de respuesta cuando se llama al compilador cruzado Mono.

En general, esta propiedad debe dejarse en blanco, pero en ciertos escenarios especiales podría proporcionar una flexibilidad útil.

La propiedad $(AndroidAotAdditionalArguments) es diferente de la propiedad relacionada $(AndroidExtraAotOptions); $(AndroidAotAdditionalArguments) pasa opciones independientes completas separadas por espacios como --verbose o --debug al compilador AOT, mientras $(AndroidExtraAotOptions) que contiene argumentos separados por comas que forman parte de la opción --aot del compilador AOT.

AndroidAotCustomProfilePath

Archivo que aprofutil debe crear para contener los datos del generador de perfiles.

AndroidAotProfiles

Propiedad de cadena que permite al desarrollador agregar perfiles de AOT desde la línea de comandos. Es una lista de rutas de acceso absolutas separadas por comas o puntos y comas.

AndroidAotProfilerPort

Puerto al que aprofutil debe conectarse al obtener datos de generación de perfiles.

AndroidAotEnableLazyLoad

Habilite la carga diferida (retrasada) de los ensamblados AOT-d, en lugar de cargarlos previamente en el inicio. El valor predeterminado es True para las compilaciones de lanzamiento con cualquier forma de AOT habilitada.

Introducido en .NET 6

AndroidApkDigestAlgorithm

Valor de cadena que especifica el algoritmo de síntesis del mensaje que se usará con jarsigner -digestalg.

El valor predeterminado es SHA-256.

AndroidApkSignerAdditionalArguments

Propiedad de cadena que permite al desarrollador proporcionar argumentos a la herramienta apksigner.

AndroidApkSigningAlgorithm

Valor de cadena que especifica el algoritmo de firma que se usará con jarsigner -sigalg.

El valor predeterminado es SHA256withRSA.

AndroidApplication

Valor booleano que indica si el proyecto es para una aplicación Android (True) o para un proyecto de la biblioteca de Android (False o no existe).

Solo puede existir un proyecto con <AndroidApplication>True</AndroidApplication> en un paquete de Android. (Desafortunadamente, este requisito no se ha comprobado, lo que puede dar lugar a errores sutiles y extraños respecto a los recursos de Android).

AndroidApplicationJavaClass

Nombre completo de clase de Java que se va a usar en lugar de android.app.Application cuando una clase hereda de Android.App.Application.

La propiedad $(AndroidApplicationJavaClass) se establece generalmente mediante otras propiedades, como la propiedad $(AndroidEnableMultiDex) de MSBuild.

AndroidAvoidEmitForPerformance

Propiedad booleana que determina si se "evita" o no System.Reflection.Emit para mejorar el rendimiento de inicio. De forma predeterminada, esta propiedad es True.

El uso de tiene un impacto notable en el rendimiento de System.Reflection.Emit inicio en Android. Este comportamiento está deshabilitado de forma predeterminada para los siguientes modificadores de características:

  • Switch.System.Reflection.ForceInterpretedInvoke: después de la segunda llamada a MethodInfo.Invoke() o ConstructorInfo.Invoke(), se emite código para mejorar el rendimiento de las llamadas repetidas.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: después de la segunda llamada para recuperar un servicio de un contenedor de inserción de dependencias, se emite código para mejorar el rendimiento de las llamadas repetidas.

Es deseable en la mayoría de las aplicaciones Android deshabilitar este comportamiento.

Consulte la documentación sobre modificadores de características de bibliotecas de clases base para obtener más información sobre los modificadores de características disponibles.

Se ha agregado en .NET 8.

AndroidBinUtilsPath

Ruta de acceso a un directorio que contiene binutils de Android como ld, el enlazador nativo y as, el ensamblador nativo. Estas herramientas se incluyen en la carga de trabajo de .NET para Android.

El valor predeterminado es $(MonoAndroidBinDirectory)\binutils\bin\.

AndroidBoundExceptionType

Valor de cadena que especifica cómo se deben propagar las excepciones cuando un tipo proporcionado por .NET para Android implementa un tipo o interfaz de .NET en términos de tipos de Java, por ejemplo Android.Runtime.InputStreamInvoker , y System.IO.Stream, o Android.Runtime.JavaDictionary y System.Collections.IDictionary.

  • Java: El tipo de excepción de Java original se propaga tal cual.

    Java significa que, por ejemplo, InputStreamInvoker no implementa correctamente la API de System.IO.Stream porque Java.IO.IOException se puede iniciar desde Stream.Read() en lugar de System.IO.IOException.

  • System: El tipo de excepción de Java original se detecta y se encapsula en un tipo de excepción de .NET adecuado.

    System significa que, por ejemplo, InputStreamInvoker implementa correctamente System.IO.Stream y Stream.Read() no iniciará instancias de Java.IO.IOException. (En su lugar, puede iniciar un objeto System.IO.IOException que tenga Java.IO.IOException como el valor de Exception.InnerException).

    El valor predeterminado es System.

AndroidBoundInterfacesContainConstants

Propiedad booleana que determina si se admitirán constantes de enlace en interfaces o se usará la solución alternativa para crear una clase IMyInterfaceConsts.

El valor predeterminado es True.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

Propiedad booleana que indica si se admitirán los miembros predeterminados y estáticos en las interfaces, o una solución alternativa antigua de crear una clase del mismo nivel que contenga miembros estáticos como abstract class MyInterface.

El valor predeterminado es True en .NET 6 y False para versiones heredadas.

AndroidBoundInterfacesContainTypes

Propiedad booleana que indica si se admitirán tipos anidados en interfaces o la solución alternativa de crear un tipo no anidado como IMyInterfaceMyNestedClass.

El valor predeterminado es True en .NET 6 y False para versiones heredadas.

AndroidBuildApplicationPackage

Valor booleano que indica si crear y firmar el paquete (.apk). Establecer este valor en True es equivalente a usar SignAndroidPackage como destino de compilación.

De forma predeterminada, esta propiedad es False.

AndroidBundleConfigurationFile

Especifica un nombre de archivo que se va a usar como archivo de configuración para bundletool al compilar un lote de aplicaciones de Android. Este archivo controla algunos aspectos de cómo se generan APK desde el lote, por ejemplo, en qué dimensiones se divide el lote para generar APK. .NET para Android configura algunas de estas opciones automáticamente, incluida la lista de extensiones de archivo para dejar sin comprimir.

Esta propiedad solo es pertinente si $(AndroidPackageFormat) está establecido en aab.

AndroidBundleToolExtraArgs

Especifica las opciones de línea de comandos que se van a pasar al comando bundletool al compilar agrupaciones de aplicaciones.

AndroidClassParser

Propiedad de cadena que controla cómo se analizan los archivos .jar. Los valores posibles son:

  • class-parse: usa class-parse.exe para analizar el código de bytes directamente, sin ayuda de una JVM.

  • jar2xml: este valor está obsoleto y ya no se admite.

AndroidCodegenTarget

Propiedad de cadena que controla la ABI de destino de generación de código. Los valores posibles son:

  • XamarinAndroid: este valor está obsoleto y ya no se admite.

  • XAJavaInterop1: usa Java.Interop de uso para las invocaciones de JNI. Los ensamblados de enlace que usan XAJavaInterop1 solo se pueden compilar y ejecutar con Xamarin.Android 6.1 o posterior. Xamarin.Android 6.1 y versiones posteriores enlazan Mono.Android.dll con este valor.

El valor predeterminado es XAJavaInterop1.

AndroidCreatePackagePerAbi

Una propiedad booleana que determina si se debe crear un conjunto de archivos, por ABI especificado en $(AndroidSupportedAbis), en lugar de tener compatibilidad con todos los ABI de un solo archivo .apk.

Vea también la guía Compilar APK específicos de ABI.

AndroidCreateProguardMappingFile

Propiedad booleana que controla si se genera un archivo de asignación de proguard como parte del proceso de compilación.

Al agregar lo siguiente al csproj, se generará el archivo y se usará la propiedad AndroidProguardMappingFile para controlar la ubicación del archivo de asignación final.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

Al generar archivos .aab, el archivo de asignación se incluye automáticamente en el paquete. No es necesario cargarlo manualmente en Google Play Store. Al usar .apk archivos, AndroidProguardMappingFile deberá cargarse manualmente.

El valor predeterminado es True cuando se usa $(AndroidLinkTool)=r8.

AndroidDebugKeyAlgorithm

Especifica el algoritmo predeterminado que se usará para debug.keystore. El valor predeterminado es RSA.

AndroidDebugKeyValidity

Especifica la validez predeterminada que se usará para debug.keystore. El valor predeterminado es 10950 o 30 * 365 o 30 years.

AndroidDebugStoreType

Especifica el formato de archivo de almacén de claves que se va a usar para debug.keystore. Se establece de forma predeterminada en pkcs12.

AndroidDeviceUserId

Permite implementar y depurar la aplicación en cuentas de invitado o de trabajo. El valor es el valor uid que se obtiene del comando adb siguiente:

adb shell pm list users

El comando anterior devolverá los datos siguientes:

Users:
	UserInfo{0:Owner:c13} running
	UserInfo{10:Guest:404}

El objeto uid es el primer valor entero. En la salida anterior, son 0 y 10.

AndroidDexTool

Propiedad de estilo de la enumeración con los valores válidos de dx o d8. Indica qué compilador dex de Android se usa durante el proceso de compilación de .NET para Android. El valor predeterminado es dx. Consulte nuestra documentación sobre D8 y R8.

AndroidEnableDesugar

Propiedad booleana que determina si desugar está habilitado. Android no admite actualmente todas las características de Java 8 y la cadena de herramientas predeterminada implementa las nuevas características de lenguaje ejecutando transformaciones de código de bytes, llamadas desugar, en la salida del compilador javac. El valor predeterminado es False si se usa $(AndroidDexTool)=dx y True si se usa$(AndroidDexTool)=d8.

AndroidEnableGooglePlayStoreChecks

Propiedad booleana que permite a los desarrolladores deshabilitar las siguientes comprobaciones de Google Play Store: XA1004, XA1005 and XA1006. Deshabilitar estas comprobaciones resulta útil para los desarrolladores que no tienen como destino Google Play Store y que no quieren ejecutar las comprobaciones mencionadas.

AndroidEnableMarshalMethods

Una propiedad bool, que determina si se habilitan o no los métodos de serialización de LLVM. Los métodos de serialización de LLVM son una optimización de inicio de la aplicación que usa puntos de entrada nativos para el registro de métodos de Java native .

Esta propiedad es False de forma predeterminada.

Se ha agregado en .NET 8.

AndroidEnableMultiDex

Propiedad booleana que determina si se usará la compatibilidad con Multi-Dex en el archivo .apk final.

De forma predeterminada, esta propiedad es False.

AndroidEnableObsoleteOverrideInheritance

Propiedad booleana que determina si los métodos enlazados heredan [Obsolete] automáticamente los atributos de los métodos que invalidan.

Se ha agregado compatibilidad con esta propiedad en .NET 8.

De forma predeterminada, esta propiedad es True.

AndroidEnablePreloadAssemblies

Propiedad booleana que controla si todos los ensamblados administrados que se incluyen en el paquete de aplicación se cargan o no durante el inicio del proceso.

Cuando se establece en True, todos los ensamblados que se incluyen en el paquete de aplicación se cargan durante el inicio del proceso, antes de que se invoque cualquier código de aplicación.

Cuando se establece en False, los ensamblados solo se cargan cuando es necesario. La carga de ensamblados según sea necesario permite que las aplicaciones se inicien más rápido y también es más coherente con la semántica de .NET de escritorio. Para ver los ahorros de tiempo, establezca la propiedad del sistema debug.mono.log en timing y busque el mensaje Finished loading assemblies: preloaded en adb logcat.

Puede que las aplicaciones o bibliotecas que usan inserción de dependencias necesiten que esta propiedad se establezca en True si estas requieren a su vez que AppDomain.CurrentDomain.GetAssemblies() devuelva todos los ensamblados del conjunto de aplicación, incluso si el ensamblado no hubiera sido necesario.

De forma predeterminada, este valor es False.

AndroidEnableProfiledAot

Propiedad booleana que determina si los perfiles de AOT se usarán o no durante la compilación Ahead Of Time.

Los perfiles se muestran en el grupo de elementos .Grupo de elementos @(AndroidAotProfile). Este ItemGroup contiene perfiles predeterminados. Se puede reemplazar quitando los perfiles de AOT existentes y agregando los suyos.

De forma predeterminada, esta propiedad es False.

AndroidEnableRestrictToAttributes

Propiedad de estilo de enumeración con valores válidos de obsolete y disable.

Cuando se establece obsoleteen , los tipos y los miembros marcados con la anotación androidx.annotation.RestrictTo de Java o que están en paquetes de Java no exportados se marcarán con un [Obsolete] atributo en el enlace de C#.

Este [Obsolete] atributo tiene un mensaje descriptivo que explica que el propietario del paquete de Java considera que la API es "interna" y advierte sobre su uso.

Este atributo también tiene un código XAOBS001 de advertencia personalizado para que se pueda suprimir independientemente de la API obsoleta "normal".

Cuando se establece disableen , la API se generará como normal sin atributos adicionales. (Este es el mismo comportamiento que antes de .NET 8).

La adición [Obsolete] de atributos en lugar de quitar automáticamente la API se ha realizado para conservar la compatibilidad de api con los paquetes existentes. Si prefiere quitar miembros que tienen la @RestrictTo anotación o están en paquetes java no exportados, puede usar Transformar archivos además de esta propiedad para evitar que estos tipos se enlacen:

<remove-node path="//*[@annotated-visibility]" />

Se ha agregado compatibilidad con esta propiedad en .NET 8.

Esta propiedad se establece obsolete en de forma predeterminada.

AndroidEnableSGenConcurrent

Propiedad booleana que determina si se usará el recolector de GC simultáneo de Mono.

De forma predeterminada, esta propiedad es False.

AndroidErrorOnCustomJavaObject

Propiedad booleana que determina si los tipos pueden implementar Android.Runtime.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.

De forma predeterminada, esta propiedad es True.

AndroidExplicitCrunch

Esta propiedad ya no se admite.

AndroidExtraAotOptions

Propiedad de cadena que permite pasar opciones adicionales al compilador Mono durante la tarea Aot para los proyectos que tienen $(AndroidEnableProfiledAot) o $(AotAssemblies) establecidos en true. El valor de cadena de la propiedad se agrega al archivo de respuesta cuando se llama al compilador cruzado Mono.

En general, esta propiedad debe dejarse en blanco, pero en ciertos escenarios especiales podría proporcionar una flexibilidad útil.

La propiedad $(AndroidExtraAotOptions) es diferente de la propiedad relacionada $(AndroidAotAdditionalArguments); $(AndroidAotAdditionalArguments) coloca argumentos separados por comas en la opción --aot del compilador Mono. $(AndroidExtraAotOptions) pasa en su lugar opciones completas separadas por espacios independientes como --verbose o --debug al compilador.

AndroidFastDeploymentType

Lista de valores separada por : (dos puntos) para controlar qué tipos se pueden implementar en el directorio de implementación rápida del dispositivo de destino cuando la propiedad de MSBuild $(EmbedAssembliesIntoApk) es False. Si un recurso se implementa rápido, no se inserta en el archivo .apk generado, lo que puede acelerar los tiempos de desarrollo. (Cuanto más rápido se implementa, con menos frecuencia es necesario recompilar el archivo .apk, y el proceso de instalación puede ser más rápido). Los valores válidos son:

  • Assemblies: implementa los ensamblados de aplicación.
  • Dexes: implemente archivos, bibliotecas nativas y typemaps .dex. El valorDexes solo se puede usar en dispositivos que ejecutan Android 4.4 o posterior (API-19).

El valor predeterminado es Assemblies.

La compatibilidad con la implementación rápida de recursos a través de ese sistema se quitó en la confirmación f0d565fe. Esto se debe a que requería el uso de la API en desuso para trabajar.

Experimental.

AndroidFragmentType

Especifica el tipo completo predeterminado que se usará para todos los elementos de diseño de <fragment> al generar el código de los enlaces de diseño. El valor predeterminado es el tipo de Android Android.App.Fragment estándar.

AndroidGenerateJniMarshalMethods

Propiedad booleana que permite la generación de métodos de serialización JNI como parte del proceso de compilación. Reduce en gran medida el uso de System.Reflection en el código de aplicación asistente de enlace.

El valor predeterminado es False. Si los desarrolladores quieren usar la nueva característica de métodos de serialización JNI, pueden establecer

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

en su archivo .csproj. Especifique también la propiedad en la línea de comandos mediante

-p:AndroidGenerateJniMarshalMethods=True

Experimental. El valor predeterminado es False.

AndroidGenerateJniMarshalMethodsAdditionalArguments

Propiedad de cadena que se puede usar para agregar parámetros a la invocación jnimarshalmethod-gen.exe y es útil para la depuración, de modo que se puedan usar opciones como -v, -d o --keeptemp.

El valor predeterminado es una cadena vacía. Se puede establecer en el archivo .csproj o en la línea de comandos. Por ejemplo:

<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>

O bien

-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"

AndroidGenerateLayoutBindings

Permite la generación de código subyacente de diseño si se establece en true o lo deshabilita por completo si se establece en false.

El valor predeterminado es false.

AndroidGenerateResourceDesigner

El valor predeterminado es true. Cuando se establece en false, deshabilita la generación de Resource.designer.cs.

AndroidHttpClientHandlerType

Controla la implementación de System.Net.Http.HttpMessageHandler predeterminada que se va a utilizar mediante el constructor predeterminado System.Net.Http.HttpClient. El valor es un nombre calificado con el ensamblado de una subclase HttpMessageHandler, adecuada para usarse con System.Type.GetType(string).

En .NET 6 y versiones posteriores, esta propiedad solo tiene efecto cuando se usa junto con $(UseNativeHttpHandler)=true. Los valores más comunes para esta propiedad son los siguientes:

  • Xamarin.Android.Net.AndroidMessageHandler: use las API de Java de Android para realizar solicitudes HTTP. Es similar al heredado Xamarin.Android.Net.AndroidClientHandler con varias mejoras. Admite HTTP 1.1 y TLS 1.2. Es el controlador de mensajes HTTP predeterminado.

  • System.Net.Http.SocketsHttpHandler, System.Net.Http: controlador de mensajes predeterminado en .NET. Admite HTTP/2, TLS 1.2 y es el controlador de mensajes HTTP recomendado para usar con Grpc.Net.Client. Este valor es equivalente a $(UseNativeHttpHandler)=false.

  • Anulación de la cadena vacía, que es equivalente a System.Net.Http.HttpClientHandler, System.Net.Http

    Se corresponde a la opción Predeterminado de las páginas de propiedades de Visual Studio.

    El asistente para nuevo proyecto selecciona esta opción para los nuevos proyectos cuando la versión de Android mínima está configurada en Android 4.4.87 o versiones anteriores en Visual Studio, o bien cuando la opción Plataformas de destino está establecida en Desarrollo moderno o Compatibilidad máxima en Visual Studio para Mac.

  • System.Net.Http.HttpClientHandler, System.Net.Http: use el HttpMessageHandler administrado.

    Se corresponde a la opción Administrado de las páginas de propiedades de Visual Studio.

Nota:

En .NET 6, el tipo que especifique no debe ser Xamarin.Android.Net.AndroidClientHandler o System.Net.Http.HttpClientHandler heredar de cualquiera de estas clases. Si va a migrar desde "clásico" Xamarin.Android, use AndroidMessageHandler o derive su controlador personalizado en su lugar.

Nota:

La compatibilidad con la propiedad $(AndroidHttpClientHandlerType) funciona estableciendo la variable de entorno XA_HTTP_CLIENT_HANDLER_TYPE . Un valor $XA_HTTP_CLIENT_HANDLER_TYPE encontrado en un archivo con una acción de compilación de @(AndroidEnvironment) tendrá prioridad.

AndroidIncludeWrapSh

Un valor booleano que indica si el script del contenedor de Android (wrap.sh) se debe empaquetar en el APK. El valor predeterminado es false porque el script de contenedor puede influir significativamente en la forma en que la aplicación se inicia y funciona, y el script debe incluirse solo cuando sea necesario, por ejemplo, al depurar o cambiar el comportamiento de inicio o entorno de ejecución de la aplicación.

El script se agrega al proyecto con la acción de compilación ,La acción de compilación @(AndroidNativeLibrary), porque se coloca en el mismo directorio que las bibliotecas nativas específicas de la arquitectura y se debe denominar wrap.sh.

La forma más fácil de especificar la ruta de acceso al script wrap.sh es colocarla en un directorio con el nombre de la arquitectura de destino. Este enfoque funcionará si se tiene tan solo un objeto wrap.sh por arquitectura:

<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />

Sin embargo, si el proyecto necesita más de un objeto wrap.sh por arquitectura para distintos propósitos, este enfoque no funcionará. En su lugar, en estos casos el nombre se puede especificar con los metadatos Link de AndroidNativeLibrary:

<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
  <Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>

Si se usan los metadatos Link, la ruta de acceso especificada en su valor debe ser una ruta de acceso de biblioteca específica de la arquitectura nativa válida, relativa al directorio raíz APK. El formato de la ruta de acceso es lib\ARCH\wrap.sh donde ARCH puede ser uno de los siguientes:

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

AndroidIncludeAssetPacksInPackage

Esta propiedad controla si una compilación de Asset Packs se incluye automáticamente en el archivo final .aab . El valor predeterminado truees .

En determinados casos, es posible que el usuario quiera liberar una versión provisional. En estos casos, el usuario no necesita actualizar el paquete de recursos. Especialmente si el contenido del paquete de recursos no ha cambiado. Esta propiedad permite al usuario omitir los paquetes de recursos si no son necesarios.

Agregado en .NET 9

AndroidInstallJavaDependencies

El valor predeterminado es true para las compilaciones de la línea de comandos. Cuando se establece en true, habilita la instalación del SDK de Java al ejecutar el <InstallAndroidDependencies/> destino.

Se ha agregado compatibilidad con esta propiedad en .NET 9.

AndroidJavadocVerbosity

Especifica cómo deben ser los comentarios de documentación XML de C# "detallados" al importar la documentación de Javadoc en proyectos de enlace.

Requiere el uso de Acción de compilación @(JavaSourceJar).

La propiedad $(AndroidJavadocVerbosity) es similar a la enumeración, con valores posibles de full o intellisense:

El valor predeterminado es intellisense.

AndroidKeyStore

Valor booleano que indica si se debe usar información de firma personalizada. El valor predeterminado es False, lo que significa que se usará la clave de firma de depuración predeterminada para firmar paquetes.

AndroidLaunchActivity

Actividad de Android que se va a iniciar.

AndroidLinkMode

Especifica qué tipo de vinculación debe realizarse en los ensamblados contenidos dentro del paquete de Android. Solo se usa en proyectos de aplicación de Android. El valor predeterminado es SdkOnly. Los valores válidos son:

  • None: no se intenta la vinculación.

  • SdkOnly: la vinculación se realizará solo en las bibliotecas de clase base, no en los ensamblados del usuario.

  • Full: la vinculación se realizará en las bibliotecas de clase base y en los ensamblados del usuario.

    Nota:

    El uso de un valor para AndroidLinkMode de Full da lugar con frecuencia a aplicaciones interrumpidas, en especial cuando se usa la reflexión. Evítelo a menos que sepa realmente lo que está haciendo.

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

Cuando true, el sistema de compilación vinculará los tipos anidados de la clase Resource de Resource.Designer.cs en todos los ensamblados. El código IL que usa esos tipos se actualizará para usar los valores directamente en lugar de acceder a los campos.

La vinculación de los tipos anidados puede tener un pequeño impacto en la reducción del tamaño del apk y también puede ayudar con el rendimiento de inicio. Solo las compilaciones de "lanzamiento" están vinculadas.

Experimental. Solo diseñado para trabajar con código como

var view = FindViewById(Resources.Ids.foo);

No se admitirán otros escenarios (como la reflexión).

AndroidLinkSkip

Especifica una lista de nombres de ensamblado delimitada por punto y coma (;), sin extensiones de archivos, que no se deben vincular. Solo se usa dentro de proyectos de aplicaciones Android.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

Propiedad de estilo de la enumeración con los valores válidos de proguard o r8. Indica el reductor de código que se usa con el código Java. El valor predeterminado es una cadena vacía o proguard si $(AndroidEnableProguard) es True. Consulte nuestra documentación sobre D8 y R8.

AndroidLintEnabled

Propiedad booleana que permite que el desarrollador ejecute la herramienta lint de Android como parte del proceso de empaquetado.

Cuando $(AndroidLintEnabled)=True, se usan las propiedades siguientes:

También se pueden usar las acciones de compilación siguientes:

Consulte la Ayuda de Lint para obtener más información sobre las herramientas lint de Android.

AndroidLintEnabledIssues

Propiedad de cadena que es una lista separada por comas de problemas de Lint que se van a habilitar.

Solo se usa cuando $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

Propiedad de cadena que es una lista separada por comas de problemas de Lint que se van a deshabilitar.

Solo se usa cuando $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

Propiedad de cadena que es una lista separada por comas de problemas de Lint que se van a comprobar.

Solo se usa cuando $(AndroidLintEnabled)=True.

Nota: Solo se comprobarán estos problemas.

AndroidManagedSymbols

Propiedad booleana que controla si se generan puntos de secuencia para que la información de nombre de archivo y número de línea se pueda extraer de los seguimientos de la pila de Release.

AndroidManifest

Especifica un nombre de archivo para usar como plantilla para el archivo AndroidManifest.xml de la aplicación. Durante la compilación, cualquier otro valor necesario se combina para producir el archivo AndroidManifest.xml real. $(AndroidManifest) debe contener el nombre de paquete en el atributo /manifest/@package.

AndroidManifestMerger

Especifica la implementación para combinar archivos de AndroidManifest.xml. Se trata de una propiedad de estilo de enumeración donde legacy selecciona la implementación original de C# y manifestmerger.jar selecciona la implementación de Java de Google.

El valor predeterminado es actualmente manifestmerger.jar. Si desea usar la versión anterior, agregue lo siguiente a csproj.

<AndroidManifestMerger>legacy</AndroidManifestMerger>

La fusión de Google permite la compatibilidad con xmlns:tools="http://schemas.android.com/tools" tal y como se describe en la documentación de Android.

AndroidManifestMergerExtraArgs

Propiedad de cadena para proporcionar argumentos a la herramienta de documentación de Android.

Si quiere obtener una salida detallada de la herramienta, puede agregar lo siguiente a .csproj.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

Propiedad de estilo de la enumeración con los valores válidos de Xamarin o GoogleV2. Controla qué repositorio usa el destino InstallAndroidDependencies para determinar qué paquetes y versiones de paquetes de Android están disponibles y se pueden instalar.

Xamarin es el repositorio de la lista aprobada (recomendado) en el Administrador de SDK de Visual Studio.

GoogleV2 es el repositorio de la lista completa (no compatible) en el Administrador de SDK de Visual Studio.

Si $(AndroidManifestType) no se establece, Xamarin se usa.

AndroidManifestPlaceholders

Lista separada por punto y coma de pares de reemplazo clave-valor para AndroidManifest.xml, donde los pares tienen el formato key=value.

Por ejemplo, un valor de propiedad de assemblyName=$(AssemblyName) define un marcador de posición de ${assemblyName} que puede aparecer en AndroidManifest.xml:

<application android:label="${assemblyName}"

Esto proporciona un método para insertar variables del proceso de compilación en el archivo AndroidManifest.xml.

AndroidMultiDexClassListExtraArgs

Propiedad de cadena que permite a los desarrolladores pasar argumentos adicionales a com.android.multidex.MainDexListBuilder al generar el archivo multidex.keep.

Un caso específico es si se obtiene el siguiente error durante la compilación de dx.

com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded

Si recibe este error, puede agregar lo siguiente al elemento .csproj.

<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>

que permitirá que el paso dx se realice correctamente.

AndroidPackageFormat

Propiedad de estilo de la enumeración con los valores válidos de apk o aab. Indica si quiere empaquetar la aplicación Android como un archivo APK o un paquete de aplicaciones Android. Los grupos de aplicaciones son un nuevo formato para las compilaciones de Release que se quieran enviar a Google Play. El valor predeterminado es apk.

Si $(AndroidPackageFormat) se establece en aab, se establecen otras propiedades de MSBuild necesarias para los lotes de aplicaciones de Android:

Esta propiedad quedará en desuso para .NET 6. Los usuarios deben cambiar a la versión más reciente AndroidPackageFormats.

AndroidPackageFormats

Propiedad delimitada por punto y coma con valores válidos de apk y aab. Indica si quiere empaquetar la aplicación Android como un archivo APK o un paquete de aplicaciones Android. Los grupos de aplicaciones son un nuevo formato para las compilaciones de Release que se quieran enviar a Google Play.

Al crear una compilación de lanzamiento, es posible que quiera generar aab y un apk para su distribución en varios almacenes.

Si se establece AndroidPackageFormats en aab;apk, ambos se generarán. Al establecer AndroidPackageFormats en aab o apk, solo se generará un archivo.

El valor predeterminado es aab;apk solo para Release las compilaciones. Se recomienda seguir usando solo apk para la depuración.

AndroidPackageNamingPolicy

Propiedad de estilo de enumeración para especificar los nombres de paquete de Java del código fuente de Java generado.

El único valor admitido es LowercaseCrc64.

AndroidProguardMappingFile

Especifica la regla de ProGuard -printmapping para r8. Esto significa que el archivo mapping.txt se generará en la carpeta $(OutputPath). Este archivo se puede usar para cargar paquetes en Google Play Store.

De forma predeterminada, este archivo se genera automáticamente al usar AndroidLinkTool=r8 y generará el siguiente archivo $(OutputPath)mapping.txt.

Si no quiere generar este archivo de asignación, puede usar la propiedad AndroidCreateProguardMappingFile para dejar de crearlo. Agregue lo siguiente en el proyecto

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

o utilice -p:AndroidCreateProguardMappingFile=False en la línea de comandos.

AndroidD8IgnoreWarnings

Especifica --map-diagnostics warning info que se va a pasar a d8. El valor predeterminado es True, pero se puede establecer en False para exigir un comportamiento más estricto. Consulte el código fuente D8 y R8 para obtener más información.

Se ha agregado en .NET 8.

AndroidR8IgnoreWarnings

Especifica la regla de ProGuard -ignorewarnings para r8. Esto permite a r8 continuar con la compilación dex aunque se encuentren ciertas advertencias. El valor predeterminado es True, pero se puede establecer en False para exigir un comportamiento más estricto. Para obtener más información, consulte elmanual de ProGuard.

A partir de .NET 8, especifica --map-diagnostics warning info. Consulte el código fuente D8 y R8 para obtener más información.

AndroidR8JarPath

Ruta de acceso a r8.jar para su uso con el compilador y reductor de dex de r8. El valor predeterminado es una ruta de acceso a la instalación de la carga de trabajo de .NET para Android. Para obtener más información, vea la documentación sobre D8 y R8.

AndroidResgenExtraArgs

Especifica opciones adicionales de la línea de comandos que se van a pasar al comando aapt al procesar recursos de Android.

AndroidResgenFile

Especifica el nombre del archivo de recursos que se va a generar. La plantilla predeterminada establece esta propiedad en Resource.designer.cs.

AndroidSdkBuildToolsVersion

El paquete de herramientas de compilación de Android SDK proporciona, entre otras, las herramientas aapt y zipalign. Se pueden instalar varias versiones diferentes del paquete de herramientas de compilación al mismo tiempo. Para realizar el paquete de herramientas de compilación elegido para empaquetar, se comprueba y usa una versión de herramientas de compilación "preferida", si existe; en caso contrario, se usa el paquete de herramientas de compilación instalado con la versión más alta.

La propiedad de MSBuild $(AndroidSdkBuildToolsVersion) contiene la versión de herramientas de compilación preferida. El sistema de compilación de .NET para Android proporciona un valor predeterminado en Xamarin.Android.Common.targetsy el valor predeterminado se puede invalidar dentro del archivo de proyecto para elegir una versión alternativa de las herramientas de compilación, si (por ejemplo) el aapt más reciente se bloquea mientras se sabe que funciona una versión anterior de aapt.

AndroidSigningKeyAlias

Especifica el alias de la clave en el almacén de claves. Es el valor de keytool -alias usado al crear el almacén de claves.

AndroidSigningKeyPass

Especifica la contraseña de la clave en el archivo de almacén de claves. Este es el valor especificado cuando keytool pide que se escriba la contraseña de clave para $(AndroidSigningKeyAlias).

Esta propiedad también admite los prefijos env: y file: que se pueden usar para especificar una variable de entorno o un archivo que contiene la contraseña. Estas opciones proporcionan una manera de evitar que la contraseña aparezca en los registros de compilación.

Por ejemplo, para usar una variable de entorno denominada AndroidSigningPassword:

<PropertyGroup>
  <AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>

Para usar un archivo ubicado en C:\Users\user1\AndroidSigningPassword.txt:

<PropertyGroup>
  <AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>

Nota:

El prefijo env: no se admite cuando $(AndroidPackageFormat) está establecido en aab.

AndroidSigningKeyStore

Especifica el nombre del archivo del almacén de claves que crea keytool. Corresponde al valor proporcionado a la opción keytool - keystore.

AndroidSigningStorePass

Especifica la contraseña en $(AndroidSigningKeyStore). Es el valor proporcionado a keytool al crear el archivo de almacén de claves y cuando se pide que se escriba la contraseña del almacén de claves.

Esta propiedad también admite los prefijos env: y file: que se pueden usar para especificar una variable de entorno o un archivo que contiene la contraseña. Estas opciones proporcionan una manera de evitar que la contraseña aparezca en los registros de compilación.

Por ejemplo, para usar una variable de entorno denominada AndroidSigningPassword:

<PropertyGroup>
  <AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>

Para usar un archivo ubicado en C:\Users\user1\AndroidSigningPassword.txt:

<PropertyGroup>
  <AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>

Nota:

El prefijo env: no se admite cuando $(AndroidPackageFormat) está establecido en aab.

AndroidSigningPlatformKey

Especifica el archivo de clave que se va a usar para firmar el apk. Esto solo se usa al compilar aplicaciones system.

AndroidSigningPlatformCert

Especifica el archivo de certificado que se va a usar para firmar el apk. Esto solo se usa al compilar aplicaciones system.

AndroidStripILAfterAOT

Propiedad bool que especifica si se quitarán o no los cuerpos de método de los métodos compilados de AOT.

El valor predeterminado es falsey los cuerpos de método de los métodos compilados de AOT no se quitarán.

Cuando se establece en true, $(AndroidEnableProfiledAot) se establece false en de forma predeterminada. Esto significa que, en las compilaciones de configuración de versión, en la que $(RunAOTCompilation) está true habilitada de forma predeterminada, AOT está habilitada para todo. Esto puede dar lugar a un aumento de los tamaños de la aplicación. Este comportamiento se puede invalidar estableciendo explícitamente $(AndroidEnableProfiledAot) true en dentro del archivo del proyecto.

Se ha agregado compatibilidad con esta propiedad en .NET 8.

AndroidSupportedAbis

Propiedad de cadena que contiene una lista delimitada por punto y coma (;) de ABI que se deberían incluir en el archivo .apk.

Los valores admitidos son:

  • armeabi-v7a
  • x86
  • arm64-v8a
  • x86_64

AndroidTlsProvider

Esta propiedad está obsoleta y no debe usarse.

AndroidUseAapt2

Propiedad booleana que permite al desarrollador controlar el uso de la herramienta aapt2 para el empaquetado. De forma predeterminada, será True.

Esta propiedad no se puede establecer en false.

AndroidUseApkSigner

Propiedad booleana que permite al desarrollador usar la herramienta apksigner en lugar de jarsigner.

AndroidUseDefaultAotProfile

Propiedad bool que permite al desarrollador suprimir el uso de los perfiles de AOT predeterminados.

Para suprimir los perfiles de AOT predeterminados, establezca la propiedad en false.

AndroidUseDesignerAssembly

Una propiedad bool que controla si el sistema de compilación generará como _Microsoft.Android.Resource.Designer.dll una aplicación en un Resource.Designer.cs archivo. Las ventajas de esto son aplicaciones más pequeñas y un tiempo de inicio más rápido.

El valor predeterminado está true en .NET 8.

Como autor de Nuget, se recomienda enviar tres versiones del ensamblado si desea mantener la compatibilidad con versiones anteriores. Uno para MonoAndroid, uno para net6.0-android y otro para net8.0-android. Para ello, use Xamarin.Legacy.Sdk. Esto solo es necesario si el proyecto de biblioteca de Nuget usa elementos del proyecto o a través de AndroidResource una dependencia.

<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>

Como alternativa, desactive esta configuración hasta que haya quedado en desuso tanto clásico como net7.0-android.

Los proyectos de .NET 8 que elijan desactivar esta configuración no podrán consumir referencias que lo usen. Si intenta usar un ensamblado que tiene esta característica habilitada en un proyecto que no lo hace, recibirá un XA1034 error de compilación.

Se ha agregado en .NET 8.

AndroidUseInterpreter

Propiedad booleana que hace que .apk contenga el intérprete mono y no el JIT normal.

Experimental.

AndroidUseLegacyVersionCode

Propiedad booleana que permite al desarrollador revertir el cálculo de versionCode al comportamiento anterior de Xamarin.Android 8.2. SOLO debe usarse para los desarrolladores con aplicaciones en Google Play Store. Se recomienda encarecidamente utilizar la nueva propiedad $(AndroidVersionCodePattern).

AndroidUseManagedDesignTimeResourceGenerator

Propiedad booleana que cambiará las compilaciones en tiempo de diseño para usar el analizador de recursos administrados en lugar de aapt.

AndroidUseNegotiateAuthentication

Propiedad booleana que permite la compatibilidad con la autenticación NTLMv2/Negotiate en AndroidMessageHandler. El valor predeterminado es Falso.

Se ha agregado en .NET 7.

AndroidUseSharedRuntime

Esta propiedad está obsoleta y no debe usarse.

AndroidVersionCode

Propiedad de MSBuild que se puede usar como alternativa a /manifest/@android:versionCode en el archivo AndroidManifest.xml. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>. Este será el valor predeterminado en .NET 6.

Esta propiedad se omite si se usan $(AndroidCreatePackagePerAbi) y $(AndroidVersionCodePattern).

@android:versionCode es un valor entero que se debe incrementar para cada versión de Google Play. Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/@android:versionCode.

AndroidVersionCodePattern

Propiedad de cadena que permite al desarrollador personalizar versionCode en el manifiesto. Consulte Crear el código de la versión para el APK para más información sobre cómo decidir el valor de versionCode.

Algunos ejemplos: si abi es armeabi y versionCode en el manifiesto es 123, {abi}{versionCode} producirá un código de versión de 1123 cuando $(AndroidCreatePackagePerAbi) sea True; de lo contrario, producirá un valor de 123. Si abi es x86_64 y versionCode en el manifiesto es 44, se generará 544 cuando $(AndroidCreatePackagePerAbi) sea True; de lo contrario, se producirá un valor de 44.

Si se incluye una cadena con formato de relleno a la izquierda, {abi}{versionCode:0000}, produciría 50044 porque estamos rellenando a la izquierda versionCode con 0. Como alternativa, puede usar el relleno decimal, como ,{abi}{versionCode:D4} que hace lo mismo que el ejemplo anterior.

Solo se admiten cadenas con formato de relleno "0" y "Dx", dado que el valor DEBE ser un entero.

Elementos de clave predefinidos

  • abi: inserta la ABI de destino para la aplicación.

    • 2: armeabi-v7a
    • 3: x86
    • 4: arm64-v8a
    • 5: x86_64
  • minSDK: inserta el valor de SDK mínimo admitido del archivo AndroidManifest.xml o 11 si no se define ninguno.

  • versionCode: usa el código de versión directamente de Properties\AndroidManifest.xml.

Puede definir elementos personalizados con la propiedad $(AndroidVersionCodeProperties), que se define a continuación.

De forma predeterminada, el valor se establece en {abi}{versionCode:D6}. Si un programador quiere mantener el comportamiento anterior, se puede reemplazar el valor predeterminado mediante el establecimiento de la propiedad $(AndroidUseLegacyVersionCode) en true.

AndroidVersionCodeProperties

Propiedad de cadena que permite al desarrollador definir elementos personalizados para usar con $(AndroidVersionCodePattern). Tienen el formato de un par key=value. Todos los elementos de value deben ser valores enteros. Por ejemplo: screen=23;target=$(_AndroidApiLevel). Como puede ver, pueden hacer uso de propiedades de MSBuild existentes o personalizadas en la cadena.

ApplicationId

Propiedad de MSBuild que se puede usar como alternativa a /manifest/@package en el archivo AndroidManifest.xml. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>. Este será el valor predeterminado en .NET 6.

Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/@package.

ApplicationTitle

Propiedad de MSBuild que se puede usar como alternativa a /manifest/application/@android:label en el archivo AndroidManifest.xml. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>. Este será el valor predeterminado en .NET 6.

Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/application/@android:label.

ApplicationVersion

Propiedad de MSBuild que se puede usar como alternativa a /manifest/@android:versionName en el archivo AndroidManifest.xml. Para participar en esta característica, también debe habilitar <GenerateApplicationManifest>true</GenerateApplicationManifest>. Este será el valor predeterminado en .NET 6.

Consulte la documentación de Android para obtener más información sobre los requisitos de /manifest/@android:versionName.

AotAssemblies

Propiedad booleana que determina si los ensamblados se compilarán por adelantado en código nativo e incluirán en aplicaciones. De forma predeterminada, esta propiedad es False.

En desuso en .NET 7. Migre a la nueva $(RunAOTCompilation) propiedad de MSBuild en su lugar, ya que la compatibilidad $(AotAssemblies) con se quitará en una versión futura.

AProfUtilExtraOptions

Opciones adicionales que se van a pasar a aprofutil.

BeforeBuildAndroidAssetPacks

Los destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente antes de compilar los AssetPack elementos.

Agregado en .NET 9

BeforeGenerateAndroidManifest

Los destinos de MSBuild enumerados en esta propiedad se ejecutarán directamente antes de _GenerateJavaStubs.

Configuración

Especifica la configuración de compilación que se usará, como "Depuración" o "Versión". La propiedad Configuration se usa para determinar los valores predeterminados de otras propiedades que determinan el comportamiento de destino. Se pueden crear configuraciones adicionales dentro del IDE.

De forma predeterminada, la configuración de Debug dará lugar a los destinos Install y SignAndroidPackage que crean un paquete de Android más pequeño que, para funcionar, requiere la presencia de otros archivos y paquetes.

La configuración predeterminada Release dará lugar a los destinos Install y SignAndroidPackage que crean un paquete de Android que es independiente, y se puede usar sin necesidad de instalar ningún otro paquete o archivo.

DebugSymbols

Valor booleano que determina si el paquete de Android es depurable, en combinación con la propiedad $(DebugType). Un paquete depurable contiene símbolos de depuración, establece el atributo //application/@android:debuggable en true y agrega automáticamente el permiso INTERNET para que el depurador pueda adjuntarlo al proceso. Una aplicación es depurable si DebugSymbols es True y DebugType es la cadena vacía o Full.

DebugType

Especifica el tipo de símbolos de depuración que se van a generar como parte de la compilación, que también afecta a si la aplicación es depurable. Los valores posibles son:

  • Full: se generan símbolos completos. Si la propiedad de MSBuild Propiedad de MSBuild DebugSymbols es también True, entonces el paquete de aplicación es depurable.

  • PdbOnly: se generan símbolos "PDB". El paquete de aplicación no es depurable.

Si DebugType no está establecido o es la cadena vacía, la propiedad DebugSymbols controla si la aplicación es o no depurable.

EmbedAssembliesIntoApk

Propiedad booleana que determina si los ensamblados de la aplicación se deben insertar o no en el paquete de aplicación.

Esta propiedad debe ser True para compilaciones de versión y False para compilaciones de depuración. Puede que deba ser True en las compilaciones de depuración si la implementación rápida no admite el dispositivo de destino.

Cuando esta propiedad es False, la propiedad de MSBuild $(AndroidFastDeploymentType) también controla lo que se insertará en el archivo .apk, lo que puede afectar a los tiempos de implementación y recompilación.

EnableLLVM

Propiedad booleana que determina si se usará o no LLVM al realizar la compilación Ahead Of Time de los ensamblados en código nativo.

El NDK de Android debe estar instalado para compilar un proyecto que tenga esta propiedad habilitada.

De forma predeterminada, esta propiedad es False.

Esta propiedad se omite a menos que la propiedad de MSBuild $(AotAssemblies) sea True.

EnableProguard

Propiedad booleana que determina si se ejecuta o no ProGuard como parte del proceso de empaquetado para vincular código Java.

De forma predeterminada, esta propiedad es False.

Si es True, los archivos de @(ProguardConfiguration) se usarán para controlar la ejecución de proguard.

GenerateApplicationManifest

Habilita o deshabilita las siguientes propiedades de MSBuild que emiten valores en el archivo final AndroidManifest.xml:

El valor $(GenerateApplicationManifest) predeterminado es true.

JavaMaximumHeapSize

Especifica el valor del parámetro de java-Xmx que se usará al compilar el archivo .dex como parte del proceso de empaquetado. Si no se especifica, la opción -Xmx suministra java con un valor de 1G. Se ha detectado que esto suele ser necesario en Windows en comparación con otras plataformas.

Es necesario especificar esta propiedad si el destino _CompileDex produce un error java.lang.OutOfMemoryError.

Personalice el valor cambiando lo siguiente:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

Especifica opciones de la línea de comandos que se pasarán a Java al compilar el archivo .dex.

JarsignerTimestampAuthorityCertificateAlias

Esta propiedad permite especificar un alias en el almacén de claves para una autoridad de marca de tiempo. Para obtener más información, consulte la documentación de compatibilidad con la marca de tiempo de la firma de Java.

<PropertyGroup>
    <JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>

JarsignerTimestampAuthorityUrl

Esta propiedad permite especificar una dirección URL para un servicio de autoridad de marca de tiempo. Se puede usar para asegurarse de que la firma de .apk incluye una marca de tiempo. Para obtener más información, consulte la documentación de compatibilidad con la marca de tiempo de la firma de Java.

<PropertyGroup>
    <JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>

LinkerDumpDependencies

Propiedad booleana que permite la generación del archivo de dependencias del enlazador. Este archivo se puede usar como entrada para la herramienta illinkanalyzer.

El archivo de dependencias denominado linker-dependencies.xml.gz se escribe en el directorio del proyecto. En. NET5/6 se escribe junto a los ensamblados vinculados en el directorio obj/<Configuration>/android<ABI>/linked.

El valor predeterminado es Falso.

MandroidI18n

Especifica la compatibilidad con la internacionalización que se incluye con la aplicación, como tablas de intercalación y ordenación. El valor es una lista separada por comas o punto y coma de uno o varios de los siguientes valores sin distinción entre mayúsculas y minúsculas:

  • None: no incluye codificaciones adicionales.

  • All: incluye todas las codificaciones disponibles.

  • CJK: incluye las codificaciones china, japonesa y coreana, como Japonés (EUC) [enc-jp, CP51932], Japonés (Shift-JIS) [iso-2022-jp, shift_jis, CP932], Japonés (JIS) [CP50220], Chino simplificado (GB2312) [gb2312, CP936], Coreano (UHC) [ks_c_5601-1987, CP949], Coreano (EUC) [euc-kr, CP51949], Chino tradicional (Big5) [big5, CP950] y Chino simplificado (GB18030) [GB18030, CP54936].

  • MidEast: incluye las codificaciones de Oriente Medio como Turco (Windows) [iso-8859-9, CP1254], Hebreo (Windows) [windows-1255, CP1255], Árabe (Windows) [windows-1256, CP1256], Árabe (ISO) [iso-8859-6, CP28596], Hebreo (ISO) [iso-8859-8, CP28598], Latín 5 (ISO) [iso-8859-9, CP28599] y Hebrero (alternativa a ISO) [iso-8859-8, CP38598].

  • Other: incluye otras codificaciones, como Cirílico (Windows) [CP1251], Báltico (Windows) [iso-8859-4, CP1257], Vienamita (Windows) [CP1258], Cirílico (KOI8-R) [koi8-r, CP1251], Ucraniano (KOI8-U) [koi8-u, CP1251], Báltico (ISO) [iso-8859-4, CP1257], Cirílico (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Asamés [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Malayalam [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011] y Tailandés (Windows) [CP874].

  • Rare: incluye codificaciones raras como IBM EBCDIC (Turco) [CP1026], IBM EBCDIC (Latín 1, sistemas abiertos) [CP1047], IBM EBCDIC (EE. UU. y Canadá con Euro) [CP1140], IBM EBCDIC (Alemania con Euro) [CP1141], IBM EBCDIC (Dinamarca/Noruega con Euro) [CP1142], IBM EBCDIC (Finlandia/Suecia con Euro) [CP1143], IBM EBCDIC (Italia con Euro) [CP1144], IBM EBCDIC (Latinoamérica/España con Euro) [CP1145], IBM EBCDIC (Reino Unido con Euro) [CP1146], IBM EBCDIC (Francia con Euro) [CP1147], IBM EBCDIC (Internacional con Euro) [CP1148], IBM EBCDIC (Islandés con Euro) [CP1149], IBM EBCDIC (Alemania) [CP20273], IBM EBCDIC (Dinamarca/Noruega) [CP20277], IBM EBCDIC (Finlandia/Suecia) [CP20278], IBM EBCDIC (Italia) [CP20280], IBM EBCDIC (Latinoamérica/España) [CP20284], IBM EBCDIC (Reino Unido) [CP20285], IBM EBCDIC (Katakana japonés extendido) [CP20290], IBM EBCDIC (Francia) [CP20297], IBM EBCDIC (Árabe) [CP20420], IBM EBCDIC (Hebreo) [CP20424], IBM EBCDIC (Islandés) [CP20871], IBM EBCDIC (Cirílico: serbio, búlgaro) [CP21025], IBM EBCDIC (EE. UU. y Canadá) [CP37], IBM EBCDIC (Internacional) [CP500], Árabe (ASMO 708) [CP708], Centroeuropo (DOS) [CP852], Cirílico (DOS) [CP855], Turco (DOS) [CP857], Europeo occidental (DOS con Euro) [CP858], Hebreo (DOS) [CP862], Árabe (DOS) [CP864], Ruso (DOS) [CP866], Griego (DOS) [CP869], IBM EBCDIC (Latín 2) [CP870] y IBM EBCDIC (Griego) [CP875].

  • West: incluye codificaciones occidentales, como las siguientes: Europeo occidental (Mac) [macintosh, CP10000], Islandés (Mac) [x-mac-icelandic, CP10079], Centroeuropeo (Windows) [iso-8859-2, CP1250], Europeo occidental (Windows) [iso-8859-1, CP1252], Griego (Windows) [iso-8859-7, CP1253], Centroeuropeo (ISO) [iso-8859-2, CP28592], Latín 3 (ISO) [iso-8859-3, CP28593], Griego (ISO) [iso-8859-7, CP28597], Latín 9 (ISO) [iso-8859-15, CP28605], Estados Unidos OEM [CP437], Europeo occidental (DOS) [CP850], Portugués (DOS) [CP860], Islandés (DOS) [CP861], Francés canadiense (DOS) [CP863] y Nórdico (DOS) [CP865].

<MandroidI18n>West</MandroidI18n>

MonoAndroidResourcePrefix

Especifica un prefijo de ruta de acceso que se quita del principio de los nombres de archivo con una acción de compilación de AndroidResource. Esto permite cambiar la ubicación de los recursos.

El valor predeterminado es Resources. Cambie este valor a res con estructuras de proyectos de Java.

MonoSymbolArchive

Propiedad booleana que controla si los artefactos de .mSYM se crean para usarlos más adelante con mono-symbolicate, a fin de extraer información “real” de nombre de archivo y número de línea de los seguimientos de la pila de versión.

Este valor es True de forma predeterminada para aplicaciones de “lanzamiento“ que tienen habilitados los símbolos de depuración: $(EmbedAssembliesIntoApk) es True, $(DebugSymbols) es True y $(Optimize) es True.

RunAOTCompilation

Propiedad booleana que determina si los ensamblados se compilarán por adelantado en código nativo e incluirán en aplicaciones. Esta propiedad es False de forma predeterminada para Debug las compilaciones y True de forma predeterminada para Release las compilaciones.

Esta propiedad de MSBuild reemplaza la $(AotAssemblies) propiedad de MSBuild de Xamarin.Android. Es la misma propiedad que se usa para Blazor WASM.