Compartir a través de


Elementos de compilación

Los elementos de compilación controlan el modo en que se compila un proyecto de biblioteca o de aplicación de Xamarin.Android.

AndroidAsset

Admite recursos de Android, archivos que se incluirán en la carpeta assets en un proyecto de Java Android.

AndroidAarLibrary

La acción de compilación de AndroidAarLibrary se debe utilizar para hacer referencia directamente a los archivos .aar. Esta acción de compilación la utilizan normalmente componentes de Xamarin. Es decir, para incluir referencias a archivos .aar que son necesarios para que funcionen Google Play y otros servicios.

Los archivos con esta acción de compilación se tratarán de un modo bastante similar a los recursos incrustados en proyectos de biblioteca. El archivo .aar se extrae en el directorio intermedio. Después, los recursos y los archivos .jar se incluirán en los grupos de elementos pertinentes.

AndroidAotProfile

Se usa para proporcionar un perfil de AOT, para su uso con el AOT guiado por perfiles.

También se puede usar desde Visual Studio estableciendo la acción de compilación AndroidAotProfile en un archivo que contenga un perfil de AOT.

AndroidAppBundleMetaDataFile

Especifica un archivo que se incluirá como metadatos en el lote de aplicaciones de Android. El formato del valor de la marca es <bundle-path>:<physical-file>, donde bundle-path denota la ubicación del archivo dentro del directorio de metadatos del lote de aplicaciones y physical-file es un archivo existente que contiene los datos sin procesar que se van a almacenar.

<ItemGroup>
  <AndroidAppBundleMetaDataFile
    Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
  />
</ItemGroup>

Consulte la documentación de bundletool para obtener más detalles.

Se ha agregado en Xamarin.Android 12.3.

AndroidBoundLayout

Indica que el archivo de diseño debe tener código subyacente generado en caso de que la propiedad AndroidGenerateLayoutBindings se establezca en false. En todos los demás aspectos es idéntica a AndroidResource, descrito anteriormente. Esta acción solo se puede usar con archivos de diseño:

<AndroidBoundLayout Include="Resources\layout\Main.axml" />

AndroidEnvironment

Los archivos con una acción de compilación de AndroidEnvironment se usan para inicializar variables de entorno y propiedades del sistema durante el inicio del proceso. La acción de compilación AndroidEnvironment se puede aplicar a varios archivos, y estos se evalúan sin ningún orden determinado (así que no especifique la misma variable de entorno o propiedad de sistema en varios archivos).

AndroidJavaLibrary

Los archivos con una acción de compilación de AndroidJavaLibrary son archivos de Java (archivos .jar) que se incluirán en el paquete final de Android.

AndroidJavaSource

Los archivos con una acción de compilación de AndroidJavaSource son el código fuente de Java que se incluirá en el paquete final de Android.

A partir de .NET 7, todos los archivos **\*.java del directorio del proyecto tienen automáticamente una acción de compilación de AndroidJavaSource, y se enlazarán antes de la compilación del ensamblado. Permite que el código de C# use con facilidad los tipos y miembros presentes en los archivos **\*.java.

Establezca %(AndroidJavaSource.Bind) en False para deshabilitar este comportamiento.

AndroidLibrary

AndroidLibrary es una nueva acción de compilación para simplificar cómo se incluyen los archivos .jar y .aar en los proyectos.

En cualquier proyecto se puede especificar:

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />
  <AndroidLibrary Include="bar.aar" />
</ItemGroup>

El resultado del fragmento de código anterior tiene un efecto diferente para cada tipo de proyecto de Xamarin.Android:

Esta simplificación significa que puede usar AndroidLibrary en cualquier lugar.

Esta acción de compilación se agregó en Xamarin.Android 11.2.

AndroidLintConfig

La acción de compilación "AndroidLintConfig" se debe usar con la propiedad de compilación .Propiedad $(AndroidLintEnabled). Los archivos con esta acción de compilación se combinan y se pasan a las herramientas lint de Android. Deben ser archivos XML que contengan información sobre qué pruebas deben habilitarse o deshabilitarse.

Vea la documentación de lint para obtener más información.

AndroidManifestOverlay

Se puede usar la acción de compilación AndroidManifestOverlay para proporcionar archivos AndroidManifest.xml a la herramienta de fusión de manifiestos. Los archivos con esta acción de compilación se pasarán a la herramienta de fusión de manifiestos junto con el archivo AndroidManifest.xml principal y los archivos de manifiesto de las referencias. Después, se combinarán en el manifiesto final.

