Compartilhar via


Propriedades de build

As propriedades do MSBuild controlam o comportamento dos destinos. Eles são especificados no arquivo de projeto, por exemplo , MyApp.csproj, em um PropertyGroup do MSBuild.

AdbTarget

A $(AdbTarget) propriedade especifica o dispositivo de destino Android no qual o pacote Android pode ser instalado ou removido. O valor dessa propriedade é o mesmo que a adb opção Dispositivo de Destino.

AfterGenerateAndroidManifest

Os destinos do MSBuild listados nessa propriedade serão executados diretamente após o destino interno _GenerateJavaStubs , que é onde o AndroidManifest.xml arquivo é gerado no $(IntermediateOutputPath). Se você quiser fazer alguma modificação no arquivo gerado AndroidManifest.xml , poderá fazer isso usando este ponto de extensão.

AndroidAapt2CompileExtraArgs

Especifica as opções de linha de comando a serem passadas para o comando aapt2 compile ao processar ativos e recursos do Android.

AndroidAapt2LinkExtraArgs

Especifica as opções de linha de comando a serem passadas para o comando aapt2 link ao processar ativos e recursos do Android.

AndroidAddKeepAlives

Uma propriedade booleana que controla se o vinculador inserirá GC.KeepAlive() invocações em projetos de associação para evitar a coleta prematura de objetos.

O valor padrão é True para builds de configuração de versão.

AndroidAotAdditionalArguments

Uma propriedade de cadeia de caracteres que permite passar opções para o compilador Mono durante a Aot tarefa para projetos que têm $(AndroidEnableProfiledAot) ou $(AotAssemblies) definidos como true. O valor da cadeia de caracteres da propriedade é adicionado ao arquivo de resposta ao chamar o compilador cruzado Mono.

Em geral, essa propriedade deve ser deixada em branco, mas em determinados cenários especiais ela pode fornecer flexibilidade útil.

A $(AndroidAotAdditionalArguments) propriedade é diferente da propriedade relacionada $(AndroidExtraAotOptions) ; $(AndroidAotAdditionalArguments) passa opções separadas por espaço autônomas completas, como --verbose ou --debug para o compilador AOT, enquanto $(AndroidExtraAotOptions) contém argumentos separados por vírgula --aot que fazem parte da opção do compilador AOT.

AndroidAotCustomProfilePath

O arquivo que aprofutil deve ser criado para armazenar dados do criador de perfil.

Perfis AndroidAot

Uma propriedade de cadeia de caracteres que permite ao desenvolvedor adicionar perfis AOT da linha de comando. É uma lista separada por ponto e vírgula ou vírgula de caminhos absolutos.

AndroidAotProfilerPort

A porta à qual aprofutil deve se conectar ao obter dados de criação de perfil.

AndroidAotEnableLazyLoad

Habilite o carregamento lento (atrasado) de assemblies AOT-d, em vez de pré-carregá-los na inicialização. O valor padrão é True para builds de versão com qualquer forma de AOT habilitada.

Introduzido no .NET 6.

AndroidApkDigestAlgoritmo

Um valor de cadeia de caracteres que especifica o algoritmo de resumo a ser usado com jarsigner -digestalg.

O valor padrão é SHA-256.

AndroidApkSignerAdditionalArguments

Uma propriedade de cadeia de caracteres que permite que o desenvolvedor forneça argumentos para a apksigner ferramenta.

AndroidApkSigningAlgoritmo

Um valor de cadeia de caracteres que especifica o algoritmo de assinatura a ser usado com jarsigner -sigalgo .

O valor padrão é SHA256withRSA.

Aplicativo Android

Um valor booleano que indica se o projeto é para um aplicativo Android (True) ou para um projeto de biblioteca Android (False ou não está presente).

Apenas um projeto com <AndroidApplication>True</AndroidApplication> pode estar presente em um pacote Android. (Infelizmente, esse requisito não é verificado, o que pode resultar em erros sutis e bizarros em relação aos recursos do Android.)

AndroidApplicationJavaClass

O nome completo da classe Java a ser usado no lugar de android.app.Application quando uma classe herda de Android.App.Application.

A $(AndroidApplicationJavaClass) propriedade geralmente é definida por outras propriedades, como a $(AndroidEnableMultiDex) propriedade MSBuild.

AndroidAvoidEmitForPerformance

Uma propriedade booleana que determina se é ou não System.Reflection.Emit "evitada" para melhorar o desempenho de inicialização. Essa propriedade é True por padrão.

O uso de tem um impacto perceptível no desempenho da System.Reflection.Emit inicialização no Android. Esse comportamento é desabilitado por padrão para as seguintes opções de recursos:

  • Switch.System.Reflection.ForceInterpretedInvoke: após a segunda chamada para MethodInfo.Invoke() ou ConstructorInfo.Invoke(), o código é emitido para melhorar o desempenho de chamadas repetidas.

  • Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: após a segunda chamada para recuperar um serviço de um contêiner de injeção de dependência, o código é emitido para melhorar o desempenho de chamadas repetidas.

É desejável na maioria dos aplicativos Android desativar esse comportamento.

Consulte a documentação de Opções de Recursos de Bibliotecas de Classes Base para obter detalhes sobre as opções de recursos disponíveis.

Adicionado no .NET 8.

AndroidBinUtilsPath

Um caminho para um diretório que contém os binutils do Android, como ld, o vinculador nativo e as, o assembler nativo. Essas ferramentas estão incluídas na carga de trabalho do .NET para Android.

O valor padrão é $(MonoAndroidBinDirectory)\binutils\bin\.

AndroidBoundExceptionType

Um valor de cadeia de caracteres que especifica como as exceções devem ser propagadas quando um tipo fornecido pelo .NET para Android implementa um tipo ou interface do .NET em termos de tipos Java, por exemplo Android.Runtime.InputStreamInvoker , e System.IO.Stream, ou Android.Runtime.JavaDictionary e System.Collections.IDictionary.

  • Java: O tipo de exceção Java original é propagado no estado em que se encontra.

    Javasignifica que, por exemplo, InputStreamInvoker não implementa corretamente a System.IO.Stream API porque Java.IO.IOException pode ser lançada de em vez de System.IO.IOExceptionStream.Read() .

  • System: O tipo de exceção Java original é capturado e encapsulado em um tipo de exceção .NET apropriado.

    Systemsignifica que, por exemplo, InputStreamInvoker implementa System.IO.Streamcorretamente e Stream.Read() não lançará Java.IO.IOException instâncias. (Em vez disso, pode lançar um System.IO.IOException contendo a Java.IO.IOException como o Exception.InnerException valor.)

    System é o valor padrão.

AndroidBoundInterfacesContainConstants

Uma propriedade booleana que determina se as constantes de associação em interfaces terão suporte ou se a solução alternativa de criar uma IMyInterfaceConsts classe será usada.

O valor padrão é True.

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

