Processo de buildBuild Process

Visão geralOverview

O processo de build do Xamarin.Android é responsável por juntar tudo isto: gerar Resource.designer.cs, dar suporte a AndroidAsset, AndroidResource e outras ações de build, gerar wrappers que podem ser chamados pelo Android e gerar um .apk para execução em dispositivos Android.The Xamarin.Android build process is responsible for gluing everything together: generating Resource.designer.cs, supporting the AndroidAsset, AndroidResource, and other build actions, generating Android-callable wrappers, and generating a .apk for execution on Android devices.

Pacotes de aplicativosApplication Packages

Em termos gerais, há dois tipos de pacotes de aplicativos do Android (arquivos .apk) que o sistema de build do Xamarin.Android pode gerar:In broad terms, there are two types of Android application packages (.apk files) which the Xamarin.Android build system can generate:

  • Builds de versão, que são totalmente independentes e não requerem pacotes adicionais para executar.Release builds, which are fully self-contained and don't require additional packages to execute. Esses são os pacotes que seriam fornecidos para uma loja de aplicativos.These are the packages which would be provided to an App store.

  • Builds de depuração, que não o são.Debug builds, which are not.

Não coincidentemente, eles correspondem ao Configuration do MSBuild que produz o pacote.Not coincidentally, these match the MSBuild Configuration which produces the package.

Tempo de execução compartilhadoShared Runtime

O tempo de execução compartilhado é um par de pacotes Android adicionais que fornecem a biblioteca de classes base (mscorlib.dll, etc.) e a biblioteca de associações do Android (Mono.Android.dll, etc.).The shared runtime is a pair of additional Android packages which provide the Base Class Library (mscorlib.dll, etc.) and the Android binding library (Mono.Android.dll, etc.). Builds de depuração contam com o tempo de execução compartilhado em vez de incluir os assemblies da biblioteca de classes base e da biblioteca de associações dentro do pacote do aplicativo Android, permitindo que o pacote de depuração seja menor.Debug builds rely upon the shared runtime in lieu of including the Base Class Library and Binding assemblies within the Android application package, allowing the Debug package to be smaller.

O tempo de execução compartilhado pode ser desabilitado em builds de depuração, definindo a propriedade $(AndroidUseSharedRuntime) para False.The shared runtime may be disabled in Debug builds by setting the $(AndroidUseSharedRuntime) property to False.

Fast DeploymentFast Deployment

O Fast Deployment trabalha em conjunto com o tempo de execução compartilhado para reduzir ainda mais o tamanho do pacote do aplicativo Android.Fast deployment works in concert with the shared runtime to further shrink the Android application package size. Isso é feito não agrupando assemblies do aplicativo dentro do pacote.This is done by not bundling the app's assemblies within the package. Em vez disso, eles são copiados para o destino por meio de adb push.Instead, they are copied onto the target via adb push. Esse processo agiliza o ciclo de build/implantação/depuração porque se somente assemblies são alterados, o pacote não é reinstalado.This process speeds up the build/deploy/debug cycle because if only assemblies are changed, the package is not reinstalled. Em vez disso, apenas os assemblies atualizados são sincronizados novamente ao dispositivo de destino.Instead, only the updated assemblies are re-synchronized to the target device.

O Fast Deployment reconhecidamente falha em dispositivos que bloqueiam a sincronização de adb ao diretório /data/data/@PACKAGE_NAME@/files/.__override__.Fast deployment is known to fail on devices which block adb from synchronizing to the directory /data/data/@PACKAGE_NAME@/files/.__override__.

O Fast Deployment é habilitado por padrão e pode ser desabilitado em builds de depuração, definindo a propriedade $(EmbedAssembliesIntoApk) para True.Fast deployment is enabled by default, and may be disabled in Debug builds by setting the $(EmbedAssembliesIntoApk) property to True.

Projetos do MSBuildMSBuild Projects

O processo de build do Xamarin.Android baseia-se no MSBuild, que também é o formato de arquivo de projeto usado pelo Visual Studio para Mac e pelo Visual Studio.The Xamarin.Android build process is based on MSBuild, which is also the project file format used by Visual Studio for Mac and Visual Studio. Em geral, os usuários não precisarão editar os arquivos do MSBuild manualmente – o IDE cria projetos totalmente funcionais e os atualiza com eventuais alterações feitas, além de invocar destinos de build automaticamente conforme necessário.Ordinarily, users will not need to edit the MSBuild files by hand – the IDE creates fully functional projects and updates them with any changes made, and automatically invoke build targets as needed.

Usuários avançados talvez queiram realizar ações sem suporte na interface gráfica do IDE, portanto, o processo de build pode ser personalizado editando-se o arquivo de projeto diretamente.Advanced users may wish to do things not supported by the IDE's GUI, so the build process is customizable by editing the project file directly. Esta página documenta somente os recursos e personalizações específicos do Xamarin.Android – muitas outras coisas são possíveis com os itens, propriedades e destinos normais do MSBuild.This page documents only the Xamarin.Android-specific features and customizations – many more things are possible with the normal MSBuild items, properties and targets.

Destinos de buildBuild Targets

Os destinos de build a seguir são definidos para projetos de Xamarin.Android:The following build targets are defined for Xamarin.Android projects:

  • Build – compila o pacote.Build – Builds the package.

  • Clean – remove todos os arquivos gerados pelo processo de build.Clean – Removes all files generated by the build process.

  • Install – instala o pacote para o dispositivo padrão ou o dispositivo virtual.Install – Installs the package onto the default device or virtual device.

  • Uninstall – desinstala o pacote do dispositivo padrão ou do dispositivo virtual.Uninstall – Uninstalls the package from the default device or virtual device.

  • SignAndroidPackage – cria e assina o pacote (.apk).SignAndroidPackage – Creates and signs the package (.apk). Use com /p:Configuration=Release para gerar pacotes de "Versão" independentes.Use with /p:Configuration=Release to generate self-contained "Release" packages.

  • UpdateAndroidResources – atualiza o arquivo Resource.designer.cs.UpdateAndroidResources – Updates the Resource.designer.cs file. Esse destino geralmente é chamado pelo IDE quando novos recursos são adicionados ao projeto.This target is usually called by the IDE when new resources are added to the project.

Propriedades de buildBuild Properties

Propriedades do MSBuild controlam o comportamento dos destinos.MSBuild properties control the behavior of the targets. Elas são especificadas no arquivo de projeto, por exemplo, MyApp.csproj, dentro de um elemento PropertyGroup do MSBuild.They are specified within the project file, e.g. MyApp.csproj, within an MSBuild PropertyGroup element.

  • Configuration – especifica a configuração de build a ser usada, como "Debug" ou "Release".Configuration – Specifies the build configuration to use, such as "Debug" or "Release". A propriedade Configuration é usada para determinar os valores padrão de outras propriedades que determinam o comportamento de destino.The Configuration property is used to determine default values for other properties which determine target behavior. Configurações adicionais podem ser criadas dentro de seu IDE.Additional configurations may be created within your IDE.

    Por padrão, a configuração Debug fará com que os destinos Install e SignAndroidPackage criem um pacote do Android menor, que exigirá a presença de outros arquivos e pacotes para funcionar.By default, the Debug configuration will result in the Install and SignAndroidPackage targets creating a smaller Android package which requires the presence of other files and packages to operate.

    A configuração padrão Release fará com que os destinos Install e SignAndroidPackage criem um pacote Android autônomo, que pode ser usado sem a instalação de outros pacotes ou arquivos.The default Release configuration will result in the Install and SignAndroidPackage targets creating an Android package which is stand-alone, and may be used without installing any other packages or files.

  • DebugSymbols – um valor booliano que determina se o pacote Android é depurável, em combinação com a propriedade $(DebugType).DebugSymbols – A boolean value which determines whether the Android package is debuggable, in combination with the $(DebugType) property. Um pacote depurável contém símbolos de depuração, define o atributo //application/@android:debuggable para true e adiciona automaticamente a permissão INTERNET para um depurador possa ser anexado ao processo.A debuggable package contains debug symbols, sets the //application/@android:debuggable attribute to true, and automatically adds the INTERNET permission so that a debugger can attach to the process. Um aplicativo é depurável se DebugSymbols é True e DebugType é a cadeia de caracteres vazia ou Full.An application is debuggable if DebugSymbols is True and DebugType is either the empty string or Full.

  • DebugType – especifica o tipo de símbolos de depuração para gerar como parte do build, o que também afeta se o aplicativo é ou não depurável.DebugType – Specifies the type of debug symbols to generate as part of the build, which also impacts whether the Application is debuggable. Os possíveis valores incluem:Possible values include:

    • Full: todos os símbolos são gerados.Full: Full symbols are generated. Se a propriedade do MSBuild DebugSymbols também é True, o pacote do aplicativo é depurável.If the DebugSymbols MSBuild property is also True, then the Application package is debuggable.

    • PdbOnly: os símbolos "PDB" são gerados.PdbOnly: "PDB" symbols are generated. O pacote do aplicativo não será depurável.The Application package will not be debuggable.

    Se DebugType não está definida ou é uma cadeia de caracteres vazia, a propriedade DebugSymbols controla se o Aplicativo é depurável.If DebugType is not set or is the empty string, then the DebugSymbols property controls whether or not the Application is debuggable.

    • AndroidGenerateLayoutBindings – Habilita a geração do code-behind de layout se definido como true ou desabilita completamente se definido como false.AndroidGenerateLayoutBindings – Enables generation of layout code-behind if set to true or disables it completely if set to false. O valor padrão é false.The default value is false.

