Compilar itens

Os itens de build controlam como um projeto de biblioteca ou aplicativo Xamarin.Android é criado.

AndroidAsset

Dá suporte a Ativos Android, arquivos que seriam incluídos na assets pasta em um projeto Java Android.

AndroidAarLibrary

A ação Compilar de AndroidAarLibrary deve ser usada para referenciar .aar arquivos diretamente. Essa ação do build será mais usada pelos componentes do Xamarin. Ou seja, para incluir referências a .aar arquivos necessários para que o Google Play e outros serviços funcionem.

Os arquivos com essa ação Compilar serão tratados de maneira semelhante aos recursos inseridos encontrados em projetos de biblioteca. O .aar será extraído para o diretório intermediário. Em seguida, todos os ativos, recursos e .jar arquivos serão incluídos nos grupos de itens apropriados.

AndroidAotProfile

Usado para fornecer um perfil AOT, para uso com AOT guiado por perfil.

Ele também pode ser usado no Visual Studio definindo a ação AndroidAotProfile de build para um arquivo que contém um perfil AOT.

AndroidAppBundleMetaDataFile

Especifica um arquivo que será incluído como metadados no Pacote de Aplicativos Android. O formato do valor do sinalizador é <bundle-path>:<physical-file> onde bundle-path indica o local do arquivo dentro do diretório de metadados do Pacote de Aplicativos e physical-file é um arquivo existente que contém os dados brutos a serem armazenados.

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

Confira a documentação do bundletool para obter mais detalhes.

Adicionado no Xamarin.Android 12.3.

AndroidBoundLayout

Indica que o code-behind deverá ser gerado para o arquivo de layout quando a propriedade AndroidGenerateLayoutBindings estiver definida como false. Em todos os outros aspectos, ela é idêntica à AndroidResource descrita acima. Essa ação pode ser usada apenas com arquivos de layout:

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

AndroidEnvironment

Arquivos com uma ação de build AndroidEnvironment são usados para inicializar variáveis de ambiente e propriedades do sistema durante a inicialização do processo. A ação de build AndroidEnvironment pode ser aplicada a vários arquivos, e eles serão avaliados sem nenhuma ordem específica (então não especifique a mesma propriedade de sistema ou variável de ambiente em vários arquivos).

AndroidJavaLibrary

Arquivos com uma ação build de AndroidJavaLibrary são Arquivos Java ( .jar arquivos) que serão incluídos no pacote final do Android.

AndroidJavaSource

Arquivos com uma ação Build de AndroidJavaSource são código-fonte Java que serão incluídos no pacote final do Android.

A partir do .NET 7, todos os **\*.java arquivos no diretório do projeto têm automaticamente uma ação build de AndroidJavaSourcee serão associados antes do build do Assembly. Permite que o código C# use facilmente tipos e membros presentes nos **\*.java arquivos.

Defina %(AndroidJavaSource.Bind) como False para desabilitar esse comportamento.

AndroidLibrary

AndroidLibrary é uma nova ação de build para simplificar como .jar os arquivos e .aar são incluídos em projetos.

Qualquer projeto pode especificar:

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

O resultado do snippet de código acima tem um efeito diferente para cada tipo de projeto Xamarin.Android:

Essa simplificação significa que você pode usar AndroidLibrary em todos os lugares.

Essa ação de build foi adicionada no Xamarin.Android 11.2.

AndroidLintConfig

A ação de build 'AndroidLintConfig' deve ser usada em conjunto com oPropriedade $(AndroidLintEnabled). Os arquivos com essa ação de build serão mesclados e passados para as ferramentas lint do Android. Eles devem ser arquivos XML que contêm informações sobre testes para habilitar e desabilitar.

Confira a documentação do lint para obter mais detalhes.

AndroidManifestOverlay

A AndroidManifestOverlay ação de build pode ser usada para fornecer AndroidManifest.xml arquivos à ferramenta Fusão de Manifestos . Os arquivos com essa ação de build serão passados para a Fusão de Manifesto junto com o arquivo de main AndroidManifest.xml e arquivos de manifesto de referências. Em seguida, eles serão mesclados no manifesto final.

Você pode usar essa ação de build para fornecer alterações e configurações ao seu aplicativo, dependendo da configuração de build. Por exemplo, se você precisar ter uma permissão específica somente durante a depuração, poderá usar a sobreposição para injetar essa permissão durante a depuração. Por exemplo, considerando o seguinte conteúdo do arquivo de sobreposição:

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

Você pode usar o seguinte para adicionar uma sobreposição de manifesto para um build de depuração:

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

Essa ação de build foi introduzida no Xamarin.Android 11.2.

AndroidInstallModules

Especifica os módulos que são instalados pelo comando bundletool ao instalar pacotes de aplicativos.

Essa ação de build foi introduzida no Xamarin.Android 11.3.

AndroidNativeLibrary

Bibliotecas nativas são adicionadas ao build definindo-se as ações de build delas para AndroidNativeLibrary.

Observe que, como o Android dá suporte a várias ABIs (Interfaces Binárias de Aplicativo), o sistema de build deve saber a ABI para a qual a biblioteca nativa foi criada. Há duas maneiras pelas quais a ABI pode ser especificada:

  1. "Detecção" de caminho.
  2. Usando os metadados do %(Abi) item.

Com a detecção de caminho, o nome do diretório pai da biblioteca nativa é usado para especificar a ABI usada como destino pela biblioteca. Portanto, se você adicionar lib/armeabi-v7a/libfoo.so ao build, em a ABI será "detectada" como armeabi-v7a.

Nome de atributo de item

Abi – especifica a ABI da biblioteca nativa.

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

AndroidResource