Uma propriedade booleana que indica se os membros padrão e estáticos nas interfaces terão suporte ou uma solução alternativa antiga de criar uma classe irmã contendo membros estáticos como abstract class MyInterface.

O valor padrão está True no .NET 6 e False para herdado.

AndroidBoundInterfacesContainTypes

Uma propriedade booleana que indica se os tipos aninhados em interfaces terão suporte ou a solução alternativa de criar um tipo não aninhado como IMyInterfaceMyNestedClass.

O valor padrão está True no .NET 6 e False para herdado.

AndroidBuildApplicationPackage

Um valor booliano que indica se o pacote (.apk deve ser criado e assinado). Definir esse valor como True é equivalente a usar o SignAndroidPackage construir destino.

Essa propriedade é False por padrão.

AndroidBundleConfigurationFile

Especifica um nome de arquivo a ser usado como um arquivo de configuração ao bundletool criar um Android App Bundle. Esse arquivo controla alguns aspectos de como os APKs são gerados a partir do pacote, como em quais dimensões o pacote é dividido para produzir APKs. O .NET para Android define algumas dessas configurações automaticamente, incluindo a lista de extensões de arquivo a serem deixadas descompactadas.

Essa propriedade só será relevante se $(AndroidPackageFormat) estiver definida como aab.

AndroidBundleToolExtraArgs

Especifica as opções de linha de comando a serem passadas para o comando bundletool ao criar pacotes de aplicativos.

AndroidClassParser

Uma propriedade de cadeia de caracteres que controla como .jar os arquivos são analisados. Entre os valores possíveis estão:

  • class-parse: usa class-parse.exe para analisar o código de bytes Java diretamente, sem a assistência de uma JVM.

  • jar2xml: esse valor está obsoleto e não é mais suportado.

AndroidCodegenTarget

Uma propriedade de cadeia de caracteres que controla a ABI de destino de geração de código. Entre os valores possíveis estão:

  • XamarinAndroid: esse valor está obsoleto e não tem mais suporte.

  • XAJavaInterop1: usar Java.Interop para invocações de JNI. Assemblies de associação usando XAJavaInterop1 só podem compilar e executar com o Xamarin.Android 6.1 ou posterior. O Xamarin.Android 6.1 e os posteriores associam Mono.Android.dll com esse valor.

O valor padrão é XAJavaInterop1.

AndroidCreatePackagePerAbi

Uma propriedade booleana que determina se um conjunto de arquivos - um por ABI especificado em $(AndroidSupportedAbis)--deve ser criado em vez de ter suporte para todas as ABIs em um único .apk.

Consulte também o guia Como criar APKs específicos da ABI.

AndroidCreateProguardMappingFile

Uma propriedade booleana que controla se um arquivo de mapeamento do ProGuard é gerado como parte do processo de compilação.

Adicionar o seguinte ao csproj fará com que o arquivo seja gerado e usará a AndroidProguardMappingFile propriedade para controlar o local do arquivo de mapeamento final.

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

Ao produzir .aab arquivos, o arquivo de mapeamento é incluído automaticamente em seu pacote. Não há necessidade de carregá-lo na Google Play Store manualmente. Ao usar .apk arquivos, eles AndroidProguardMappingFile precisarão ser carregados manualmente.

O valor padrão é True ao usar $(AndroidLinkTool)=r8.

AndroidDebugKeyAlgorithm

Especifica o algoritmo padrão a ser usado para o debug.keystore. O valor padrão é RSA.

AndroidDebugKeyValidity

Especifica a validade padrão a ser usada para o debug.keystore. O valor padrão é 10950 ou 30 * 365 ou .30 years

AndroidDebugStoreType

Especifica o formato de arquivo de armazenamento de chaves a ser usado para o debug.keystore. O padrão é pkcs12.

AndroidDeviceUserId

Permite implantar e depurar o aplicativo em contas de convidado ou de trabalho. O valor é o uid valor que você obtém do seguinte comando adb:

adb shell pm list users

O comando acima retornará os seguintes dados:

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

O uid é o primeiro valor inteiro. Na saída acima, eles são 0 e 10.

AndroidDexTool

Uma propriedade de estilo enumeração com valores válidos de dx ou d8. Indica qual compilador dex do Android é usado durante o processo de build do .NET para Android. O valor padrão é dx. Veja nossa documentação sobre D8 e R8.

AndroidEnableDesugar

Uma propriedade booleana que determina se desugar está habilitada. No momento, o Android não oferece suporte a todos os recursos do Java 8, e o conjunto de ferramentas padrão implementa os novos recursos de linguagem executando transformações de bytecode, chamadas desugar, na saída do javac compilador. O valor padrão é False if using $(AndroidDexTool)=dx e True if using $(AndroidDexTool)=d8.

AndroidAtivarGooglePlayStoreVerificações

Uma propriedade bool que permite que os desenvolvedores desativem as seguintes verificações da Google Play Store: XA1004, XA1005 e XA1006. Desativar essas verificações é útil para desenvolvedores que não estão segmentando a Google Play Store e não desejam executá-las.

AndroidEnableMarshalMethods

Uma propriedade bool, que determina se os métodos de marshal LLVM estão habilitados ou não. Os métodos de marshal LLVM são uma otimização de inicialização de aplicativo que usa pontos de entrada nativos para registro de método Java native .

Essa propriedade é False por padrão.

Adicionado no .NET 8.

AndroidEnableMultiDex

Uma propriedade booleana que determina se o suporte multi-dex será ou não usado no arquivo ..apk

Essa propriedade é False por padrão.

AndroidEnableObsoleteOverrideInheritance

Uma propriedade booleana que determina se os métodos associados herdam [Obsolete] automaticamente atributos de métodos que eles substituem.

O suporte para essa propriedade foi adicionado no .NET 8.

Essa propriedade é True por padrão.

AndroidEnablePreloadAssemblies

Uma propriedade booleana que controla se todos os assemblies gerenciados agrupados no pacote de aplicativos são carregados durante a inicialização do processo ou não.

Quando definidos como True, todos os assemblies agrupados dentro do pacote de aplicativos serão carregados durante a inicialização do processo, antes que qualquer aplicativo de código seja invocado.

Quando definido como False, os assemblies somente serão carregados conforme necessário. Carregar assemblies conforme necessário permite que os aplicativos sejam iniciados mais rapidamente e também é mais consistente com a semântica do .NET da área de trabalho. Para ver a economia de tempo, defina a Propriedade do Sistema debug.mono.log para incluir timing e procure a mensagem Finished loading assemblies: preloaded dentro de adb logcat.

Aplicativos ou bibliotecas, que usam injeção de dependência, podem exigir que essa propriedade seja True se, por sua vez, exigirem que AppDomain.CurrentDomain.GetAssemblies() retornem todos os assemblies dentro do pacote de aplicativos, mesmo que o assembly não fosse necessário de outra forma.

Por padrão, esse valor é False.

AndroidEnableProfiledAot

Uma propriedade booleana que determina se os perfis AOT são ou não usados durante a compilação antecipada.

