Share via


Assinar código para Android

Neste artigo, vai aprender sobre a assinatura de código para Android (APK). Necessita de assinar a sua aplicação para Android se selecionou o Android como uma das plataformas, quando criou e compilou o seu projeto de encapsulamento.

Importante

Se pretende assinar uma aplicação AAB para a distribuição no Google Play, consulte Assinar a sua aplicação.

Preparar o seu computador

Necessita das seguintes informações para começar:

Gerar chaves

Nota

Avance para assinar o pacote APK se já tiver gerado chaves e hash de assinatura durante a criação do registo da aplicação.

Utilizaremos keytool.exe (disponível depois de instalar o Android Studio, a partir da localização da pasta "Disco:\Programas\Android\Android Studio\jre\bin\keytool.exe") para criar um certificado para assinar o pacote de aplicação. A ferramenta de chave é usara para gerir uma loja de chaves (base de dados) de chaves criptográficas, cadeias de certificado X.509 e certificados de confiança.

Para gerar uma chave, abra um pedido 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 utilizar no futuro para se referir à entrada da loja de chaves que contém as chaves que são geradas.
  • keyalg - nome do algoritmo chave.
  • keystore - o nome da loja de chave que está a utilizar.
  • keysize - o tamanho de cada chave a ser gerada.
  • validity - validade da chave em número de dias.

Exemplo:

  • Se estiver a preparar o Key Vault, PATH_TO_KEYSTORE deverá ter a extensão .pfx.

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

  • Se estiver a preparar a assinatura manual, PATH_TO_KEYSTORE deve ter a extensão .jks.

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

Uma captura de ecrã com o comando da ferramenta de chaves a usar os parâmetros no exemplo acima.

Gerar hash de assinatura

Nota

Avance para assinar o pacote APK se já tiver gerado chaves e hash de assinatura durante a criação do registo da aplicação.

Depois de gerar a chave, o comando exportcert é usado na ferramenta de chaves para exportar o certificado da loja de chaves.

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

Parâmetros:

  • exportcert - lê o certificado associado com o alias a partir da loja de chaves e armazena-o no ficheiro cert_file. Quando não é especificado nenhum ficheiro, a saída do certificado é stdout.
  • alias - o alias usado na geração de chaves anteriormente.
  • keystore - o nome da loja de chave que está a utilizar.
  • openssl - gera a chave SHA1 para Android.

Adicione o hash de assinatura gerado em Redirect URI durante o registo da aplicação .

Converter manualmente um SHA1 hexadecimal no hash de assinatura com codificação Base64

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

"O hash de assinatura tem de ser SHA1 com codificação Base64."

Quando este erro aparecer, tente gerar o hash de assinatura utilizando, alternativamente, os seguintes passos:

  1. Execute keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE para listar as informações de certificado no modo verboso.
  2. Copie o valor SHA1 na secção Impressões digitais do certificado a partir da saída. Certifique-se de que só copia 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. Utilize qualquer conversor "Hexadecimal para Base64" disponível para converter o valor hexadecimal da impressão digital do certificado copiado num valor codificado em Base64.
    Exemplo do valor codificado em Base64: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. Copie o valor codificado em Base64 gerado como Hash de assinatura no portal do Azure durante o registo da aplicação.

Assinar o pacote APK

Para assinar o pacote APK, utilizaremos a ferramenta apksigner. Esta ferramenta permite-lhe assinar APK e assegurar que a assinatura do pacote APK é verificada com êxito em todas as plataformas Android suportadas pelos APK.

Procure o seu apksigner

  1. Verifique o caminho SDK Android no Android Studio.

  2. Selecione Ferramenta > Gestor SDK > Localização SDK Android.

    Se estiver a usar iOS, verifique o ficheiro apksigner a partir do diretório Versão buildTools:

    Aceda a diretório SDK > ferramentas-compulação > buildToolsVersion > lib e verifique o ficheiro apksigner.jar

Usar o ficheiro 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 a loja de chaves.
  • ks-key-alias - caminho do alias da chave para o ficheiro APK.

Quando pedido, introduza a palavra-passe.

Para mais informações: Ferramentas da linha de comandos Android Studio: apksigner

Distribuir a aplicação

Pode alojar o pacote num serviço de distribuição como o App Center. Para distribuir através do Microsoft Intune, consulte Adicionar uma aplicação de linha de negócio Android ao Microsoft Intune. Para mais informações sobre como conceder acesso a uma aplicação ao serviço de Proteção de Aplicações Intune, consulte Conceder acesso à sua aplicação ao serviço Proteção de Aplicações Intune.

Consulte também