Configuração de assinatura de código do Android no App Center

Importante

O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar migrar.

Saiba mais sobre cronogramas e alternativas de suporte.

Dica

Para usuários do Xamarin.Android, o processo é um pouco diferente. Consulte nosso guia de assinatura de código do Xamarin.Android para obter detalhes.

Assinar um aplicativo é um requisito para executá-lo em dispositivos reais durante o processo de desenvolvimento ou para distribuí-lo por meio de um programa beta ou na Play Store. Sem assinatura de código, o aplicativo só pode ser executado em um emulador.

Quando o App Center cria um aplicativo Android com um tipo de build de depuração, um repositório de chaves para um desenvolvedor não é necessário, mas pode ser carregado. Essas compilações serão assinadas automaticamente com uma chave de depuração. Para um build de versão que será implantado, carregue um repositório de chaves no App Center.

Gerando um armazenamento de chaves

Se você não tiver um armazenamento de chaves no momento, poderá gerar um no Android Studio. Você pode encontrar instruções sobre como gerar um repositório de chaves para assinar APKs no Guia do usuário oficial do Android Studio.

Configurando a assinatura de código

O App Center dá suporte a três maneiras diferentes de configurar a assinatura de código para aplicativos Android. Para todos os três métodos, primeiro você precisa ir para a configuração de build e habilitar a assinatura de código:

  1. Vá para seu aplicativo no App Center.
  2. Vá para Construir.
  3. Vá para o branch que deseja configurar escolhendo-o na lista.
  4. Use o menu "Configurações" no canto superior direito ou escolha Configurar se o branch ainda não estiver configurado para compilação.
  5. Habilite builds de Sign.
  6. Selecione Salvar.

Em seguida, dependendo do seu cenário, use a mais adequada das três opções nas seções abaixo. A primeira opção envolve o check-in de credenciais em seu repositório, enquanto as outras duas usam o App Center para lidar com suas credenciais.

A partir do Android 11, é obrigatório usar o assinante do APK (se você usar o nível 30 da API), pois ele definirá alguns esquemas extras "Esquema de assinatura do APK v2 agora necessário". O App Center agora (desde 17 de dezembro de 2020) assina aplicativos Android usando o assinante APK internamente, em vez do assinante JAR que era usado anteriormente. Como parte do recurso para habilitar o assinante do APK no App Center, a tarefa de assinatura do Android V3 foi implementada e os requisitos para a nova tarefa de assinatura eram alterar a forma como o arquivo de armazenamento de chaves é salvo – para armazenar o arquivo de armazenamento de chaves em um arquivo seguro AzDO (tarefa de build e versão de assinatura do Android – Azure Pipelines | Documentos da Microsoft).

Aviso

Todas as configurações de compilação que tiveram seus arquivos de armazenamento de chaves enviados antes de 17 de dezembro de 2020 ainda usam o método de assinatura do esquema de assinatura do APK v2 (jarsigner). Para usar o fluxo de assinatura do esquema de assinatura do APK v3, os usuários só precisam fazer o upload dos arquivos do repositório de chaves e salvar a configuração da ramificação.

Observação

O uso do Plug-in do Android para Gradle versão 4.1.x não é totalmente compatível. Para usar esta versão, você deve adicionar a próxima configuração de opção no gradle.properties arquivo:

 android.useNewApkCreator = false

R. Armazenando tudo na configuração do Gradle

Você pode especificar os detalhes de assinatura no arquivo (nível do build.gradle aplicativo). Os detalhes de assinatura, juntamente com todas as credenciais e as informações do armazenamento de chaves, ficarão visíveis no repositório. Primeiro, adicione todos os itens necessários ao seu código e faça check-in deles no repositório. Em seguida, na configuração de build no App Center, habilite Minhas configurações do Gradle são totalmente definidas para lidar com a assinatura automaticamente.

B. Carregando tudo para o App Center

Você pode carregar o repositório de chaves e configurar as credenciais de assinatura por meio do App Center. Nesse caso, o App Center primeiro criará seu aplicativo Android e, em seguida, executará uma etapa de assinatura após a compilação bem-sucedida.

Observação

Uma compilação só pode ser assinada uma vez. Verifique se você não tem conflitos com as configurações de assinatura na configuração do Gradle para a variante de compilação escolhida. Se houver configurações de assinatura no App Center e no arquivo Gradle, o build poderá acabar assinado duas vezes e isso levará a conflitos.

Defina sua configuração de build no App Center da seguinte maneira:

  1. As configurações de Desativar meu Gradle estão totalmente definidas para lidar com a assinatura automaticamente.
  2. Faça upload do arquivo do repositório de chaves para o arquivo de upload do arquivo do repositório de chaves. Você pode arrastar o arquivo para a caixa ou clicar nele e procurar o arquivo. Os arquivos de armazenamento de chaves têm a extensão .keystore ou .jks.
  3. Insira a senha do armazenamento de chaves, o alias da chave e a senha da chave nos campos correspondentes. Esses valores são os mesmos que você inseriria no Android Studio ao assinar um build.

C. Armazenando detalhes de assinatura no repositório com variáveis de ambiente

Use esse método se o repositório já contiver o armazenamento de chaves, mas você não quiser armazenar as credenciais lá. No momento da compilação, as credenciais serão fornecidas como propriedades do sistema para a compilação do Gradle. Consulte o exemplo de código a seguir sobre como usá-los:

android {
    signingConfigs {
        releaseSigningConfig {
            storeFile rootProject.file("app/testapp.jks")
            storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
            keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
            keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.releaseSigningConfig
        }
    }
}

No código acima, proteger os valores por trás das propriedades do sistema injetadas em seu build mantém suas credenciais de assinatura seguras – os valores são criptografados e só estão disponíveis para os agentes de build no momento do build. Você pode fornecer os valores por meio do App Center. Você também pode codificar qualquer um dos valores e fazer check-in deles em seu repositório. Para usar o App Center para proteger os valores:

  1. Vá para a configuração de build.
  2. Certifique-se de que a caixa de seleção chamada Minhas configurações do Gradle esteja totalmente definida para lidar com a assinatura automaticamente , se não estiver marcada.
  3. Insira a senha do armazenamento de chaves, o alias da chave e a senha da chave nos campos correspondentes. Esses valores são os mesmos que você inseriria no Android Studio ao assinar um build.

Se você usar variações de produto, talvez seja necessário ajustar o código acima para que todas as configurações de versão usem a configuração de assinatura correta.

Observação

Se você usar a signingConfig opção dentro da seção em seu build.gradle arquivo (nível do aplicativo), poderá enfrentar erros de assinatura de código durante o buildTypes build do App Center. Isso é especialmente relevante para aplicativos que usam o React Native para Android versão 0.60.x e superior:

 Execution failed for task ':app:validateSigningRelease'.
 Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'

Para corrigir esse problema, você deve enviar por push um repositório de chaves adequado usado para assinar em seu repositório e habilitar Minhas configurações do Gradle estão totalmente definidas para lidar com a assinatura automaticamente em sua configuração de build no portal do App Center.

Caso você tenha carregado um repositório de chaves para a configuração de build no portal do App Center, leve em consideração que essa abordagem exigirá a exclusão signingConfig da opção da buildTypes seção do arquivo (nível do build.gradle aplicativo) se você não a atualizou do estado padrão do modelo de projeto do React Native.