Assinatura de código para Android

Neste artigo, você aprenderá como usar assinatura de código no Android (APK). Você precisará assinar seu aplicativo para Android, se tiver selecionado Android como uma das plataformas ao criar seu projeto de empacotamento.

Importante

Se você quiser assinar um aplicativo AAB para distribuição no Google Play, consulte Assinar seu aplicativo.

Prepare seu computador

Você precisa das seguintes informações para começar:

Gerar chaves

Observação

Pule para assinar o pacote APK se você já tiver gerado chaves e hash de assinatura ao criar o registro de aplicativo.

Usaremos keytool.exe (disponível após a instalação do Android Studio, no local da pasta "Drive:\Program Files\Android\Android Studio\jre\bin\keytool.exe") para criar um certificado para assinar o pacote de aplicativos. Keytool é usado para gerenciar um keystore (banco de dados) de chaves criptográficas, cadeias de certificados X.509 e certificados confiáveis.

Para gerar uma chave, abra um prompt de comando e execute o seguinte comando:

keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

Parâmetros:

  • genkey - comando para gerar uma chave.
  • alias - indica o alias a ser usado no futuro para fazer referência à entrada do keystore que contém as chaves que serão geradas.
  • keyalg - nome do algoritmo-chave.
  • keystore - nome do keystore que você está usando.
  • keysize - o tamanho de cada chave a ser gerada.
  • validity - validade da chave em número de dias.

Exemplo:

  • Se estiver preparando o Key Vault, PATH_TO_KEYSTORE deve ter extensão .pfx.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • Se estiver preparando para assinatura manual, PATH_TO_KEYSTORE deve ter extensão .jks.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000

Uma captura de tela com o comando keytool usando os parâmetros no exemplo acima.

Gerar hash de assinatura

Observação

Pule para assinar o pacote APK se você já tiver gerado chaves e hash de assinatura ao criar o registro de aplicativo.

Depois de gerar a chave, o comando exportcert será usado em keytool para exportar o certificado do keystore.

keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

Parâmetros:

  • exportcert - lê do keystore o certificado associado ao alias e o armazena no arquivo cert_file. Quando nenhum arquivo é especificado, o certificado é enviado para stdout.
  • alias - o alias usado ao gerar chaves anteriormente.
  • keystore - nome do keystore que você está usando.
  • openssl - gera a chave SHA1 para Android.

Adicione o hash de assinatura gerado no URI de Redirecionamento ao registrar o aplicativo.

Converter hexadecimal SHA1 em hash de assinatura codificado em Base64 manualmente

Você pode ver o seguinte erro se seu hash de assinatura não estiver codificado corretamente ou for inaceitável no portal do Azure:

"O hash de assinatura deve ser SHA1 codificado em base64."

Quando esse erro aparecer, tente gerar o hash de assinatura usando as seguintes etapas:

  1. Execute keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE para listar as informações do certificado no modo detalhado.
  2. Copie o valor SHA1 na seção Impressões digitais do certificado da saída. Certifique-se de copiar apenas o valor hexadecimal.
    Por exemplo: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. Use qualquer conversor "Hexadecimal para Base64" disponível para converter o valor hexadecimal da impressão digital do certificado copiado em valor codificado em Base64.
    Exemplo do valor codificado em Base64: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. Copie o valor codificado em Base64 gerado como o Hash de assinatura no portal do Azure ao registrar o aplicativo.

Assinar o pacote APK

Para assinar o pacote APK, usaremos a ferramenta apksigner. Essa ferramenta permite que você assine APKs e garanta que a assinatura do pacote APK seja verificada com sucesso em todas as plataformas Android compatíveis com os APKs.

Localizar seu apksigner

  1. Verifique o caminho SDK do Android no Android Studio.

  2. Selecione Ferramenta > Gerenciador do SDK > Localização do SDK do Android.

    Se estiver usando iOS, verifique o arquivo apksigner no diretório Versão de buildTools:

    Acesse o diretório SDK > ferramentas de compilação > buildToolsVersion > lib e verifique o arquivo apksigner.jar

Usar o arquivo apksigner

Execute o seguinte comando para usar o apksigner e assinar o pacote:

apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

Parâmetros:

  • ks - caminho para o keystore.
  • ks-key-alias - caminho do alias da chave para o arquivo APK.

Quando solicitado, digite a senha.

Mais informações: Ferramentas de linha de comando do Android Studio: apksigner

Distribuir o aplicativo

Você pode hospedar o pacote em um serviço de distribuição, como App Center. Para distribuir usando o Microsoft Intune, consulte Adicionar um aplicativo de linha de negócios Android para Microsoft Intune. Para saber como conceder a um aplicativo acesso ao serviço de proteção de aplicativo do Intune, consulte Conceder ao seu aplicativo acesso ao serviço de proteção de aplicativo do Intune.

Consulte também