Os perfis estão listados em @(AndroidAotProfile) grupo de itens. Este ItemGroup contém perfis padrão. Ele pode ser substituído removendo o(s) existente(s) e adicionando seus próprios perfis AOT.

Essa propriedade é False por padrão.

AndroidEnableRestrictToAttributes

Uma propriedade de estilo de enumeração com valores válidos de obsolete e disable.

Quando definido como obsolete, os tipos e membros marcados com a anotação androidx.annotation.RestrictTo Java ou em pacotes Java não exportados serão marcados com um [Obsolete] atributo na associação C#.

Esse [Obsolete] atributo tem uma mensagem descritiva explicando que o proprietário do pacote Java considera a API "interna" e adverte contra seu uso.

Esse atributo também tem um código XAOBS001 de aviso personalizado para que possa ser suprimido independentemente da API obsoleta "normal".

Quando definido como disable, a API será gerada normalmente, sem atributos adicionais. (Esse é o mesmo comportamento de antes do .NET 8.)

A adição [Obsolete] de atributos em vez de remover automaticamente a API foi feita para preservar a compatibilidade da API com os pacotes existentes. Se, em vez disso , preferir remover membros que tenham a @RestrictTo anotação ou estejam em pacotes Java não exportados, você pode usar arquivos Transform além dessa propriedade para evitar que esses tipos sejam vinculados:

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

O suporte para essa propriedade foi adicionado no .NET 8.

Essa propriedade é definida como obsolete por padrão.

AndroidEnableSGenConcurrent

Uma propriedade booleana que determina se o coletor GC simultâneo do Mono será usado ou não.

Essa propriedade é False por padrão.

AndroidErrorOnCustomJavaObject

Uma propriedade booleana que determina se os tipos podem ser implementados Android.Runtime.IJavaObjectsem herdar também de Java.Lang.Object ou Java.Lang.Throwable:

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

Quando True, esses tipos gerarão um erro XA4212, caso contrário, um aviso XA4212 será gerado.

Essa propriedade é True por padrão.

AndroidExplicitCrunch

Não há mais suporte para essa propriedade.

Opções ExtraExtraOtOptions do Android

Uma propriedade de cadeia de caracteres que permite passar opções para o compilador Mono durante a Aot tarefa para projetos que têm $(AndroidEnableProfiledAot) ou $(AotAssemblies) definidos como true. O valor da cadeia de caracteres da propriedade é adicionado ao arquivo de resposta ao chamar o compilador cruzado Mono.

Em geral, essa propriedade deve ser deixada em branco, mas em determinados cenários especiais ela pode fornecer flexibilidade útil.

A $(AndroidExtraAotOptions) propriedade é diferente da propriedade relacionada $(AndroidAotAdditionalArguments) ; $(AndroidAotAdditionalArguments) coloca argumentos separados por vírgula --aot na opção do compilador Mono. $(AndroidExtraAotOptions) em vez disso, passa opções separadas por espaço autônomas completas, como --verbose ou --debug para o compilador.

AndroidFastDeploymentType

Uma : lista de valores separados por dois pontos para controlar quais tipos podem ser implantados no diretório de Implantação Rápida no dispositivo de destino quando a $(EmbedAssembliesIntoApk) propriedade MSBuild for False. Se um recurso é implantado por Fast Deployment, ele não é inserido no .apk gerado, o que pode acelerar os tempos de implantação. (Quanto mais rápido for implantado, menos frequentemente será .apk necessário reconstruí-lo e o processo de instalação poderá ser mais rápido.) Os valores válidos incluem:

  • Assemblies: implantar os assemblies do aplicativo.
  • Dexes: Implante .dex arquivos, bibliotecas nativas e mapas de tipos. O Dexes valor só pode ser usado em dispositivos com Android 4.4 ou posterior (API-19).

O valor padrão é Assemblies.

O suporte para recursos e ativos de implantação rápida por meio desse sistema foi removido no commit f0d565fe. Isso ocorreu porque exigia o uso de APIs obsoletas para funcionar.

Experimental.

AndroidFragmentType

Especifica o tipo totalmente qualificado de padrão a ser usado para todos os elementos de layout <fragment> ao gerar o código de associações de layout. O valor padrão é o tipo padrão do Android Android.App.Fragment .

AndroidGenerateJniMarshalMethods

Uma propriedade bool que permite a geração de métodos JNI marshal como parte do processo de compilação. Isso reduz muito o System.Reflection uso no código auxiliar de associação.

O valor padrão é False. Se os desenvolvedores desejarem usar o novo recurso de métodos de marshal JNI, eles podem definir

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

em seu .csproj. Como alternativa, forneça a propriedade na linha de comando por meio de

-p:AndroidGenerateJniMarshalMethods=True

Experimental. O valor padrão é False.

AndroidGenerateJniMarshalMethodsAdditionalArguments

Uma propriedade de cadeia de caracteres que pode ser usada para adicionar parâmetros à jnimarshalmethod-gen.exe invocação e é útil para depuração, de modo que opções como -v, -d, ou --keeptemp possam ser usadas.

O valor padrão é uma cadeia de caracteres vazia. Ele pode ser definido no .csproj arquivo ou na linha de comando. Por exemplo:

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

ou:

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

AndroidGenerateLayoutBindings

Habilita a geração de layout code-behind se definido como true ou o desabilita completamente se definido como false.

O valor padrão é false.

AndroidGenerateResourceDesigner

O valor padrão é true. Quando definido como false, desativa a geração de Resource.designer.cs.

AndroidHttpClientHandlerType

Controla a implementação padrão System.Net.Http.HttpMessageHandler que será usada pelo System.Net.Http.HttpClient construtor padrão. O valor é um nome de tipo qualificado pelo assembly de uma subclasse HttpMessageHandler, adequado para usar com System.Type.GetType(string).

No .NET 6 e mais recente, essa propriedade tem efeito somente quando usada em conjunto com $(UseNativeHttpHandler)=trueo . Os valores mais comuns para essa propriedade são:

  • Xamarin.Android.Net.AndroidMessageHandler: use as APIs Java do Android para executar solicitações HTTP. É semelhante ao legado Xamarin.Android.Net.AndroidClientHandler com várias melhorias. Ele suporta HTTP 1.1 e TLS 1.2. É o manipulador de mensagens HTTP padrão.

  • System.Net.Http.SocketsHttpHandler, System.Net.Http: o manipulador de mensagens padrão no .NET. Ele suporta HTTP/2, TLS 1.2 e é o manipulador de mensagens HTTP recomendado para usar com Grpc.Net.Client. Esse valor é equivalente a $(UseNativeHttpHandler)=false.

  • Unset/a string vazia, que é equivalente a System.Net.Http.HttpClientHandler, System.Net.Http

    Corresponde à opção Padrão nas páginas de propriedades do Visual Studio.

    O novo assistente de projeto seleciona essa opção para novos projetos quando a Versão mínima do Android está configurada como Android 4.4.87 ou mais antiga no Visual Studio ou quando Plataformas de destino está definido como Desenvolvimento Moderno ou Máxima Compatibilidade no Visual Studio para Mac.

  • System.Net.Http.HttpClientHandler, System.Net.Http: Use o .HttpMessageHandler

    Corresponde à opção Gerenciado nas páginas de propriedades do Visual Studio.

