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:
- Instale o Android Studio
- Instale o OpenSSL
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
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:
- Execute
keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE
para listar as informações de certificado no modo verboso. - 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
- 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=
- 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
Verifique o caminho SDK Android no Android Studio.
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.