Todos os arquivos com uma ação de build AndroidResource são compilados em recursos do Android durante o processo de build e tornados acessíveis por meio de $(AndroidResgenFile).

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

Usuários mais avançados talvez queiram usar diferentes recursos em configurações diferentes, mas com o mesmo caminho efetivo. Isso pode ser alcançado tendo vários diretórios do recurso e tendo arquivos com os mesmos caminhos relativos dentro desses diferentes diretórios, além de usar condições do MSBuild para incluir condicionalmente arquivos diferentes em configurações diferentes. Por exemplo:

<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 o caminho do recurso explicitamente. Permite arquivos de "alias" para que eles fiquem disponíveis como vários nomes 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

A ação Compilar AndroidResourceAnalysisConfig marca um arquivo como um arquivo de configuração de nível de severidade para a ferramenta de diagnóstico de layout do Xamarin Android Designer. Atualmente, isso só é usado no editor de layout e não para mensagens de build.

Consulte a documentação da Análise de Recursos do Android para obter mais detalhes.

Adicionado no Xamarin.Android 10.2.

Conteúdo

A ação de build Content normal não é compatível (pois ainda não descobrimos como dar suporte a ela sem uma etapa de primeira execução de custo possivelmente alto).

Começando com o Xamarin.Android 5.1, tentar usar a ação de build @(Content) resultará em um aviso XA0101.

EmbeddedJar

Em um projeto de associação do Xamarin.Android, a ação de build EmbeddedJar associa a biblioteca Java/Kotlin e insere o .jar arquivo na biblioteca. Quando um projeto de aplicativo Xamarin.Android consumir a biblioteca, ele terá acesso às APIs Java/Kotlin do C# e incluirá o código Java/Kotlin no aplicativo Android final.

Desde o Xamarin.Android 11.2, você pode usar a ação de build AndroidLibrary como alternativa, como:

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

EmbeddedNativeLibrary

Em uma biblioteca de classes Xamarin.Android ou em um projeto de associação Java, a ação de build EmbeddedNativeLibrary agrupa uma biblioteca nativa, como lib/armeabi-v7a/libfoo.so na biblioteca. Quando um aplicativo Xamarin.Android consumir a biblioteca, o libfoo.so arquivo será incluído no aplicativo android final.

Desde o Xamarin.Android 11.2, você pode usar a ação de build AndroidNativeLibrary como alternativa.

EmbeddedReferenceJar

Em um projeto de associação do Xamarin.Android, a ação de build EmbeddedReferenceJar inseriu o .jar arquivo na biblioteca, mas não cria uma associação C# como o EmbeddedJar faz. Quando um projeto de aplicativo Xamarin.Android consome a biblioteca, ele incluirá o código Java/Kotlin no aplicativo Android final.

Desde o Xamarin.Android 11.2, você pode usar a ação de build AndroidLibrary como alternativa, 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

Em um projeto de associação do Xamarin.Android, a ação de build JavaDocJar é usada em .jar arquivos que contêm HTML Javadoc. O HTML Javadoc é analisado para extrair nomes de parâmetro.

Há suporte apenas para determinados "dialetos HTML Javadoc", incluindo:

  • Saída do JDK 1.7 javadoc .
  • Saída do JDK 1.8 javadoc .
  • Saída droiddoc.

Essa ação de build foi preterida no Xamarin.Android 11.3 e não terá suporte no .NET 6. A @(JavaSourceJar) ação de build é preferencial.

JavaSourceJar

Em um projeto de associação do Xamarin.Android, a ação de build JavaSourceJar é usada em .jar arquivos que contêm código-fonte Java, que contêm comentários da documentação do Javadoc.

Antes do Xamarin.Android 11.3, o Javadoc seria convertido em HTML por meio do utilitário durante o javadoc tempo de build e posteriormente transformado em documentação XML.

A partir do Xamarin.Android 11.3, o Javadoc será convertido em Comentários da Documentação XML do C# no código-fonte de associação gerado.

$(AndroidJavadocVerbosity) controla o quão "detalhado" ou "completo" é o Javadoc importado.

A partir do Xamarin.Android 11.3, há suporte para os seguintes metadados do MSBuild:

  • %(CopyrightFile): um caminho para um arquivo que contém informações de direitos autorais para o conteúdo javadoc, que será acrescentado a toda a documentação importada.

  • %(UrlPrefix): um prefixo de URL para dar suporte à vinculação à documentação online na documentação importada.

  • %(UrlStyle): o "estilo" das URLs a serem geradas ao vincular à documentação online. No momento, há suporte para apenas um estilo: developer.android.com/reference@2020-Nov.

A partir do Xamarin.Android 12.3, há suporte para os seguintes metadados do MSBuild:

  • %(DocRootUrl): um prefixo de URL a ser usado no lugar de todas as instâncias de {@docroot} na documentação importada.

LibraryProjectZip

Em um projeto de associação do Xamarin.Android, a ação de build LibraryProjectZip associa a biblioteca Java/Kotlin e insere o .zip arquivo ou .aar na biblioteca. Quando um projeto de aplicativo Xamarin.Android consumir a biblioteca, ele terá acesso às APIs Java/Kotlin do C# e incluirá o código Java/Kotlin no aplicativo Android final.

Observação

Somente um único LibraryProjectZip pode ser incluído em um projeto de associação do Xamarin.Android. Essa limitação será removida no .NET 6.

LinkDescription

Arquivos com uma ação de build LinkDescription são usados para controlar o comportamento do vinculador.

ProguardConfiguration

Arquivos com uma ação de build ProguardConfiguration contêm opções que são usadas para controlar o comportamento de proguard. Para obter mais informações sobre essa ação de build, consulte ProGuard.

Esses arquivos são ignorados, a menos que o$(EnableProguard) A propriedade MSBuild é True.