Puede usar esta acción de compilación para proporcionar cambios y configuraciones a la aplicación en función de la configuración de compilación. Por ejemplo, si necesita tener un permiso concreto solo durante la depuración, puede utilizar la superposición para insertar ese permiso durante la depuración. Por ejemplo, dado el siguiente contenido de archivo de superposición:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.CAMERA" />
</manifest>

Puede usar lo siguiente para agregar una superposición de manifiesto a una compilación de depuración:

<ItemGroup>
  <AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>

Esta acción de compilación se agregó en Xamarin.Android 11.2.

AndroidInstallModules

Especifica los módulos que se instalan mediante el comando bundletool al instalar lotes de aplicaciones.

Esta acción de compilación se agregó en Xamarin.Android 11.3.

AndroidNativeLibrary

Las bibliotecas nativas se agregan a la compilación mediante el establecimiento de su acción de compilación en AndroidNativeLibrary.

Tenga en cuenta que, puesto que Android admite varias interfaces binarias de aplicación (ABI), el sistema de compilación debe saber para qué ABI se ha compilado la biblioteca nativa. Hay dos formas de especificar una ABI:

  1. Examinando la ruta de acceso.
  2. Mediante los metadatos del elemento %(Abi).

Con el examen de la ruta de acceso, el nombre del directorio principal de la biblioteca nativa se utiliza para especificar la ABI a la que se dirige la biblioteca. Por lo tanto, si agrega lib/armeabi-v7a/libfoo.so a la compilación, la ABI se examina como armeabi-v7a.

Nombre del atributo de elemento

Abi: especifica la ABI de la biblioteca nativa.

<ItemGroup>
  <AndroidNativeLibrary Include="path/to/libfoo.so">
    <Abi>armeabi-v7a</Abi>
  </AndroidNativeLibrary>
</ItemGroup>

AndroidResource

Todos los archivos con una acción de compilación de AndroidResource se compilan en recursos de Android durante el proceso de compilación y se vuelven accesibles mediante $(AndroidResgenFile).

<ItemGroup>
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>

Quizás los usuarios más avanzados deseen que recursos diferentes se usen en distintas configuraciones, pero con la misma ruta de acceso efectiva. Para lograr esto, se pueden tener varios directorios de recursos y tener archivos con las mismas rutas de acceso relativas dentro de estos diferentes directorios, y usar condiciones de MSBuild para incluir condicionalmente diferentes archivos en diferentes configuraciones. Por ejemplo:

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup  Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
  <MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>

LogicalName: especifica la ruta de acceso a los recursos de forma explícita. Permite la creación de alias de archivos para que estén disponibles como varios nombres de recursos distintos.

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug/values/strings.xml">
    <LogicalName>values/strings.xml</LogicalName>
  </AndroidResource>
</ItemGroup>

AndroidResourceAnalysisConfig

La acción de compilación AndroidResourceAnalysisConfig marca un archivo como un archivo de configuración de nivel de gravedad para la herramienta de diagnóstico de diseño de Xamarin Android Designer. Actualmente solo se usa en el editor de diseño y no en los mensajes de compilación.

Para más información, consulte la documentación de análisis de recursos de Android.

Se ha agregado en Xamarin.Android 10.2.

Contenido

La acción de compilación Content no se admite (dado que no hemos descubierto cómo admitirla sin un paso seguramente costoso de primera ejecución).

A partir de Xamarin.Android 5.1, si se intenta usar la acción de compilación @(Content) se producirá una advertencia XA0101.

EmbeddedJar

En un proyecto de enlace de Xamarin.Android, la acción de compilación EmbeddedJar enlaza la biblioteca Java/Kotlin e inserta el archivo .jar en la biblioteca. Cuando un proyecto de la aplicación Xamarin.Android consume la biblioteca, tendrá acceso a las API de Java/Kotlin desde C# e incluirá el código de Java/Kotlin en la aplicación Android final.

Desde Xamarin. Android 11.2, se puede usar la acción de compilación AndroidLibrary como alternativa, tal como:

<Project>
  <ItemGroup>
    <AndroidLibrary Include="Library.jar" />
  </ItemGroup>
</Project>

EmbeddedNativeLibrary