Propriedades de instalaçãoInstall Properties

Propriedades de instalação controlam o comportamento dos destinos Install e Uninstall.Install properties control the behavior of the Install and Uninstall targets.

  • AdbTarget – especifica o dispositivo de destino do Android no qual o pacote Android pode ser instalado ou do qual ele pode ser removido.AdbTarget – Specifies the Android target device the Android package may be installed to or removed from. O valor dessa propriedade o mesmo da opção de dispositivo de destino adb:The value of this property is the same as the adb Target Device option:

    # Install package onto emulator via -e
    # Use `/Library/Frameworks/Mono.framework/Commands/msbuild` on OS X
    MSBuild /t:Install ProjectName.csproj /p:AdbTarget=-e
    

Propriedades de empacotamentoPackaging Properties

Propriedades de empacotamento controlam a criação do pacote Android e são usadas pelos destinos Install e SignAndroidPackage.Packaging properties control the creation of the Android package, and are used by the Install and SignAndroidPackage targets. As Propriedades de Assinatura também são relevantes ao empacotar aplicativos de Versão.The Signing Properties are also relevant when packaging Release applications.

  • AndroidApkSignerAdditionalArguments – Uma propriedade de cadeia de caracteres que permite ao desenvolvedor fornecer argumentos adicionais à ferramenta apksigner.AndroidApkSignerAdditionalArguments – A string property which allows the developer to provide additional arguments to the apksigner tool.

    Adicionado no Xamarin.Android 8.2.Added in Xamarin.Android 8.2.

  • AndroidApkSigningAlgorithm – Um valor de cadeia de caracteres que especifica o algoritmo de assinatura para usar com jarsigner -sigalg.AndroidApkSigningAlgorithm – A string value which specifies the signing algorithm to use with jarsigner -sigalg.

    O valor padrão é md5withRSA.The default value is md5withRSA.

    Adicionado no Xamarin.Android 8.2.Added in Xamarin.Android 8.2.

  • AndroidApplication – um valor booliano que indica se o projeto é para um aplicativo Android (True) ou para um projeto de biblioteca Android (False ou ausente).AndroidApplication – A boolean value that indicates whether the project is for an Android Application (True) or for an Android Library Project (False or not present).

    Apenas um projeto com <AndroidApplication>True</AndroidApplication> pode estar presente em um pacote Android.Only one project with <AndroidApplication>True</AndroidApplication> may be present within an Android package. (Infelizmente isso é ainda não verificado, que pode resultar em erros sutis e bizarros relacionados aos recursos do Android.)(Unfortunately this is not yet verified, which can result in subtle and bizarre errors regarding Android resources.)

  • AndroidApplicationJavaClass – o nome de classe Java completo a ser usado no lugar de android.app.Application quando uma classe herda de Android.App.Application.AndroidApplicationJavaClass – The full Java class name to use in place of android.app.Application when a class inherits from Android.App.Application.

    Geralmente, essa propriedade é definida por outras propriedades, como a propriedade $(AndroidEnableMultiDex) do MSBuild.This property is generally set by other properties, such as the $(AndroidEnableMultiDex) MSBuild property.

    Adicionado no Xamarin.Android 6.1.Added in Xamarin.Android 6.1.

  • AndroidBuildApplicationPackage – um valor booliano que indica se o pacote (.apk) deve ou não ser criado e assinado.AndroidBuildApplicationPackage – A boolean value that indicates whether to create and sign the package (.apk). Definir esse valor como True é equivalente a usar o destino de build SignAndroidPackage.Setting this value to True is equivalent to using the SignAndroidPackage build target.

    O suporte para essa propriedade foi adicionado após o Xamarin.Android 7.1.Support for this property was added after Xamarin.Android 7.1.

    Essa propriedade é False por padrão.This property is False by default.

  • AndroidDexTool – uma propriedade de estilo de enumeração com os valores válidos dx ou d8.AndroidDexTool – An enum-style property with valid values of dx or d8. Indica qual compilador dex do Android é usado durante o processo de build do Xamarin.Android.Indicates which Android dex compiler is used during the Xamarin.Android build process. Atualmente, o padrão é dx.Currently defaults to dx. Para obter mais informações, confira nossa documentação sobre o D8 e R8.For further information see our documentation on D8 and R8.

  • AndroidEnableDesugar – uma propriedade booliana que determina se desugar está habilitado.AndroidEnableDesugar – A boolean property that determines if desugar is enabled. O Android não é compatível com todos os recursos de Java 8 no momento, e a cadeia de ferramentas padrão implementa novos recursos de linguagem ao executar transformações de código de bytes, chamadas desugar, na saída do compilador javac.Android does not currently support all Java 8 features, and the default toolchain implements the new language features by performing bytecode transformations, called desugar, on the output of the javac compiler. O padrão será False se AndroidDexTool=dx for usado e será True se AndroidDexTool=d8 for usado.Defaults to False if using AndroidDexTool=dx and defaults to True if using AndroidDexTool=d8.

  • AndroidEnableMultiDex – uma propriedade booliana que determina se o suporte a Multi-Dex será usado no .apk final.AndroidEnableMultiDex – A boolean property that determines whether or not multi-dex support will be used in the final .apk.

    O suporte para essa propriedade foi adicionado no Xamarin.Android 5.1.Support for this property was added in Xamarin.Android 5.1.

    Essa propriedade é False por padrão.This property is False by default.

  • AndroidEnablePreloadAssemblies – Uma propriedade booliana que controla se todos os assemblies gerenciados agrupados dentro do pacote de aplicativos são ou não carregados durante a inicialização do processo.AndroidEnablePreloadAssemblies – A boolean property which controls whether or not all managed assemblies bundled within the application package are loaded during process startup or not.

    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.When set to True, all assemblies bundled within the application package will be loaded during process startup, before any application code is invoked. Esse processo é consistente com aquilo que o Xamarin.Android fazia em versões anteriores ao Xamarin.Android 9.2.This is consistent with what Xamarin.Android did in releases prior to Xamarin.Android 9.2.

    Quando definido como False, os assemblies somente serão carregados conforme necessário.When set to False, assemblies will only be loaded on an as-needed basis. Isso faz com que os aplicativos iniciem mais rapidamente e também é mais consistente com a semântica da área de trabalho do .NET.This allows applications to startup faster, and is also more consistent with desktop .NET semantics. 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.To see the time savings, set the debug.mono.log System Property to include timing, and look for the Finished loading assemblies: preloaded message within adb logcat.

    Os aplicativos ou as bibliotecas que usam injeção de dependência podem exigir que essa propriedade seja True se, por sua vez, exigirem que AppDomain.CurrentDomain.GetAssemblies() retorne todos os assemblies no pacote de aplicativos, mesmo se o assembly não fosse necessário.Applications or libraries which use dependency injection may require that this property be True if they in turn require that AppDomain.CurrentDomain.GetAssemblies() return all assemblies within the application bundle, even if the assembly wouldn't otherwise have been needed.

    Por padrão, o valor será definido como True.By default this value will be set to True.

    Adicionado no Xamarin.Android 9.2.Added in Xamarin.Android 9.2.

  • AndroidEnableSGenConcurrent – uma propriedade booliana que determina se o coletor de GC simultâneo do Mono será ou não usado.AndroidEnableSGenConcurrent – A boolean property that determines whether or not Mono's concurrent GC collector will be used.

    O suporte para essa propriedade foi adicionado no Xamarin.Android 7.2.Support for this property was added in Xamarin.Android 7.2.

    Essa propriedade é False por padrão.This property is False by default.

  • AndroidErrorOnCustomJavaObject – Uma propriedade booliana que determina se os tipos podem implementar Android.Runtime.IJavaObject sem também herdar de Java.Lang.Object ou Java.Lang.Throwable:AndroidErrorOnCustomJavaObject – A boolean property that determines whether types may implement Android.Runtime.IJavaObject without also inheriting from Java.Lang.Object or Java.Lang.Throwable:

    class BadType : IJavaObject {
        public IntPtr Handle {
            get {return IntPtr.Zero;}
        }
    
        public void Dispose()
        {
        }
    }
    

    quando for True, esses tipos gerarão um erro XA4212, caso contrário, um aviso XA4212 será gerado.When True, such types will generate an XA4212 error, otherwise a XA4212 warning will be generated.

    O suporte para essa propriedade foi adicionado no Xamarin.Android 8.1.Support for this property was added in Xamarin.Android 8.1.

    Essa propriedade é True por padrão.This property is True by default.

  • AndroidFastDeploymentType – Uma lista de valores separados por : (dois pontos) para controlar quais tipos podem ser implantados no diretório da Implantação Rápida no dispositivo de destino quando a propriedade $(EmbedAssembliesIntoApk) do MSBuild é False.AndroidFastDeploymentType – A : (colon)-separated list of values to control what types can be deployed to the Fast Deployment directory on the target device when the $(EmbedAssembliesIntoApk) MSBuild property is False. Se um recurso é implantado por Fast Deployment, ele não é inserido no .apk gerado, o que pode acelerar os tempos de implantação.If a resource is fast deployed, it is not embedded into the generated .apk, which can speed up deployment times. (Quanto mais rápido ele é implantado, menor a frequência com que o .apk precisa ser recriado, acelerando assim o processo de instalação.) Os valores válidos incluem:(The more that is fast deployed, then the less frequently the .apk needs to be rebuilt, and the install process can be faster.) Valid values include:

    • Assemblies: implantar assemblies do aplicativo.Assemblies: Deploy application assemblies.

    • Dexes: implantar arquivos .dex, recursos do Android e ativos do Android.Dexes: Deploy .dex files, Android Resources, and Android Assets. Esse valor pode ser usado somente em dispositivos que executam o Android 4.4 ou posterior (API-19).This value can only be used on devices running Android 4.4 or later (API-19).

    O valor padrão é Assemblies.The default value is Assemblies.

    Experimental.Experimental. Adicionado no Xamarin.Android 6.1.Added in Xamarin.Android 6.1.

  • AndroidGenerateJniMarshalMethods – uma propriedade booliana que permite a geração dos métodos de marshal de JNI como parte do processo de build.AndroidGenerateJniMarshalMethods – A bool property which enables generating of JNI marshal methods as part of the build process. Ela reduz consideravelmente o uso de System.Reflection no código do auxiliar de associação.This greatly reduces the System.Reflection usage in the binding helper code.

    Por padrão, ela será definida como False.By default this will be set to False. Se os desenvolvedores desejarem usar o novo recurso de métodos de marshal JNI, eles poderão definirIf the developers wish to use the new JNI marshal methods feature, they can set

    <AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
    

    no .csproj deles.in their .csproj. Como alternativa, forneça a propriedade na linha de comando por meio deAlternatively provide the property on the command line via

    /p:AndroidGenerateJniMarshalMethods=True
    

    Experimental.Experimental. Adicionado no Xamarin.Android 9.2.Added in Xamarin.Android 9.2. O valor padrão é False.The default value is False.

  • AndroidGenerateJniMarshalMethodsAdditionalArguments – uma propriedade de cadeia de caracteres que pode ser usada para adicionar mais parâmetros à invocação de jnimarshalmethod-gen.exe.AndroidGenerateJniMarshalMethodsAdditionalArguments – A string property which can be used to add additional parameters to the jnimarshalmethod-gen.exe invocation. Isso é útil para a depuração, para que opções como -v, -d ou --keeptemp possam ser usadas.This is useful for debugging, so that options such as -v, -d, or --keeptemp can be used.

    O valor padrão é uma cadeia de caracteres vazia.Default value is empty string. Ele pode ser definido no arquivo .csproj ou na linha de comando.It can be set in the .csproj file or on the command line. Por exemplo:For example:

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

    ou:or:

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

    Adicionado no Xamarin.Android 9.2.Added in Xamarin.Android 9.2.

  • AndroidHttpClientHandlerType – Controla a implementação padrão System.Net.Http.HttpMessageHandler que será usada pelo construtor padrão System.Net.Http.HttpClient.AndroidHttpClientHandlerType – Controls the default System.Net.Http.HttpMessageHandler implementation which will be used by the System.Net.Http.HttpClient default constructor. O valor é um nome de tipo qualificado pelo assembly de uma subclasse HttpMessageHandler, adequado para usar com System.Type.GetType(string).The value is an assembly-qualified type name of an HttpMessageHandler subclass, suitable for use with System.Type.GetType(string).

    O valor padrão é System.Net.Http.HttpClientHandler, System.Net.Http.The default value is System.Net.Http.HttpClientHandler, System.Net.Http.

    Isso pode ser substituído para que contenha Xamarin.Android.Net.AndroidClientHandler, que usa as APIs Java para Android para executar solicitações de rede.This may be overridden to instead contain Xamarin.Android.Net.AndroidClientHandler, which uses the Android Java APIs to perform network requests. Isso permite acessar as URLs TLS 1.2 quando a versão do Android subjacente dá suporte ao TLS 1.2.This allows accessing TLS 1.2 URLs when the underlying Android version supports TLS 1.2.
    Somente versões Android 5.0 e posteriores fornecem suporte confiável ao TLS 1.2 por meio de Java.Only Android 5.0 and later reliably provide TLS 1.2 support through Java.

    Observação: Se o suporte a TLS 1.2 for necessário nas versões do Android anteriores à 5.0 ou com o System.Net.WebClient e as APIs relacionadas, o $(AndroidTlsProvider) deverá ser usado.Note: If TLS 1.2 support is required on Android versions prior to 5.0, or if TLS 1.2 support is required with the System.Net.WebClient and related APIs, then $(AndroidTlsProvider) should be used.

    Observação: o suporte para esta propriedade funciona por meio da definição da variável de ambiente XA_HTTP_CLIENT_HANDLER_TYPE.Note: Support for this property works by setting the XA_HTTP_CLIENT_HANDLER_TYPE environment variable. Um valor $XA_HTTP_CLIENT_HANDLER_TYPE encontrado em um arquivo com uma ação de build de @(AndroidEnvironment) terá precedência.A $XA_HTTP_CLIENT_HANDLER_TYPE value found in a file with a Build action of @(AndroidEnvironment) will take precedence.

    Adicionado no Xamarin.Android 6.1.Added in Xamarin.Android 6.1.

  • AndroidLinkMode – especifica qual tipo de vinculação deve ser realizada em assemblies contidos no pacote Android.AndroidLinkMode – Specifies which type of linking should be performed on assemblies contained within the Android package. Usado somente em projetos de aplicativo Android.Only used in Android Application projects. O valor padrão é SdkOnly.The default value is SdkOnly. Os valores válidos são:Valid values are:

    • Nenhum: não será tentada nenhuma vinculação.None: No linking will be attempted.

    • SdkOnly: a vinculação será executada apenas nas bibliotecas de classe base, não nos assemblies do usuário.SdkOnly: Linking will be performed on the base class libraries only, not user's assemblies.

    • Full: a vinculação será executada nas bibliotecas de classe base e nos assemblies do usuário.Full: Linking will be performed on base class libraries and user assemblies.

      Observação

      o uso de um valor AndroidLinkMode definido como Full normalmente resulta em aplicativos com falha, principalmente quando a reflexão é usada.Using an AndroidLinkMode value of Full often results in broken apps, particularly when Reflection is used. Evite usar isso, a menos que você realmente saiba o que está fazendo.Avoid unless you really know what you're doing.

    <AndroidLinkMode>SdkOnly</AndroidLinkMode>
    
  • AndroidLinkSkip – 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.AndroidLinkSkip – Specifies a semicolon-delimited (;) list of assembly names, without file extensions, of assemblies that should not be linked. Usado somente em projetos de aplicativo Android.Only used within Android Application projects.

    <AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
    
  • AndroidLinkTool – uma propriedade de estilo de enumeração com os valores válidos proguard ou r8.AndroidLinkTool – An enum-style property with valid values of proguard or r8. Indica qual redutor de código é usado para o código Java.Indicates which code shrinker is used for Java code. Atualmente, o padrão é uma cadeia de caracteres vazia ou proguard quando $(AndroidEnableProguard) é True.Currently defaults to an empty string, or proguard if $(AndroidEnableProguard) is True. Para obter mais informações, confira nossa documentação sobre o D8 e R8.For further information see our documentation on D8 and R8.

  • AndroidLintEnabled – Uma propriedade booliana que permite ao desenvolvedor executar a ferramenta lint do Android como parte do processo de empacotamento.AndroidLintEnabled – A bool property which allows the developer to run the android lint tool as part of the packaging process.

    • AndroidLintEnabledIssues – Uma lista, separada por vírgulas, de problemas de lint a serem habilitados.AndroidLintEnabledIssues – A comma separated list of lint issues to enable.

    • AndroidLintDisabledIssues – uma lista, separada por vírgulas, de problemas de lint a serem desabilitados.AndroidLintDisabledIssues – A comma separated list of lint issues to disable.

    • AndroidLintCheckIssues – Uma lista, separada por vírgulas, de problemas de lint a serem verificados.AndroidLintCheckIssues – A comma separated list of lint issues to check. Observação: somente esses problemas serão verificados.Note: only these issues will be checked.

    • AndroidLintConfig – essa é uma ação de build para um arquivo de configuração de estilo de lint.AndroidLintConfig – This is a Build action for a lint style config file. Ela pode ser usada para habilitar/desabilitar problemas a serem verificados.This can be used to enabled/disable issues to check. Vários arquivos podem usar essa ação de build pois seu conteúdo será mesclado.Multiple files can use this build action as their contents will be merged.

    Confira a Ajuda do Lint para obter mais detalhes sobre as ferramentas lint do Android.See Lint Help for more details on the android lint tooling.

  • AndroidManagedSymbols – uma propriedade booliana que controla se pontos de sequência são gerados para que o nome do arquivo e as informações de número de linha possam ser extraídos dos rastreamentos de pilha Release.AndroidManagedSymbols – A boolean property that controls whether sequence points are generated so that file name and line number information can be extracted from Release stack traces.

    Adicionado no Xamarin.Android 6.1.Added in Xamarin.Android 6.1.

  • AndroidManifest – especifica um nome de arquivo a ser usado como modelo para o AndroidManifest.xml do aplicativo.AndroidManifest – Specifies a filename to use as the template for the app's AndroidManifest.xml. Durante o build, quaisquer outros valores necessários serão mesclados para produzir o AndroidManifest.xml propriamente dito.During the build, any other necessary values will be merged into to produce the actual AndroidManifest.xml. O $(AndroidManifest) deve conter o nome do pacote no atributo /manifest/@package.The $(AndroidManifest) must contain the package name in the /manifest/@package attribute.

  • AndroidMultiDexClassListExtraArgs – Uma propriedade de cadeia de caracteres que permite aos desenvolvedores passarem argumentos adicionais para o com.android.multidex.MainDexListBuilder ao gerar o arquivo multidex.keep.AndroidMultiDexClassListExtraArgs – A string property which allows developers to pass additional arguments to the com.android.multidex.MainDexListBuilder when generating the multidex.keep file.

    Um caso específico é se você estiver recebendo o erro a seguir durante a compilação de dx.One specific case is if you are getting the following error during the dx compilation.

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

    Se você estiver recebendo esse erro, adicione o seguinte ao .csproj.If you are getting this error you can add the following to the .csproj.

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

    Assim, a etapa dx poderá ter êxito.this should allow the dx step to succeed.

    Adicionado no Xamarin.Android 8.3.Added in Xamarin.Android 8.3.

  • AndroidR8JarPath – o caminho para r8.jar a ser usado com o compilador dex r8 e o redutor.AndroidR8JarPath – The path to r8.jar for use with the r8 dex-compiler and shrinker. O padrão é um caminho na instalação do Xamarin.Android.Defaults to a path in the Xamarin.Android installation. Para obter mais informações, confira nossa documentação sobre o D8 e R8.For further information see our documentation on D8 and R8.

  • AndroidSdkBuildToolsVersion – o pacote de ferramentas de build do Android SDK fornece as ferramentas aapt e zipalign, entre outras.AndroidSdkBuildToolsVersion – The Android SDK build-tools package provides the aapt and zipalign tools, among others. Várias versões diferentes do pacote de ferramentas de build podem ser instaladas simultaneamente.Multiple different versions of the build-tools package may be installed simultaneously. 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.The build-tools package chosen for packaging is done by checking for and using a "preferred" build-tools version if it is present; if the "preferred" version is not present, then the highest versioned installed build-tools package is used.

    A propriedade do MSBuild $(AndroidSdkBuildToolsVersion) contém a versão das ferramentas de build preferencial.The $(AndroidSdkBuildToolsVersion) MSBuild property contains the preferred build-tools version. O sistema de build do Xamarin.Android fornecerá um valor padrão em Xamarin.Android.Common.targets, que poderá ser substituído no arquivo de projeto para escolher uma versão de ferramentas de build alternativa se, por exemplo, o aapt mais recente estiver falhando enquanto uma versão anterior do aapt sabidamente funciona.The Xamarin.Android build system provides a default value in Xamarin.Android.Common.targets, and the default value may be overridden within your project file to choose an alternate build-tools version, if (for example) the latest aapt is crashing out while a previous aapt version is known to work.

  • AndroidSupportedAbis – uma propriedade de cadeia de caracteres que contém uma lista delimitada por ponto e vírgula (;) de ABIs que devem ser incluídos no .apk.AndroidSupportedAbis – A string property that contains a semicolon (;)-delimited list of ABIs which should be included into the .apk.

    Os valores compatíveis incluem:Supported values include:

    • armeabi-v7a
    • x86
    • arm64-v8a: requer o Xamarin.Android 5.1 e posterior.arm64-v8a: Requires Xamarin.Android 5.1 and later.
    • x86_64: requer o Xamarin.Android 5.1 e posterior.x86_64: Requires Xamarin.Android 5.1 and later.
  • AndroidTlsProvider – um valor de cadeia de caracteres que especifica qual provedor TLS deve ser usado em um aplicativo.AndroidTlsProvider – A string value which specifies which TLS provider should be used in an application. Os possíveis valores são:Possible values are:

    • btls: use Boring SSL para a comunicação TLS com HttpWebRequest.btls: Use Boring SSL for TLS communication with HttpWebRequest. Isso permite usar o TLS 1.2 em todas as versões do Android.This allows use of TLS 1.2 on all Android versions.

    • legacy: use a implementação SSL gerenciada histórica para interação na rede.legacy: Use the historical managed SSL implementation for network interaction. Isso não é compatível com a TLS 1.2.This does not support TLS 1.2.

    • default: permitir Mono para escolher o provedor TLS padrão.default: Allow Mono to choose the default TLS provider. Isto é equivalente a legacy, mesmo no Xamarin.Android 7.3.This is equivalent to legacy, even in Xamarin.Android 7.3.
      Observação: é improvável que esse valor apareça nos valores de .csproj, pois o valor "Padrão" do IDE resulta na remoção da propriedade $(AndroidTlsProvider).Note: This value is unlikely to appear in .csproj values, as the IDE "Default" value results in removal of the $(AndroidTlsProvider) property.

    • Não definido/a cadeia de caracteres está vazia: no Xamarin.Android 7.1, isso é equivalente a legacy.Unset/the empty string: In Xamarin.Android 7.1, this is equivalent to legacy.
      No In Xamarin.Android 7.3, isso é equivalente a btls.In Xamarin.Android 7.3, this is equivalent to btls.

    O valor padrão é a cadeia de caracteres vazia.The default value is the empty string.

    Adicionado no Xamarin.Android 7.1.Added in Xamarin.Android 7.1.

  • AndroidUseApkSigner – Uma propriedade booliana que permite ao desenvolvedor usar a ferramenta apksigner em vez da jarsigner.AndroidUseApkSigner – A bool property which allows the developer to use the to the apksigner tool rather than the jarsigner.

    Adicionado no Xamarin.Android 8.2.Added in Xamarin.Android 8.2.

  • AndroidUseLegacyVersionCode – Uma propriedade booliana que permitirá ao desenvolvedor reverter o cálculo versionCode para o comportamento anterior do Xamarin.Android 8.2.AndroidUseLegacyVersionCode – A boolean property will allows the developer to revert the versionCode calculation back to its old pre Xamarin.Android 8.2 behavior. Isso deve ser usado SOMENTE por desenvolvedores com aplicativos existentes na Google Play Store.This should ONLY be used for developers with existing applications in the Google Play Store. É altamente recomendável que a nova propriedade $(AndroidVersionCodePattern) seja usada.It is highly recommended that the new $(AndroidVersionCodePattern) property is used.

    Adicionado no Xamarin.Android 8.2.Added in Xamarin.Android 8.2.

  • AndroidUseManagedDesignTimeResourceGenerator – Uma propriedade booliana que alterna os builds de tempo de design para usar o analisador de recurso gerenciado em vez de aapt.AndroidUseManagedDesignTimeResourceGenerator – A boolean property which will switch over the design time builds to use the managed resource parser rather than aapt.

    Adicionado no Xamarin.Android 8.1.Added in Xamarin.Android 8.1.

  • AndroidUseSharedRuntime – uma propriedade booliana que determina se os pacotes de tempo de execução compartilhado são necessários para executar o aplicativo no dispositivo de destino.AndroidUseSharedRuntime – A boolean property that is determines whether the shared runtime packages are required in order to run the Application on the target device. Depender dos pacotes de tempo de execução compartilhado permite que o pacote do aplicativo seja menor, acelerando o processo de criação e implantação de pacote e resultando em um ciclo de build/implantação/depuração mais rápido.Relying on the shared runtime packages allows the Application package to be smaller, speeding up the package creation and deployment process, resulting in a faster build/deploy/debug turnaround cycle.

    Essa propriedade deve ser True para builds de depuração e False para projetos de versão.This property should be True for Debug builds, and False for Release projects.

  • AndroidVersionCodePattern – uma propriedade de cadeia de caracteres que permite ao desenvolvedor personalizar o versionCode no manifesto.AndroidVersionCodePattern – A string property which allows the developer to customize the versionCode in the manifest. Confira Criar um código de versão para o APK para obter informações sobre como decidir um versionCode.See Creating the Version Code for the APK for information on deciding a 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.Some examples, if abi is armeabi and versionCode in the manifest is 123, {abi}{versionCode} will produce a versionCode of 1123 when $(AndroidCreatePackagePerAbi) is True, otherwise will produce a value of 123. Se abi é x86_64 e versionCode no manifesto é 44.If abi is x86_64 and versionCode in the manifest is 44. Isso produzirá 544 quando $(AndroidCreatePackagePerAbi) for True; caso contrário, gerará um valor de 44.This will produce 544 when $(AndroidCreatePackagePerAbi) is True, otherwise will produce a value of 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.If we include a left padding format string {abi}{versionCode:0000}, it would produce 50044 because we are left padding the versionCode with 0. Como alternativa, você pode usar o preenchimento decimal, como {abi}{versionCode:D4}Alternatively, you can use the decimal padding such as {abi}{versionCode:D4} que tem o mesmo resultado do exemplo anterior.which does the same as the previous example.

    Somente os formatos de cadeias de caracteres de preenchimento '0' e 'Dx' são compatíveis, já que o valor PRECISA ser um inteiro.Only '0' and 'Dx' padding format strings are supported since the value MUST be an integer.

    Itens chave pré-definidosPre-defined key items

    • abi – Insere a abi direcionada para o aplicativoabi – Inserts the targeted abi for the app

      • 2 – armeabi-v7a2 – armeabi-v7a
      • 3 – x863 – x86
      • 4 – arm64-v8a4 – arm64-v8a
      • 5 – x86_645 – x86_64
    • minSDK – insere o valor mínimo compatível do SDK encontrado no AndroidManifest.xml, ou então 11 se não há nenhum definido.minSDK – Inserts the minimum supported Sdk value from the AndroidManifest.xml or 11 if none is defined.

    • versionCode – Usa o código da versão diretamente do Properties\AndroidManifest.xml.versionCode – Uses the version code directly from Properties\AndroidManifest.xml.

    Você pode definir itens personalizados usando a propriedade $(AndroidVersionCodeProperties) (definida a seguir).You can define custom items using the $(AndroidVersionCodeProperties) property (defined next).

    Por padrão o valor será definido como {abi}{versionCode:D6}.By default the value will be set to {abi}{versionCode:D6}. Se um desenvolvedor quiser manter o comportamento anterior, você poderá configurar a propriedade $(AndroidUseLegacyVersionCode) como true para substituir o padrãoIf a developer wants to keep the old behavior you can override the default by setting the $(AndroidUseLegacyVersionCode) property to true

    Adicionado no Xamarin.Android 7.2.Added in Xamarin.Android 7.2.

  • AndroidVersionCodeProperties – Uma propriedade de cadeia de caracteres que permite ao desenvolvedor definir itens personalizados para usar com o AndroidVersionCodePattern.AndroidVersionCodeProperties – A string property which allows the developer to define custom items to use with the AndroidVersionCodePattern. Eles estão na forma de um par key=value.They are in the form of a key=value pair. Todos os itens no value devem ser valores inteiros.All items in the value should be integer values. Por exemplo: screen=23;target=$(_AndroidApiLevel).For example: screen=23;target=$(_AndroidApiLevel). Como você pode ver, você pode fazer uso de propriedades do MSBuild existentes ou personalizadas na cadeia de caracteres.As you can see you can make use of existing or custom MSBuild properties in the string.

    Adicionado no Xamarin.Android 7.2.Added in Xamarin.Android 7.2.

  • AotAssemblies – uma propriedade booliana que determina se os assemblies serão ou não compilados Ahead of Time em código nativo e incluídos no .apk.AotAssemblies – A boolean property that determines whether or not assemblies will be Ahead-of-Time compiled into native code and included in the .apk.

    O suporte para essa propriedade foi adicionado no Xamarin.Android 5.1.Support for this property was added in Xamarin.Android 5.1.

    Essa propriedade é False por padrão.This property is False by default.

  • EmbedAssembliesIntoApk – uma propriedade booliana que determina se os assemblies do aplicativo devem ser inseridos no pacote do aplicativo.EmbedAssembliesIntoApk – A boolean property that determines whether or not the app's assemblies should be embedded into the Application package.

    Essa propriedade deve ser True para builds de versão e False para builds de depuração.This property should be True for Release builds and False for Debug builds. Ele pode precisar ser True em builds de depuração se o Fast Deployment não é compatível com o dispositivo de destino.It may need to be True in Debug builds if Fast Deployment doesn't support the target device.

    Quando essa propriedade é False, a propriedade $(AndroidFastDeploymentType) do MSBuild também controla o que será inserido no .apk, o que pode afetar os tempos de implantação e de recompilação.When this property is False, then the $(AndroidFastDeploymentType) MSBuild property also controls what will be embedded into the .apk, which can impact deployment and rebuild times.

  • EnableLLVM – Uma propriedade booliana que determina se o LLVM será ou não usado ao compilar assemblies Ahead of Time em código nativo.EnableLLVM – A boolean property that determines whether or not LLVM will be used when Ahead-of-Time compiling assemblies into native code.

    O suporte para essa propriedade foi adicionado no Xamarin.Android 5.1.Support for this property was added in Xamarin.Android 5.1.

    Essa propriedade é False por padrão.This property is False by default.

    Essa propriedade é ignorada, a menos que a propriedade $(AotAssemblies) do MSBuild seja True.This property is ignored unless the $(AotAssemblies) MSBuild property is True.

  • EnableProguard – uma propriedade booliana que determina se proguard é ou não executado como parte do processo de empacotamento para vincular o código Java.EnableProguard – A boolean property that determines whether or not proguard is run as part of the packaging process to link Java code.

    O suporte para essa propriedade foi adicionado no Xamarin.Android 5.1.Support for this property was added in Xamarin.Android 5.1.

    Essa propriedade é False por padrão.This property is False by default.

    Quando True, os arquivos de ProguardConfiguration serão usados para controlar a execução de proguard.When True, ProguardConfiguration files will be used to control proguard execution.

  • JavaMaximumHeapSize – especifica o valor do parâmetro java -Xmx a ser usado ao criar o arquivo .dex como parte do processo de empacotamento.JavaMaximumHeapSize – Specifies the value of the java -Xmx parameter value to use when building the .dex file as part of the packaging process. Se não for especificado, a opção -Xmx fornecerá java com um valor de 1G.If not specified, then the -Xmx option supplies java with a value of 1G. Foi verificado que isso normalmente é necessário no Windows em comparação com outras plataformas.This was found to be commonly required on Windows in comparison to other platforms.

    Especificar essa propriedade é necessária se o destino _CompileDex gera um java.lang.OutOfMemoryError.Specifying this property is necessary if the _CompileDex target throws a java.lang.OutOfMemoryError.

    Personalize o valor alterando:Customize the value by changing:

    <JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
    
  • JavaOptions – especifica as opções de linha de comando adicionais a serem passadas para java ao compilar o arquivo .dex.JavaOptions – Specifies additional command-line options to pass to java when building the .dex file.

  • LinkerDumpDependencies – uma propriedade booliana que permite a geração do arquivo de dependências do vinculador.LinkerDumpDependencies – A bool property which enables generating of linker dependencies file. Esse arquivo pode ser usado como entrada para a ferramenta illinkanalyzer.This file can be used as input for illinkanalyzer tool.

    O valor padrão é False.The default value is False.

  • MandroidI18n– especifica o suporte à internacionalização incluído com o aplicativo, tal como tabelas de ordenação e de classificação.MandroidI18n – Specifies the internationalization support included with the Application, such as collation and sorting tables. 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:The value is a comma- or semicolon-separated list of one or more of the following case-insensitive values:

    • Nenhum: não incluir nenhuma codificação adicional.None: Include no additional encodings.

    • All: incluir todas as codificações disponíveis.All: Include all available encodings.

    • CJK: incluir codificações de chinês, japonês e coreano, 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].CJK: Include Chinese, Japanese, and Korean encodings such as Japanese (EUC) [enc-jp, CP51932], Japanese (Shift-JIS) [iso-2022-jp, shift_jis, CP932], Japanese (JIS) [CP50220], Chinese Simplified (GB2312) [gb2312, CP936], Korean (UHC) [ks_c_5601-1987, CP949], Korean (EUC) [euc-kr, CP51949], Chinese Traditional (Big5) [big5, CP950], and Chinese Simplified (GB18030) [GB18030, CP54936].

    • MidEast: Incluir 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 alternativa) [iso-8859-8, CP38598].MidEast: Include Middle-Eastern encodings such as Turkish (Windows) [iso-8859-9, CP1254], Hebrew (Windows) [windows-1255, CP1255], Arabic (Windows) [windows-1256, CP1256], Arabic (ISO) [iso-8859-6, CP28596], Hebrew (ISO) [iso-8859-8, CP28598], Latin 5 (ISO) [iso-8859-9, CP28599], and Hebrew (Iso Alternative) [iso-8859-8, CP38598].

    • Other: 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 devanágari [x-iscii-de, CP57002], ISCII bengalês [x-iscii-be, CP57003], ISCII tâmil [x-iscii-ta, CP57004], ISCII télugo [x-iscii-te, CP57005], ISCII assamês [x-iscii-as, CP57006], ISCII odia [x-iscii-or, CP57007], ISCII canarim [x-iscii-ka, CP57008], ISCII malaiala [x-iscii-ma, CP57009], ISCII guzerate [x-iscii-gu, CP57010], ISCII panjabi [x-iscii-pa, CP57011] e tailandês (Windows) [CP874].Other: Include Other encodings such as Cyrillic (Windows) [CP1251], Baltic (Windows) [iso-8859-4, CP1257], Vietnamese (Windows) [CP1258], Cyrillic (KOI8-R) [koi8-r, CP1251], Ukrainian (KOI8-U) [koi8-u, CP1251], Baltic (ISO) [iso-8859-4, CP1257], Cyrillic (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Malayalam [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011], and Thai (Windows) [CP874].

    • Rare: incluir codificações raras, tais como IBM EBCDIC (turco) [CP1026], IBM EBCDIC (Open Systems Latim 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 (katakana japonês estendido) [CP20290], IBM EBCDIC (França) [CP20297], IBM EBCDIC (árabe) [CP20420], IBM EBCDIC (hebraico) [CP20424], IBM EBCDIC (islandês) [CP20871], IBM EBCDIC (cirílico – servo, búlgaro) [CP21025], IBM EBCDIC (EUA-Canadá) [CP37], IBM EBCDIC (Internacional) [CP500], árabe (ASMO 708) [CP708], Centro-europeu (DOS) [CP852] , cirílico (DOS) [CP855], turco (DOS) [CP857], europeu 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].Rare: Include Rare encodings such as IBM EBCDIC (Turkish) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (US-Canada with Euro) [CP1140], IBM EBCDIC (Germany with Euro) [CP1141], IBM EBCDIC (Denmark/Norway with Euro) [CP1142], IBM EBCDIC (Finland/Sweden with Euro) [CP1143], IBM EBCDIC (Italy with Euro) [CP1144], IBM EBCDIC (Latin America/Spain with Euro) [CP1145], IBM EBCDIC (United Kingdom with Euro) [CP1146], IBM EBCDIC (France with Euro) [CP1147], IBM EBCDIC (International with Euro) [CP1148], IBM EBCDIC (Icelandic with Euro) [CP1149], IBM EBCDIC (Germany) [CP20273], IBM EBCDIC (Denmark/Norway) [CP20277], IBM EBCDIC (Finland/Sweden) [CP20278], IBM EBCDIC (Italy) [CP20280], IBM EBCDIC (Latin America/Spain) [CP20284], IBM EBCDIC (United Kingdom) [CP20285], IBM EBCDIC (Japanese Katakana Extended) [CP20290], IBM EBCDIC (France) [CP20297], IBM EBCDIC (Arabic) [CP20420], IBM EBCDIC (Hebrew) [CP20424], IBM EBCDIC (Icelandic) [CP20871], IBM EBCDIC (Cyrillic - Serbian, Bulgarian) [CP21025], IBM EBCDIC (US-Canada) [CP37], IBM EBCDIC (International) [CP500], Arabic (ASMO 708) [CP708], Central European (DOS) [CP852], Cyrillic (DOS) [CP855], Turkish (DOS) [CP857], Western European (DOS with Euro) [CP858], Hebrew (DOS) [CP862], Arabic (DOS) [CP864], Russian (DOS) [CP866], Greek (DOS) [CP869], IBM EBCDIC (Latin 2) [CP870], and IBM EBCDIC (Greek) [CP875].

    • West: incluir codificações ocidentais, como europeu ocidental (Mac) [macintosh, CP10000], islandês (Mac) [x-mac-islandês, CP10079], Centro-europeu (Windows) [iso-8859-2, CP1250], europeu ocidental (Windows) [iso-8859-1, CP1252], grego (Windows) [iso-8859-7, CP1253], Centro-europeu (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], Europeu Ocidental (DOS) [CP850], português (DOS) [CP860], islandês (DOS) [CP861], francês canadense (DOS) [CP863] e nórdico (DOS) [CP865].West: Include Western encodings such as Western European (Mac) [macintosh, CP10000], Icelandic (Mac) [x-mac-icelandic, CP10079], Central European (Windows) [iso-8859-2, CP1250], Western European (Windows) [iso-8859-1, CP1252], Greek (Windows) [iso-8859-7, CP1253], Central European (ISO) [iso-8859-2, CP28592], Latin 3 (ISO) [iso-8859-3, CP28593], Greek (ISO) [iso-8859-7, CP28597], Latin 9 (ISO) [iso-8859-15, CP28605], OEM United States [CP437], Western European (DOS) [CP850], Portuguese (DOS) [CP860], Icelandic (DOS) [CP861], French Canadian (DOS) [CP863], and Nordic (DOS) [CP865].

    <MandroidI18n>West</MandroidI18n>
    
  • MonoSymbolArchive – Uma propriedade booliana que controla se artefatos .mSYM são criados para uso posterior com mono-symbolicate, para extrair informações “reais” de nome do arquivo e de número de linha dos rastreamentos de pilha de versão.MonoSymbolArchive – A boolean property which controls whether .mSYM artifacts are created for later use with mono-symbolicate, to extract “real” filename and line number information from Release stack traces.

    Isso é True por padrão para aplicativos de “versão” que têm os símbolos de depuração habilitados:$(EmbedAssembliesIntoApk) é True, $(DebugSymbols) é True e $(Optimize) é True.This is True by default for “Release” apps which have debugging symbols enabled: $(EmbedAssembliesIntoApk) is True, $(DebugSymbols) is True, and $(Optimize) is True.

    Adicionado no Xamarin.Android 7.1.Added in Xamarin.Android 7.1.

Propriedades de build do projeto de associaçãoBinding Project Build Properties

As seguintes propriedades de MSBuild são usadas com projetos de associação:The following MSBuild properties are used with Binding projects:

  • AndroidClassParser – uma propriedade de cadeia de caracteres que controla como os arquivos .jar são analisados.AndroidClassParser – A string property which controls how .jar files are parsed. Os possíveis valores incluem:Possible values include:

    • class-parse: usa class-parse.exe para analisar o código de bytes Java diretamente, sem a assistência de uma JVM.class-parse: Uses class-parse.exe to parse Java bytecode directly, without assistance of a JVM. Esse valor é experimental.This value is experimental.

    • jar2xml: usa jar2xml.jar para usar a reflexão do Java para extrair tipos e membros de um arquivo .jar.jar2xml: Use jar2xml.jar to use Java reflection to extract types and members from a .jar file.

    As vantagens de class-parse sobre jar2xml são:The advantages of class-parse over jar2xml are:

    • class-parse é capaz de extrair nomes de parâmetro do código de bytes Java que contém símbolos de depuração (por exemplo, código de bytes compilado com javac -g).class-parse is able to extract parameter names from Java bytecode which contains debug symbols (e.g. bytecode compiled with javac -g).

    • class-parse não "ignora" classes que herdam, ou contêm, membros de tipos não resolvidos.class-parse doesn't "skip" classes which inherit from or contain members of unresolvable types.

    Experimental.Experimental. Adicionado no Xamarin.Android 6.0.Added in Xamarin.Android 6.0.

    O valor padrão é jar2xml.The default value is jar2xml.

    O valor padrão será alterado em uma versão futura.The default value will change in a future release.

  • AndroidCodegenTarget – uma propriedade de cadeia de caracteres que controla a ABI de destino de geração de código.AndroidCodegenTarget – A string property which controls the code generation target ABI. Os possíveis valores incluem:Possible values include:

    • XamarinAndroid: usa a API de associação de JNI presente desde o Mono para Android 1.0.XamarinAndroid: Uses the JNI binding API present in since Mono for Android 1.0. Assemblies de associação criados com Xamarin.Android 5.0 ou posterior podem ser executados apenas no Xamarin.Android 5.0 ou posterior (adições de API/ABI), mas o código-fonte é compatível com o das versões anteriores do produto.Binding assemblies built with Xamarin.Android 5.0 or later can only run on Xamarin.Android 5.0 or later (API/ABI additions), but the source is compatible with prior product versions.

    • XAJavaInterop1: usar o Java.Interop para invocações de JNI.XAJavaInterop1: Use Java.Interop for JNI invocations. Assemblies de associação usando XAJavaInterop1 só podem compilar e executar com o Xamarin.Android 6.1 ou posterior.Binding assemblies using XAJavaInterop1 can only build and execute with Xamarin.Android 6.1 or later. O Xamarin.Android 6.1 e os posteriores associam Mono.Android.dll com esse valor.Xamarin.Android 6.1 and later bind Mono.Android.dll with this value.

      Os benefícios de XAJavaInterop1 incluem:The benefits of XAJavaInterop1 include:

      • Assemblies menores.Smaller assemblies.

      • Cache em jmethodID para invocações de método base, desde que todos os outros tipos de associação na hierarquia de herança sejam compilados com o XAJavaInterop1 ou posterior.jmethodID caching for base method invocations, so long as all other binding types in the inheritance hierarchy are built with XAJavaInterop1 or later.

      • Cache em jmethodID de construtores do Java Callable Wrapper para subclasses gerenciadas.jmethodID caching of Java Callable Wrapper constructors for managed subclasses.

      O valor padrão é XAJavaInterop1.The default value is XAJavaInterop1.

Propriedades de recursoResource Properties

Propriedades do recurso controlam a geração do arquivo Resource.designer.cs, que fornece acesso a recursos do Android.Resource properties control the generation of the Resource.designer.cs file, which provides access to Android resources.

  • AndroidAapt2CompileExtraArgs – especifica opções de linha de comando adicionais a serem passadas para o comando aapt2 compile durante o processamento de recursos e ativos do Android.AndroidAapt2CompileExtraArgs – Specifies additional command-line options to pass to the aapt2 compile command when processing Android assets and resources.

    Adicionado no Xamarin.Android 9.1.Added in Xamarin.Android 9.1.

  • AndroidAapt2LinkExtraArgs – especifica opções de linha de comando adicionais a serem passadas ao comando aapt2 link durante o processamento de ativos e recursos do Android.AndroidAapt2LinkExtraArgs – Specifies additional command-line options to pass to the aapt2 link command when processing Android assets and resources.

    Adicionado no Xamarin.Android 9.1.Added in Xamarin.Android 9.1.

  • AndroidExplicitCrunch – se você estiver criando um aplicativo com um número muito grande de desenháveis locais, um build (ou rebuild) inicial pode levar minutos para ser concluído.AndroidExplicitCrunch – If you are building an app with a very large number of local drawables, an initial build (or rebuild) can take minutes to complete. Para acelerar o processo de build, tente incluir essa propriedade e configurá-la como True.To speed up the build process, try including this property and setting it to True. Quando essa propriedade é definida, o processo de build pré-compacta os arquivos PNG.When this property is set, the build process pre-crunches the .png files.

    Observação: essa opção não é compatível com a opção $(AndroidUseAapt2).Note: This option is not compatible with the $(AndroidUseAapt2) option. Se a $(AndroidUseAapt2) estiver habilitada, essa funcionalidade estará desabilitada.If $(AndroidUseAapt2) is enabled, this functionality will be disabled. Se você quiser continuar usando esse recurso, defina $(AndroidUseAapt2) como False.If you wish to continue to use this feature please set $(AndroidUseAapt2) to False.

    Experimental.Experimental. Adicionado no Xamarin.Android 7.0.Added in Xamarin.Android 7.0.

  • AndroidResgenExtraArgs – especifica as opções de linha de comando adicionais para passar para o comando aapt ao processar ativos e recursos do Android.AndroidResgenExtraArgs – Specifies additional command-line options to pass to the aapt command when processing Android assets and resources.

  • AndroidResgenFile – especifica o nome do arquivo de recurso para gerar.AndroidResgenFile – Specifies the name of the Resource file to generate. O modelo padrão define isso como Resource.designer.cs.The default template sets this to Resource.designer.cs.

  • AndroidUseAapt2 – uma propriedade booliana que permite que o desenvolvedor controle o uso da ferramenta aapt2 para empacotamento.AndroidUseAapt2 – A bool property which allows the developer to control the use of the aapt2 tool for packaging. Por padrão, ela será definida como false e usaremos aapt.By default this will be set to false and we will use aapt. Se o desenvolvedor quiser usar a nova funcionalidade aapt2, ele poderá definirIf the developer wishes to use the new aapt2 functionality they can set

    <AndroidUseAapt2>True</AndroidUseAapt2>
    

    no .csproj deles.in their .csproj. Como alternativa, forneça a propriedade na linha de comando por meio deAlternatively provide the property on the command line via

    /p:AndroidUseAapt2=True
    

    Adicionado no Xamarin.Android 8.3.Added in Xamarin.Android 8.3.

  • MonoAndroidResourcePrefix – especifica um prefixo de caminho que é removido do início dos nomes de arquivo com uma ação de build de AndroidResource.MonoAndroidResourcePrefix – Specifies a path prefix that is removed from the start of filenames with a Build action of AndroidResource. Isso é para permitir a alteração do local em que os recursos estão localizados.This is to allow changing where resources are located.

    O valor padrão é Resources.The default value is Resources. Altere isso para res para a estrutura do projeto Java.Change this to res for the Java project structure.

Propriedades de assinaturaSigning Properties

As propriedades de assinatura controlam como o pacote do aplicativo é assinado, para que ele possa ser instalado em um dispositivo Android.Signing properties control how the Application package is signed so that it may be installed onto an Android device. Para permitir uma iteração de build mais rápida, as tarefas do Xamarin.Android não assinam pacotes durante o processo de build, porque assinar é algo muito lento.To allow quicker build iteration, the Xamarin.Android tasks do not sign packages during the build process, because signing is quite slow. Em vez disso, eles são assinados (se necessário) antes da instalação ou durante a exportação, pelo IDE ou pelo destino de build Install.Instead, they are signed (if necessary) before installation or during export, by the IDE or the Install build target. Invocar o destino SignAndroidPackage produzirá um pacote com o sufixo -Signed.apk no diretório de saída.Invoking the SignAndroidPackage target will produce a package with the -Signed.apk suffix in the output directory.

Por padrão, o destino da assinatura gera uma nova chave de assinatura de depuração, se necessário.By default, the signing target generates a new debug-signing key if necessary. Se você quiser usar uma chave específica, por exemplo, em um servidor de build, as seguintes propriedades de MSBuild podem ser usadas:If you wish to use a specific key, for example on a build server, the following MSBuild properties can be used:

  • AndroidDebugKeyAlgorithm – Especifica o algoritmo padrão para ser usado para o debug.keystore.AndroidDebugKeyAlgorithm – Specifies the default algorithm to use for the debug.keystore. Usa como padrão RSA.It defaults to RSA.

  • AndroidDebugKeyAlgorithm – Especifica a validade padrão para ser usada para o debug.keystore.AndroidDebugKeyValidity – Specifies the default validity to use for the debug.keystore. Usa como padrão 10950, 30 * 365 ou 30 years.It defaults to 10950 or 30 * 365 or 30 years.

  • AndroidKeyStore – um valor booliano que indica se as informações de autenticação personalizadas devem ser usadas.AndroidKeyStore – A boolean value which indicates whether custom signing information should be used. O valor padrão é False, que significa que a chave de assinatura de depuração padrão será usada para assinar pacotes.The default value is False, meaning that the default debug-signing key will be used to sign packages.

  • AndroidSigningKeyAlias – especifica o alias para a chave no repositório de chaves.AndroidSigningKeyAlias – Specifies the alias for the key in the keystore. Este é o valor de keytool-alias usado ao criar o repositório de chaves.This is the keytool -alias value used when creating the keystore.

  • AndroidSigningKeyPass – especifica a senha da chave de dentro do arquivo do repositório de chaves.AndroidSigningKeyPass – Specifies the password of the key within the keystore file. Esse é o valor digitado quando keytool solicita Insira a senha da chave para $(AndroidSigningKeyAlias) .This is the value entered when keytool asks Enter key password for $(AndroidSigningKeyAlias).

  • AndroidSigningKeyStore – especifica o nome do arquivo do repositório de chaves criado por keytool.AndroidSigningKeyStore – Specifies the filename of the keystore file created by keytool. Isso corresponde ao valor fornecido à opção keytool -keystore.This corresponds to the value provided to the keytool -keystore option.

  • AndroidSigningStorePass – especifica a senha para $(AndroidSigningKeyStore).AndroidSigningStorePass – Specifies the password to $(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: .This is the value provided to keytool when creating the keystore file and asked Enter keystore password:.

Por exemplo, considere a seguinte invocação de keytool:For example, consider the following keytool invocation:

$ keytool -genkey -v -keystore filename.keystore -alias keystore.alias -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password: keystore.filename password
Re-enter new password: keystore.filename password
...
Is CN=... correct?
  [no]:  yes

Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days
        for: ...
Enter key password for keystore.alias
        (RETURN if same as keystore password): keystore.alias password
[Storing filename.keystore]

Para usar o armazenamento de chaves gerado acima, use o grupo de propriedades:To use the keystore generated above, use the property group:

<PropertyGroup>
    <AndroidKeyStore>True</AndroidKeyStore>
    <AndroidSigningKeyStore>filename.keystore</AndroidSigningKeyStore>
    <AndroidSigningStorePass>keystore.filename password</AndroidSigningStorePass>
    <AndroidSigningKeyAlias>keystore.alias</AndroidSigningKeyAlias>
    <AndroidSigningKeyPass>keystore.alias password</AndroidSigningKeyPass>
</PropertyGroup>

Ações de BuildBuild Actions

Ações de build são aplicadas a arquivos dentro do projeto e controlam como o arquivo é processado.Build actions are applied to files within the project and control how the file is processed.

AndroidAarLibraryAndroidAarLibrary

A ação do build de AndroidAarLibrary deve ser usada para referenciar diretamente a arquivos .aar.The Build action of AndroidAarLibrary should be used to directly reference .aar files. Essa ação do build será mais usada pelos componentes do Xamarin.This build action will be most commonly used by Xamarin Components. Especificamente para incluir referências aos arquivos .aar que são necessários para que a Google Play e outros serviços funcionem.Namely to include references to .aar files which are required to get Google Play and other services working.

Os arquivos com essa ação do build serão tratados de forma semelhante aos recursos inseridos encontrados em projetos de biblioteca.Files with this Build action will be treated in a similar fashion too the embedded resources found in Library projects. Os arquivos .aar serão extraídos para o diretório intermediário.The .aar will be extracted into the intermediate directory. Em seguida, todos os ativos, recursos e arquivos .jar serão incluídos nos grupos de itens adequados.Then any assets, resource and .jar files will be included in the appropriate item groups.

AndroidBoundLayoutAndroidBoundLayout

Indica que o code-behind deverá ser gerado para o arquivo de layout quando a propriedade AndroidGenerateLayoutBindings estiver definida como false.Indicates that the layout file is to have code-behind generated for it in case when the AndroidGenerateLayoutBindings property is set to false. Em todos os outros aspectos, ela é idêntica à AndroidResource descrita acima.In all other aspects it is identical to AndroidResource described above. Essa ação pode ser usada apenas com arquivos de layout:This action can be used only with layout files:

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

AndroidEnvironmentAndroidEnvironment

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.Files with a Build action of AndroidEnvironment are used to initialize environment variables and system properties during process startup. 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).The AndroidEnvironment Build action may be applied to multiple files, and they will be evaluated in no particular order (so don't specify the same environment variable or system property in multiple files).

AndroidFragmentTypeAndroidFragmentType

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.Specifies the default fully qualified type to be used for all <fragment> layout elements when generating the layout bindings code. O padrão da propriedade é o tipo Android.App.Fragment do Android.The property defaults to the standard Android Android.App.Fragment type.

AndroidJavaLibraryAndroidJavaLibrary

Arquivos com uma ação de build AndroidJavaLibrary são arquivos Java (arquivos .jar) que serão incluídos no pacote do Android final.Files with a Build action of AndroidJavaLibrary are Java Archives ( .jar files) which will be included in the final Android package.

AndroidJavaSourceAndroidJavaSource

Arquivos com uma ação de build AndroidJavaSource são código-fonte do Java que será incluído no pacote do Android final.Files with a Build action of AndroidJavaSource are Java source code which will be included in the final Android package.

AndroidLintConfigAndroidLintConfig

A ação de build 'AndroidLintConfig' deve ser usada em conjunto com a propriedade de build AndroidLintEnabled.The Build action 'AndroidLintConfig' should be used in conjunction with the AndroidLintEnabled build property. Os arquivos com essa ação de build serão mesclados e passados para as ferramentas lint do Android.Files with this build action will be merged together and passed to the android lint tooling. Eles deverão ser arquivos XML que contenham informações sobre quais testes devem ser habilitados e desabilitados.They should be XML files which contain information on which tests to enable and disable.

Confira a documentação do lint para obter mais detalhes.See the lint documentation for more details.

AndroidNativeLibraryAndroidNativeLibrary

Bibliotecas nativas são adicionadas ao build definindo-se as ações de build delas para AndroidNativeLibrary.Native libraries are added to the build by setting their Build action to AndroidNativeLibrary.

Observe que, como o Android é compatível com várias ABIs (interfaces binárias de aplicativo), o sistema de build deve saber para qual ABI a biblioteca nativa é compilada.Note that since Android supports multiple Application Binary Interfaces (ABIs), the build system must know which ABI the native library is built for. Há duas maneiras de fazer isso:There are two ways this can be done:

  1. "Detecção" de caminho.Path "sniffing".
  2. Usando o atributo do item Abi.Using the Abi item attribute.

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.With path sniffing, the parent directory name of the native library is used to specify the ABI that the library targets. Portanto, se você adicionar lib/armeabi-v7a/libfoo.so ao build, em a ABI será "detectada" como armeabi-v7a.Thus, if you add lib/armeabi-v7a/libfoo.so to the build, then the ABI will be "sniffed" as armeabi-v7a.

Nome de atributo de itemItem Attribute Name

Abi – especifica a ABI da biblioteca nativa.Abi – Specifies the ABI of the native library.

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

AndroidResourceAndroidResource

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).All files with an AndroidResource build action are compiled into Android resources during the build process and made accessible via $(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.More advanced users might perhaps wish to have different resources used in different configurations but with the same effective path. 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.This can be achieved by having multiple resource directories and having files with the same relative paths within these different directories, and using MSBuild conditions to conditionally include different files in different configurations. Por exemplo:For example:

<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.LogicalName – Specifies the resource path explicitly. Permite o “uso de nomes alternativos” para arquivos para que eles estejam disponíveis como vários nomes de recurso distintos.Allows “aliasing” files so that they will be available as multiple distinct resource names.

<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>

ConteúdoContent

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).The normal Content Build action is not supported (as we haven't figured out how to support it without a possibly costly first-run step).

Começando com o Xamarin.Android 5.1, tentar usar a ação de build @(Content) resultará em um aviso XA0101.Starting in Xamarin.Android 5.1, attempting to use the @(Content) Build action will result in a XA0101 warning.

LinkDescriptionLinkDescription

Arquivos com uma ação de build LinkDescription são usados para controlar o comportamento do vinculador.Files with a LinkDescription build action are used to control linker behavior.

ProguardConfigurationProguardConfiguration

Arquivos com uma ação de build ProguardConfiguration contêm opções que são usadas para controlar o comportamento de proguard.Files with a ProguardConfiguration build action contain options which are used to control proguard behavior. Para obter mais informações sobre essa ação de build, consulte ProGuard.For more information about this build action, see ProGuard.

Esses arquivos são ignorados, a menos que a propriedade $(EnableProguard) do MSBuild seja True.These files are ignored unless the $(EnableProguard) MSBuild property is True.

Definições de destinoTarget Definitions

As partes do processo de build específicas do Xamarin.Android são definidas em $(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets, mas destinos normais específicos a uma linguagem, tais como Microsoft.CSharp.targets, também são necessários para compilar o assembly.The Xamarin.Android-specific parts of the build process are defined in $(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets, but normal language-specific targets such as Microsoft.CSharp.targets are also required to build the assembly.

As seguintes propriedades de build devem ser definidas antes de importar quaisquer destinos de linguagem de programação:The following build properties must be set before importing any language targets:

<PropertyGroup>
  <TargetFrameworkIdentifier>MonoDroid</TargetFrameworkIdentifier>
  <MonoDroidVersion>v1.0</MonoDroidVersion>
  <TargetFrameworkVersion>v2.2</TargetFrameworkVersion>
</PropertyGroup>

Todos esses destinos e propriedades podem ser incluídos para C# importando Xamarin.Android.CSharp.targets:All of these targets and properties can be included for C# by importing Xamarin.Android.CSharp.targets:

<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />

Esse arquivo pode ser facilmente adaptado para outras linguagens de programação.This file can easily be adapted for other languages.