Observação

No .NET 6, o tipo especificado não deve ser Xamarin.Android.Net.AndroidClientHandler or System.Net.Http.HttpClientHandler ou herdar de nenhuma dessas classes. Se você estiver migrando do Xamarin.Android "clássico", use AndroidMessageHandler ou derive seu manipulador personalizado dele.

Observação

O suporte para a $(AndroidHttpClientHandlerType) propriedade funciona definindo a XA_HTTP_CLIENT_HANDLER_TYPE variável de ambiente. Um $XA_HTTP_CLIENT_HANDLER_TYPE valor encontrado em um arquivo com uma ação Build de @(AndroidEnvironment) terá precedência.

AndroidIncludeWrapSh

Um valor booleano que indica se o script wrapper do Android (wrap.sh) deve ser empacotado no APK. O valor padrão é false porque o script wrapper pode influenciar significativamente a maneira como o aplicativo é iniciado e funciona e o script deve ser incluído somente quando necessário, por exemplo, ao depurar ou alterar o comportamento de inicialização/tempo de execução do aplicativo.

O script é adicionado ao projeto usando o @(AndroidNativeLibrary) build, porque ele é colocado no mesmo diretório que as bibliotecas nativas específicas da arquitetura e deve ser nomeado wrap.sh.

A maneira mais fácil de especificar o caminho para o wrap.sh script é colocá-lo em um diretório com o nome da arquitetura de destino. Essa abordagem funcionará se você tiver apenas uma wrap.sh por arquitetura:

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

No entanto, se o seu projeto precisar de mais de um wrap.sh por arquitetura, para finalidades diferentes, essa abordagem não funcionará. Em vez disso, nesses casos, o nome pode ser especificado usando os Link metadados do AndroidNativeLibrary:

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

Se os Link metadados forem usados, o caminho especificado em seu valor deverá ser um caminho de biblioteca nativo específico da arquitetura nativa, relativo ao diretório raiz do APK. O formato do caminho é lib\ARCH\wrap.sh onde ARCH pode ser um dos seguintes:

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

AndroidIncludeAssetPacksInPackage

Essa propriedade controla se uma compilação de Asset Packs é incluída automaticamente no arquivo final .aab . O padrão será .true

Em certos casos, o usuário pode querer liberar uma liberação provisória. Nesses casos, o usuário não precisa atualizar o pacote de ativos. Especialmente se o conteúdo do pacote de ativos não tiver sido alterado. Essa propriedade permite que o usuário ignore os pacotes de ativos se eles não forem necessários.

Adicionado no .NET 9

AndroidInstallJavaDependencies

O valor padrão é true para builds de linha de comando. Quando definido como true, permite a instalação do Java SDK ao executar o <InstallAndroidDependencies/> destino.

O suporte para essa propriedade foi adicionado no .NET 9.

AndroidJavadocVerbosidade

Especifica como os comentários de documentação XML do C# devem ser "detalhados" ao importar a documentação do Javadoc em projetos de associação.

Requer o uso do @(JavaSourceJar) construir ação.

A $(AndroidJavadocVerbosity) propriedade é semelhante a enumeração, com valores possíveis de full ou intellisense:

O valor padrão é intellisense.

AndroidKeyStore

Um valor booliano que indica se as informações de assinatura personalizadas devem ser usadas. O valor padrão é False, que significa que a chave de assinatura de depuração padrão será usada para assinar pacotes.

AndroidLaunchActivity

A atividade do Android a ser iniciada.

AndroidLinkMode

Especifica qual tipo de vinculação deve ser executado em assemblies contidos no pacote Android. Usado somente em projetos de aplicativo Android. O valor padrão é SdkOnly. Os valores válidos são:

  • None: nenhuma tentativa de vinculação ocorrerá.

  • SdkOnly: a vinculação ocorrerá apenas nas bibliotecas de classe base, não nos assemblies do usuário.

  • Full: a vinculação ocorrerá nas bibliotecas de classe base e nos assemblies do usuário.

    Observação

    o uso de um valor AndroidLinkMode definido como Full normalmente resulta em aplicativos com falha, principalmente quando a reflexão é usada. Evite usar isso, a menos que você realmente saiba o que está fazendo.

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

Quando true, o sistema de compilação vinculará os tipos aninhados da classe Resource.Designer.cs Resource em todos os assemblies. O código IL que usa esses tipos será atualizado para usar os valores diretamente em vez de acessar campos.

Vincular os tipos aninhados pode ter um pequeno impacto na redução do tamanho do apk e também pode ajudar no desempenho da inicialização. Somente compilações de "Versão" são vinculadas.

Experimental. Projetado apenas para funcionar com código como

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

Quaisquer outros cenários (como reflexão) não serão suportados.

AndroidLinkPular

Especifica uma lista delimitada por ponto-e-vírgula (;) de nomes de assembly, sem extensões de arquivo, de assemblies que não devem ser vinculados. Usado somente em projetos de aplicativo Android.

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

Uma propriedade de estilo enumeração com valores válidos de proguard ou r8. Indica qual redutor de código é usado para o código Java. O valor padrão é uma string vazia ou proguard , se $(AndroidEnableProguard) for True. Veja nossa documentação sobre D8 e R8.

AndroidLintEnabled

Uma propriedade bool que permite que o desenvolvedor execute a ferramenta Android lint como parte do processo de empacotamento.

Quando $(AndroidLintEnabled)=True, as seguintes propriedades são usadas:

As seguintes ações de compilação também podem ser usadas:

Confira a Ajuda do Lint para obter mais detalhes sobre as ferramentas lint do Android.

Problemas do AndroidLintEnabled

Uma propriedade de cadeia de caracteres que é uma lista separada por vírgulas de problemas de lint a serem habilitados.

Usado apenas quando $(AndroidLintEnabled)=True.

AndroidLintDisabledIssues

Uma propriedade de cadeia de caracteres que é uma lista separada por vírgulas de problemas de lint a serem desabilitados.

Usado apenas quando $(AndroidLintEnabled)=True.

AndroidLintCheckIssues

Uma propriedade de cadeia de caracteres que é uma lista separada por vírgulas de problemas de lint a serem verificados.

Usado apenas quando $(AndroidLintEnabled)=True.

Observação: somente esses problemas serão verificados.

AndroidManagedSymbols

Uma propriedade booleana que controla se os pontos de sequência são gerados para que as informações de nome de arquivo e número de linha possam ser extraídas de rastreamentos de Release pilha.

AndroidManifest