En un proyecto de biblioteca de clases de Xamarin.Android o de enlace de Java, la acción de compilación EmbeddedNativeLibrary agrupa una biblioteca nativa como lib/armeabi-v7a/libfoo.so en la biblioteca. Cuando una aplicación de Xamarin.Android consume la biblioteca, el archivo libfoo.so se incluirá en la aplicación de Android final.

Desde Xamarin. Android 11.2, se puede usar la acción de compilación AndroidNativeLibrary como alternativa, por ejemplo.

EmbeddedReferenceJar

En un proyecto de enlace de Xamarin.Android, la acción de compilación EmbeddedReferenceJar inserta el archivo .jar en la biblioteca, pero no crea un enlace de C# como hace EmbeddedJar. Cuando un proyecto de aplicación de Xamarin.Android consume la biblioteca, incluirá el código Java/Kotlin en la aplicación de Android final.

Desde Xamarin.Android 11.2, se puede usar la acción de compilación AndroidLibrary como alternativa, tal como <AndroidLibrary Include="..." Bind="false" />:

<Project>
  <ItemGroup>
    <!-- A .jar file to bind & embed -->
    <AndroidLibrary Include="Library.jar" />
    <!-- A .jar file to only embed -->
    <AndroidLibrary Include="Dependency.jar" Bind="false" />
  </ItemGroup>
</Project>

JavaDocJar

En un proyecto de enlace de Xamarin.Android, se usa la acción de compilación JavaDocJar en archivos .jar que contienen HTML de Javadoc. Se analiza el código HTML de Javadoc para extraer los nombres de parámetro.

Solo se admiten ciertos "dialectos HTML de Javadoc", entre los que se incluyen:

  • Salida de JDK 1.7 javadoc.
  • Salida de JDK 1.8 javadoc.
  • Salida de Droiddoc.

Esta acción de compilación queda en desuso en Xamarin.Android 11.3 y no se admitirá en .NET 6. Se prefiere la acción de compilación @(JavaSourceJar).

JavaSourceJar

En un proyecto de enlace de Xamarin.Android, la acción de compilación JavaSourceJar se usa en archivos .jar que contienen código fuente de Java, que incluyen comentarios de documentación de Javadoc.

Antes de Xamarin.Android 11.3, el Javadoc se convertía en HTML a través de la utilidad javadoc durante el tiempo de compilación y, posteriormente, se convertía en documentación XML.

A partir de Xamarin.Android 11.3, Javadoc se convertirá en comentarios de documentación XML de C# dentro del código fuente de enlace generado.

$(AndroidJavadocVerbosity) controla hasta qué punto es "detallado" o "completo" el Javadoc importado.

A partir de Xamarin.Android 11.3, se admiten los siguientes metadatos de MSBuild:

  • %(CopyrightFile): ruta de acceso a un archivo que contiene información de copyright para el contenido de Javadoc, que se anexará a toda la documentación importada.

  • %(UrlPrefix): prefijo de dirección URL para admitir la vinculación a documentación en línea dentro de la documentación importada.

  • %(UrlStyle): el "estilo" de las direcciones URL que se generarán al vincular a la documentación en línea. Actualmente, solo se admite un estilo: developer.android.com/reference@2020-Nov.

A partir de Xamarin.Android 12.3, se admiten los siguientes metadatos de MSBuild:

  • %(DocRootUrl): prefijo de dirección URL que se va a usar en lugar de todas las instancias de {@docroot} en la documentación importada.

LibraryProjectZip

En un proyecto de enlace de Xamarin.Android, la acción de compilación LibraryProjectZip enlaza la biblioteca Java/Kotlin e inserta el archivo .zip o .aar en la biblioteca. Cuando un proyecto de la aplicación Xamarin.Android consume la biblioteca, tendrá acceso a las API de Java/Kotlin desde C# e incluirá el código de Java/Kotlin en la aplicación Android final.

Nota:

Solo se puede incluir una sola acción LibraryProjectZip en un proyecto de enlace de Xamarin.Android. Esta limitación se quitará en .NET 6.

LinkDescription

Los archivos con una acción de compilación LinkDescription se usan para controlan el comportamiento del enlazador.

ProguardConfiguration

Los archivos con una acción de compilación ProguardConfiguration contienen opciones que se usan para controlar el comportamiento de proguard. Para más información sobre esta acción de compilación, consulte ProGuard.

Estos archivos se omiten a menos que la propiedad de MSBuild la propiedad $(EnableProguard) de MSBuild sea True.