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 AndroidJavaSource
e 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:
- Projetos de biblioteca de aplicativos e classes:
foo.jar
mapeia para AndroidJavaLibrary.bar.aar
mapeia para AndroidAarLibrary.
- Projetos de associação Java:
foo.jar
mapeia para EmbeddedJar.foo.jar
mapeia para EmbeddedReferenceJar seBind="false"
os metadados forem adicionados.bar.aar
mapeia para LibraryProjectZip.
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:
- "Detecção" de caminho.
- 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
.