Especifica um nome de arquivo a ser usado como modelo para o arquivo .AndroidManifest.xml Durante o build, quaisquer outros valores necessários serão mesclados para produzir o AndroidManifest.xml propriamente dito. O $(AndroidManifest) deve conter o nome do pacote no atributo /manifest/@package.

AndroidManifestMerger

Especifica a implementação para mesclar arquivos AndroidManifest.xml . Essa é uma propriedade de estilo de enumeração em que legacy seleciona a implementação original do C# e manifestmerger.jar seleciona a implementação Java do Google.

O valor padrão é atualmente manifestmerger.jar. Se você quiser usar a versão antiga, adicione o seguinte ao seu csproj

<AndroidManifestMerger>legacy</AndroidManifestMerger>

A fusão do Google permite o suporte conforme xmlns:tools="http://schemas.android.com/tools" descrito na documentação do Android.

AndroidManifestMergerExtraArgs

Uma propriedade de string para fornecer argumentos para a ferramenta de documentação do Android.

Se você quiser uma saída detalhada da ferramenta, poderá adicionar o seguinte ao .csproj.

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

AndroidManifestType

Uma propriedade de estilo enumeração com valores válidos de Xamarin ou GoogleV2. Isso controla qual repositório é usado pelo InstallAndroidDependencies target para determinar quais pacotes e versões de pacotes do Android estão disponíveis e podem ser instalados.

Xamariné o repositório Lista Aprovada (Recomendado) no Gerenciador de SDK do Visual Studio.

GoogleV2é o repositório Lista Completa (Sem Suporte) no Gerenciador de SDK do Visual Studio.

Se $(AndroidManifestType) não estiver definido, então Xamarin é usado.

AndroidManifestPlaceholders

Uma lista separada por ponto-e-vírgula de pares de substituição de chave-valor para AndroidManifest.xml, em que cada par tem o formato key=value.

Por exemplo, um valor de propriedade de define um ${assemblyName} espaço reservado assemblyName=$(AssemblyName) que pode aparecer em AndroidManifest.xml:

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

Isso fornece uma maneira de inserir variáveis do processo de compilação no arquivo AndroidManifest.xml .

AndroidMultiDexClassListExtraArgs

Uma propriedade de string que permite que os desenvolvedores passem argumentos para o com.android.multidex.MainDexListBuilder ao gerar o multidex.keep arquivo.

Um caso específico é se você estiver recebendo o erro a seguir durante a compilação de dx.

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

Se você estiver recebendo esse erro, poderá adicionar o seguinte ao .csproj.

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

o que permitirá que a dx etapa seja bem-sucedida.

AndroidPackageFormat

Uma propriedade de estilo enumeração com valores válidos de apk ou aab. Indica se você deseja empacotar o aplicativo Android como um arquivo APK ou Android App Bundle. Os Lote de Aplicativo são um novo formato para builds de Release destinados ao envio no Google Play. O valor padrão é apk.

Quando $(AndroidPackageFormat) é definido como aab, outras propriedades do MSBuild são definidas, que são necessárias para o Lote de Aplicativo do Android:

Essa propriedade será preterida para o .net 6. Os usuários devem mudar para o .AndroidPackageFormats

Formatos de pacote Android

Uma propriedade delimitada por ponto-e-vírgula com valores válidos de apk e aab. Indica se você deseja empacotar o aplicativo Android como um arquivo APK ou Android App Bundle. Os Lote de Aplicativo são um novo formato para builds de Release destinados ao envio no Google Play.

Ao criar uma compilação de versão, talvez você queira gerar e aab e um apk para distribuição para várias lojas.

Definir AndroidPackageFormats como aab;apk resultará na geração de ambos. A configuração AndroidPackageFormats como ou aab apk gerará apenas um arquivo.

O valor padrão é aab;apk apenas para Release compilações. É recomendável que você continue a usar apenas apk para depuração.

AndroidPackageNamingPolicy

Uma propriedade de estilo de enumeração para especificar os nomes de pacotes Java do código-fonte Java gerado.

O único valor com suporte é LowercaseCrc64.

AndroidProguardMappingFile

Especifica a -printmapping regra de proteção para r8. Isso significa que o mapping.txt arquivo será produzido na $(OutputPath) pasta. Esse arquivo pode ser usado ao fazer upload de pacotes para a Google Play Store.

Por padrão, esse arquivo é produzido automaticamente ao usar AndroidLinkTool=r8 e gerará o seguinte arquivo $(OutputPath)mapping.txt.

Se você não quiser gerar esse arquivo de mapeamento, poderá usar a AndroidCreateProguardMappingFile propriedade para parar de criá-lo. Adicione o seguinte em seu projeto

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

ou use -p:AndroidCreateProguardMappingFile=False na linha de comando.

AndroidD8IgnoreWarnings

Especifica --map-diagnostics warning info a ser passado para d8. O valor padrão é True, mas pode ser definido como False para impor um comportamento mais rigoroso. Consulte o código-fonte D8 e R8 para obter detalhes.

Adicionado no .NET 8.

AndroidR8IgnoreWarnings

Especifica a -ignorewarnings regra de proteção para r8. Isso permite r8 continuar com a compilação dex mesmo se certos avisos forem encontrados. O valor padrão é True, mas pode ser definido como False para impor um comportamento mais rigoroso. Consulte o manual do ProGuard para obter detalhes.

A partir do .NET 8, especifica --map-diagnostics warning info. Consulte o código-fonte D8 e R8 para obter detalhes.

AndroidR8JarPath

O caminho para r8.jar para uso com o compilador e redutor dex r8. O valor padrão é um caminho para a instalação da carga de trabalho do .NET para Android. Para obter mais informações, confira nossa documentação sobre o D8 e R8.

AndroidResgenExtraArgs

Especifica as opções de linha de comando a serem passadas para o comando aapt ao processar ativos e recursos do Android.

AndroidResgenFile

Especifica o nome do arquivo de recurso a ser gerado. O modelo padrão define isso como Resource.designer.cs.

AndroidSdkBuildToolsVersion

O pacote de ferramentas de compilação do SDK do Android fornece as ferramentas aapt e zipalign , entre outras. Várias versões diferentes do pacote de ferramentas de build podem ser instaladas simultaneamente. O pacote de ferramentas de build escolhido para empacotamento é criado procurando e usando uma versão de ferramentas de build "preferencial", se uma está presente; se a versão "preferencial" não está presente, o pacote de ferramentas de build com a versão mais alta entre os instalados é usado.

A propriedade do MSBuild $(AndroidSdkBuildToolsVersion) contém a versão das ferramentas de build preferencial. O sistema de build do .NET para Android fornece um valor padrão em Xamarin.Android.Common.targets, e o valor padrão pode ser substituído no arquivo de projeto para escolher uma versão alternativa de ferramentas de build, se (por exemplo) o aapt mais recente estiver falhando enquanto uma versão anterior do aapt funcionar.

AndroidSigningKeyAlias

Especifica o alias da chave no armazenamento de chaves. Este é o valor de keytool-alias usado ao criar o repositório de chaves.

AndroidAssinaturaChavePass

Especifica a senha da chave dentro do arquivo de armazenamento de chaves. Esse é o valor digitado quando keytool solicita Insira a senha da chave para $(AndroidSigningKeyAlias).

Essa propriedade também dá suporte a prefixos env: e file: que podem ser usados para especificar uma variável de ambiente ou arquivo que contenha a senha. Essas opções fornecem uma maneira de impedir que a senha apareça nos logs de build.

Por exemplo, para usar uma variável de ambiente chamada AndroidSigningPassword:

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

Para usar um arquivo localizado em C:\Users\user1\AndroidSigningPassword.txt:

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

Observação

O env: prefixo não é suportado quando $(AndroidPackageFormat) é definido como aab.

AndroidSigningKeyStore

Especifica o nome do arquivo de armazenamento de chaves criado pelo keytool. Isso corresponde ao valor fornecido à opção keytool -keystore.

AndroidSigningStorePass

Especifica a senha para $(AndroidSigningKeyStore). Esse é o valor fornecido a keytool ao criar o arquivo de repositório de chaves e ao solicitar Insira a senha do repositório de chaves:.

Essa propriedade também dá suporte a prefixos env: e file: que podem ser usados para especificar uma variável de ambiente ou arquivo que contenha a senha. Essas opções fornecem uma maneira de impedir que a senha apareça nos logs de build.

Por exemplo, para usar uma variável de ambiente chamada AndroidSigningPassword:

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

Para usar um arquivo localizado em C:\Users\user1\AndroidSigningPassword.txt:

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

Observação

O env: prefixo não é suportado quando $(AndroidPackageFormat) é definido como aab.

AndroidSigningPlatformKey

Especifica o arquivo de chave a ser usado para assinar o apk. Isso só é usado ao criar system aplicativos.

AndroidSigningPlatformCert

Especifica o arquivo de certificado a ser usado para assinar o apk. Isso só é usado ao criar system aplicativos.

AndroidStripILAfterAOT

Uma propriedade bool que especifica se os corpos dos métodos compilados AOT serão removidos ou não.

O valor padrão é false, e os corpos dos métodos compilados AOT não serão removidos.

Quando definido como true, $(AndroidEnableProfiledAot) é definido como false por padrão. Isso significa que nas compilações de configuração de versão - nas quais $(RunAOTCompilation) é true por padrão - o AOT está habilitado para tudo. Isso pode resultar em tamanhos de aplicativos maiores. Esse comportamento pode ser substituído definindo $(AndroidEnableProfiledAot) explicitamente como true dentro do arquivo de projeto.

O suporte para essa propriedade foi adicionado no .NET 8.

AndroidSupportedAbis

Uma propriedade de cadeia de caracteres que contém uma lista delimitada por ponto-e-vírgula .apk(;) de ABIs que deve ser incluída no .

Os valores compatíveis incluem:

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

AndroidTlsProvider

Essa propriedade está obsoleta e não deve ser usada.

AndroidUseAapt2

Uma propriedade booleana que permite ao desenvolvedor controlar o uso da aapt2 ferramenta para empacotamento. Por padrão, isso será True.

Essa propriedade não pode ser definida como false.

AndroidUseApkSigner

Uma propriedade bool que permite que o desenvolvedor use a apksigner ferramenta em vez de jarsigner.

AndroidUseDefaultAotProfile

Uma propriedade bool que permite ao desenvolvedor suprimir o uso dos perfis AOT padrão.

Para suprimir os perfis AOT padrão, defina a propriedade como false.

Montagem AndroidUseDesigner

Uma propriedade bool que controla se o sistema de compilação gerará um _Microsoft.Android.Resource.Designer.dll as em oposição a um Resource.Designer.cs arquivo. Os benefícios disso são aplicativos menores e tempo de inicialização mais rápido.

O valor padrão está true no .NET 8.

Como um Autor do Nuget, é recomendável que você envie três versões do assembly se quiser manter a compatibilidade com versões anteriores. Um para MonoAndroid, um para net6.0-android e um para net8.0-android. Você pode fazer isso usando o Xamarin.Legacy.Sdk. Isso só será necessário se o projeto da Biblioteca Nuget usar itens no projeto ou por meio de AndroidResource uma dependência.

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

Como alternativa, desative essa configuração até que o Classic e o net7.0-android tenham sido descontinuados.

Os projetos do .NET 8 que optarem por desativar essa configuração não poderão consumir referências que a usam. Se você tentar usar um assembly que tenha esse recurso habilitado em um projeto que não tenha, você receberá um erro de XA1034 compilação.

Adicionado no .NET 8.

AndroidUseInterpreter

Uma propriedade booleana que faz com que o .apk contenha o interpretador mono, e não o JIT normal.

Experimental.

AndroidUseLegacyVersionCode

Uma propriedade booliana que permite que o desenvolvedor reverta o cálculo versionCode de volta ao seu antigo comportamento anterior ao Xamarin.Android 8.2. Isso deve ser usado SOMENTE por desenvolvedores com aplicativos existentes na Google Play Store. É altamente recomendável que a nova propriedade $(AndroidVersionCodePattern) seja usada.

AndroidUseManagedDesignTimeResourceGenerator

Uma propriedade booleana que alternará as compilações de tempo de design para usar o analisador de recursos gerenciados em vez de aapt.

AndroidUseNegotiateAuthentication

Uma propriedade booleana que permite o suporte para autenticação NTLMv2/Negotiate no AndroidMessageHandler. O valor padrão é Falso.

Adicionado no .NET 7.

AndroidUseSharedRuntime

Essa propriedade está obsoleta e não deve ser usada.

AndroidVersionCode

Uma propriedade do MSBuild que pode ser usada como uma alternativa no /manifest/@android:versionCode AndroidManifest.xml arquivo. Para ativar esse recurso, você também deve ativar <GenerateApplicationManifest>true</GenerateApplicationManifest>o . Esse será o padrão daqui para frente no .NET 6.

Essa propriedade será ignorada se $(AndroidCreatePackagePerAbi) e $(AndroidVersionCodePattern) for usada.

@android:versionCode é um valor inteiro que deve ser incrementado para cada versão do Google Play. Consulte a documentação do Android para obter mais detalhes sobre os requisitos do /manifest/@android:versionCode.

AndroidVersionCodePattern

Uma propriedade de cadeia de caracteres que permite que o desenvolvedor personalize o no manifesto versionCode . Confira Criar um código de versão para o APK para obter informações sobre como decidir um versionCode.

Alguns exemplos: se abi for armeabi e versionCode no manifesto for 123, {abi}{versionCode} produzirá um versionCode de 1123 quando $(AndroidCreatePackagePerAbi) for True; caso contrário, gerará um valor de 123. Se abi é x86_64 e versionCode no manifesto é 44. Isso produzirá 544 quando $(AndroidCreatePackagePerAbi) for True; caso contrário, gerará um valor de 44.

Se nós incluíssemos uma cadeia de caracteres de formato de preenchimento esquerdo {abi}{versionCode:0000}, isso produziria 50044 porque estamos aplicando preenchimento esquerdo ao versionCode com 0. Como alternativa, você pode usar o preenchimento decimal, como {abi}{versionCode:D4} que faz o mesmo que o exemplo anterior.

Somente os formatos de cadeias de caracteres de preenchimento '0' e 'Dx' são compatíveis, já que o valor PRECISA ser um inteiro.

Itens chave pré-definidos

  • abi – Insere o abi de destino para o aplicativo

    • 2 – armeabi-v7a
    • 3 – x86
    • 4 – arm64-v8a
    • 5 – x86_64
  • minSDK – Insere o valor mínimo do SDK com suporte do AndroidManifest.xml ou 11 se nenhum estiver definido.

  • versionCode – Usa o código da versão diretamente do Properties\AndroidManifest.xml.

Você pode definir itens personalizados usando a propriedade $(AndroidVersionCodeProperties) (definida a seguir).

Por padrão o valor será definido como {abi}{versionCode:D6}. Se um desenvolvedor quiser manter o comportamento anterior, você poderá configurar a propriedade $(AndroidUseLegacyVersionCode) como true para substituir o padrão

AndroidVersionCodeProperties

Uma propriedade de cadeia de caracteres que permite ao desenvolvedor definir itens personalizados a serem usados com o $(AndroidVersionCodePattern). Eles estão na forma de um par key=value. Todos os itens no value devem ser valores inteiros. Por exemplo: screen=23;target=$(_AndroidApiLevel). Como você pode ver, você pode fazer uso de propriedades do MSBuild existentes ou personalizadas na cadeia de caracteres.

ApplicationId

Uma propriedade do MSBuild que pode ser usada como uma alternativa no /manifest/@package AndroidManifest.xml arquivo. Para ativar esse recurso, você também deve ativar <GenerateApplicationManifest>true</GenerateApplicationManifest>o . Esse será o padrão daqui para frente no .NET 6.

Consulte a documentação do Android para obter mais detalhes sobre os requisitos do /manifest/@package.

Título da Aplicação

Uma propriedade do MSBuild que pode ser usada como uma alternativa no /manifest/application/@android:label AndroidManifest.xml arquivo. Para ativar esse recurso, você também deve ativar <GenerateApplicationManifest>true</GenerateApplicationManifest>o . Esse será o padrão daqui para frente no .NET 6.

Consulte a documentação do Android para obter mais detalhes sobre os requisitos do /manifest/application/@android:label.

ApplicationVersion

Uma propriedade do MSBuild que pode ser usada como uma alternativa no /manifest/@android:versionName AndroidManifest.xml arquivo. Para ativar esse recurso, você também deve ativar <GenerateApplicationManifest>true</GenerateApplicationManifest>o . Esse será o padrão daqui para frente no .NET 6.

Consulte a documentação do Android para obter mais detalhes sobre os requisitos do /manifest/@android:versionName.

AotAssemblies

Uma propriedade booleana que determina se os assemblies serão ou não compilados antecipadamente em código nativo e incluídos em aplicativos. Essa propriedade é False por padrão.

Preterido no .NET 7. Em vez disso, migre para a nova $(RunAOTCompilation) propriedade do MSBuild, pois o suporte será $(AotAssemblies) removido em uma versão futura.

AProfUtilExtraOptions

Opções extras para passar para aprofutil.

AntesBuildAndroidAssetPacks

Os destinos do MSBuild listados nessa propriedade serão executados diretamente antes que os AssetPack itens sejam criados.

Adicionado no .NET 9

AntesGenerateAndroidManifest

Os destinos do MSBuild listados nesta propriedade serão executados diretamente antes _GenerateJavaStubsdo .

Configuração

Especifica a configuração de build a ser usada, como "Depurar" ou "Versão". A propriedade Configuration é usada para determinar os valores padrão de outras propriedades que determinam o comportamento de destino. Configurações adicionais podem ser criadas dentro de seu IDE.

Por padrão, a Debug configuração resultará no Install e SignAndroidPackage visa criar um pacote Android menor que requer a presença de outros arquivos e pacotes para operar.

A configuração padrão Release resultará no Install e SignAndroidPackage visa criar um pacote Android que seja autônomo e possa ser usado sem instalar outros pacotes ou arquivos.

DebugSymbols

Um valor booliano que determina se o pacote Android é depurável, em combinação com a $(DebugType) propriedade. Um pacote depurável contém símbolos de depuração, define o //application/@android:debuggable atributo como truee adiciona automaticamente o atributo INTERNET permissão para que um depurador possa anexar ao processo. Um aplicativo é depurável se DebugSymbols for True e DebugType for a cadeia de caracteres vazia ou Full.

DebugType

Especifica o tipo de símbolos de depuração a serem gerados como parte da compilação, o que também afeta se o aplicativo é depurável. Entre os valores possíveis estão:

  • Full: todos os símbolos são gerados. Se o DebugSymbols A propriedade MSBuild também Trueé , então o pacote Application é depurável.

  • PdbOnly: os símbolos "PDB" são gerados. O pacote de aplicativos não é depurável.

Se DebugType não está definida ou é uma cadeia de caracteres vazia, a propriedade DebugSymbols controla se o Aplicativo é depurável.

EmbedAssembliesIntoApk

Uma propriedade booliana que determina se os assemblies do aplicativo devem ou não ser inseridos no pacote Application.

Essa propriedade deve ser True para builds de versão e False para builds de depuração. Ele pode precisar ser True em builds de depuração se o Fast Deployment não é compatível com o dispositivo de destino.

Quando essa propriedade é False, então o $(AndroidFastDeploymentType) A propriedade MSBuild também controla o que será inserido no , o que pode afetar os .apktempos de implantação e recompilação.

HabilitarLLVM

Uma propriedade booleana que determina se o LLVM será ou não usado ao compilar assemblies antecipadamente em código nativo.

O Android NDK deve ser instalado para criar um projeto que tenha essa propriedade ativada.

Essa propriedade é False por padrão.

Essa propriedade é ignorada, a menos que a propriedade $(AotAssemblies) do MSBuild seja True.

Habilite o Proguard

Uma propriedade booleana que determina se o proguard é ou não executado como parte do processo de empacotamento para vincular o código Java.

Essa propriedade é False por padrão.

Quando True, @(ProguardConfiguration) os arquivos serão usados para controlar proguard a execução.

GenerateApplicationManifest

Habilita ou desabilita as seguintes propriedades do MSBuild que emitem valores no arquivo final AndroidManifest.xml :

O valor $(GenerateApplicationManifest) padrão é true.

JavaMaximumHeapSize

Especifica o valor do valor do parâmetro java-Xmx a ser usado ao construir o .dex arquivo como parte do processo de empacotamento. Se não for especificado, a opção -Xmx fornecerá java com um valor de 1G. Foi verificado que isso normalmente é necessário no Windows em comparação com outras plataformas.

Especificar essa propriedade é necessária se o _CompileDexdestino gera um java.lang.OutOfMemoryError.

Personalize o valor alterando:

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

Opções Java

Especifica as opções de linha de comando a serem passadas para java ao criar o .dex arquivo.

JarsignerTimestampAuthorityCertificateAlias

Essa propriedade permite especificar um alias no armazenamento de chaves para uma autoridade de registro de data e hora. Consulte a documentação do Java Signature Timestamp Support para obter mais detalhes.

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

JarsignerTimestampAuthorityUrl

Essa propriedade permite que você especifique uma URL para um serviço de autoridade de carimbo de data/hora. Isso pode ser usado para garantir que sua .apk assinatura inclua um carimbo de data/hora. Consulte a documentação do Java Signature Timestamp Support para obter mais detalhes.

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

LinkerDumpDependencies

Uma propriedade bool que permite a geração de arquivo de dependências do vinculador. Esse arquivo pode ser usado como entrada para a ferramenta illinkanalyzer.

O arquivo de dependências nomeado linker-dependencies.xml.gz é gravado no diretório do projeto. Em. NET5/6 é escrito ao lado dos assemblies vinculados no obj/<Configuration>/android<ABI>/linked diretório.

O valor padrão é Falso.

MandroidI18n

Especifica o suporte à internacionalização incluído no Aplicativo, como tabelas de agrupamento e classificação. O valor é uma lista separada por vírgula ou ponto e vírgula de um ou mais dos seguintes valores que não diferenciam maiúsculas e minúsculas:

  • None: não incluir nenhuma codificação adicional.

  • All: incluir todas as codificações disponíveis.

  • CJK: Inclua codificações chinesas, japonesas e coreanas, como japonês (EUC) [enc-jp, CP51932], japonês (Shift-JIS) [iso-2022-jp, shift_jis, CP932], japonês (JIS) [CP50220], chinês simplificado (GB2312 ) [gb2312, CP936], coreano (UHC) [ks_c_5601-1987, CP949], coreano (EUC) [euc-kr, CP51949], chinês tradicional (Big5) [big5, CP950] e chinês simplificado (GB18030) [GB18030, CP54936].

  • Oriente Médio: Inclua codificações do Oriente Médio, como turco (Windows) [iso-8859-9, CP1254], hebraico (Windows) [windows-1255, CP1255], árabe (Windows) [windows-1256, CP1256], árabe (ISO) [iso-8859-6, CP28596], hebraico (ISO) [iso-8859-8, CP28598], latim 5 (ISO) [iso-8859-9, CP28599] e hebraico (iso alternativo) [iso-8859-8, CP38598].

  • Outros: Incluir Outras codificações, como cirílico (Windows) [CP1251], báltico (Windows) [iso-8859-4, CP1257], vietnamita (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 tâmil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamês [x-iscii-as, CP57006], ISCII Oriya [x-iscii-ou, 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] e Tailandês (Windows) [CP874].

  • Raro: Inclua codificações raras, como IBM EBCDIC (turco) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (EUA-Canadá com euro) [CP1140], IBM EBCDIC (Alemanha com euro) [CP1141], IBM EBCDIC (Dinamarca/Noruega com euro) [CP1142], IBM EBCDIC (Finlândia/Suécia com euro) [CP1143], IBM EBCDIC (Itália com euro) [CP1144], IBM EBCDIC (América Latina/Espanha com euro) [CP1145], IBM EBCDIC (Reino Unido com Euro) [CP1146], IBM EBCDIC (França com Euro) [CP1147], IBM EBCDIC (Internacional com Euro) [CP1148], IBM EBCDIC (Islandês com Euro) [CP1149], IBM EBCDIC (Alemanha) [CP20273], IBM EBCDIC (Dinamarca/Noruega) [CP20277], IBM EBCDIC (Finlândia/Suécia) [CP20278], IBM EBCDIC (Itália) [CP20280], IBM EBCDIC (América Latina/Espanha) [CP20284], IBM EBCDIC (Reino Unido) [CP20285], IBM EBCDIC (japonês Katakana Extended) [CP20290], IBM EBCDIC (França) [CP20297], IBM EBCDIC (árabe) [CP20420], IBM EBCDIC (hebraico) [CP20424], IBM EBCDIC (islandês) [CP20871], IBM EBCDIC (cirílico - sérvio, búlgaro) [CP21025], IBM EBCDIC (EUA-Canadá) [CP37], IBM EBCDIC (internacional) [CP500], árabe (ASMO 708) [CP708], Europa Central (DOS) [CP852], cirílico (DOS) [CP855], turco (DOS) [CP857], Europa Ocidental (DOS com euro) [CP858], hebraico (DOS) [CP862], árabe (DOS) [CP864], russo (DOS) [CP866], grego (DOS) [CP869], IBM EBCDIC (latim 2) [CP870] e IBM EBCDIC (grego) [CP875].

  • Ocidental: inclui codificações ocidentais, como Europa Ocidental (Mac) [macintosh, CP10000], islandês (Mac) [x-mac-icelandic, CP10079], Europa Central (Windows) [iso-8859-2, CP1250], Europa Ocidental (Windows) [iso-8859-1, CP1252], Grego (Windows) [iso-8859-7, CP1253], Europa Central (ISO) [iso-8859-2, CP28592], Latim 3 (ISO) [iso-8859-3, CP28593], Grego (ISO) [iso-8859-7, CP28597], Latim 9 (ISO) [ISO-8859-15, CP28605], OEM Estados Unidos [CP437], Europa Ocidental (DOS) [CP850], Português (DOS) [CP860], Islandês (DOS) [CP861], Franco-Canadense (DOS) [CP863] e Nórdico (DOS) [CP865].

<MandroidI18n>West</MandroidI18n>

MonoAndroidResourcePrefix

Especifica um prefixo de caminho que é removido do início dos nomes de arquivo com uma ação Compilar de AndroidResource. Isso é para permitir a alteração do local em que os recursos estão localizados.

O valor padrão é Resources. Altere isso para res para a estrutura do projeto Java.

Arquivo MonoSymbolMono

Uma propriedade booleana que controla se .mSYM os artefatos são criados para uso posterior com mono-symbolicate, para extrair informações "reais" de nome de arquivo e número de linha de rastreamentos de pilha de versão.

Isso é True por padrão para aplicativos de "Versão" que têm símbolos de depuração ativados: $(EmbedAssembliesIntoApk) é True, $(DebugSymbols) é Verdadeiro, e $(Optimize) é Verdadeiro.

RunAOTCompilation

Uma propriedade booleana que determina se os assemblies serão ou não compilados antecipadamente em código nativo e incluídos em aplicativos. Essa propriedade é False por padrão para Debug builds e True por padrão para Release builds.

Essa propriedade do MSBuild substitui a $(AotAssemblies) propriedade do MSBuild do Xamarin.Android. Essa é a mesma propriedade usada para WASM do Blazor.