Replying to Avatar Igor

# Vamos falar sobre assinatura de um APK?

Neste artigo gostaria de falar sobre como podemos assinar um APK ‘manualmente’, mas por que alguém iria querer fazer isso sendo que o Delphi já assina automaticamente o APK/AAB?

Antes de responder, gostaria de recomendar a leitura de outro artigo que escrevi “Qual a relação da KeyStore, PackageName e seu APP?” [1], não continue a leitura se você ainda não leu/entendeu este artigo! Atente-se também aos comentários no mesmo artigo, visto que são importantes para melhor entendimento do problema dos dois assuntos.

Respondendo à pergunta:

Muitos são os casos que precisamos distribuir nossos APKs fora da loja, e baseado no artigo sobre a KeyStore sabemos que precisamos compilar nosso APK em RELEASE+Application Store, só que em 64bits o Delphi (10.4+) gera um AAB e não um APK.

Neste artigo irei demonstrar uma das várias técnicas possíveis de ter seu APK Release 64bits para ser distribuído para seus clientes.

Fiz testes apenas nas versões do Delphi 10.4.2 e 12.2, então talvez para sua versão possa ser diferente, sinta-se à vontade para fazer uso do Google caso encontre algum problema. Ele costuma ajudar bastante.

Devido a diferenças entre as duas versões do Delphi, estarei escrevendo nos comentários a solução proposta para assinatura do APK Release 64bits.

Por favor, leia a parte de [Pré-requisitos] e depois encontre o comentário que atende à sua realidade. Talvez sua versão do Delphi seja diferente, mas seu SDK possui os arquivos corretos para o ‘serviço’, o que também resolverá o problema.

Também recomendo o uso do software “Everything” [2], que facilitará muito encontrar arquivos no seu PC.

[Pré-requisitos] comuns entre todas versões do Delphi:

Para começar, vamos primeiro gerar o APK em 64bits, seguindo na contramão do artigo “Qual a relação da KeyStore, PackageName e seu APP?”

Pq? Para não gerarmos automaticamente o AAB, visto que não precisamos de um AAB, mas sim um APK.

Por favor, configure e compile seu projeto na seguinte configuração:

Target: Android 64 bits

Build: RELEASE

Configuration: Development

Baseado no artigo “Qual a relação da KeyStore, PackageName e seu APP?”, sabemos que o APK resultante neste processo será assinado com uma KeyStore aleatória do Delphi, o que é NÃO recomendado, mas aqui entra a beleza da solução proposta…

Agora vá nos comentários e encontre a solução que atenda seu ambiente de trabalho.

# Referências:

[1] “Qual a relação da KeyStore, PackageName e seu APP?” https://nostrudel.ninja/#/n/nevent1qvzqqqqqqypzpdvpeyfrlddvrymt056g2jmtvc6cgntlrsumk3zcwevcl47lsfc0qyt8wumn8ghj7mn0wd68ytnyv96xztngv96hxtcpr3mhxue69uhhxarjvee8jtnwdaehgu3wd35kw6r5d9hxwtcqyzaq6e4lgapz6fc5n28vhepekrhtheguwe2lsxu39chyl3mey895sfhmc8l

[2] Everything https://www.voidtools.com/downloads/

#Delphi #Embarcadero #RadStudio #Android #APP #Mobile #Dev #Development #KeyStore #Sign #Signature #ApplicationStore

[apksigner.bat]

Tenha certeza de ter gerado o APK assim como indicado na seção anterior, de Pré-requisitos [1].

Para fazer a assinatura manual, vamos precisar do arquivo “apksigner.bat” que já deve estar instalado no seu ambiente. Caso você não saiba onde ele está, utilize o programa “Everything” ou afins para encontrar o arquivo. Caso você não encontre o arquivo “apksigner.bat” no seu ambiente pode significar que o Delphi não baixou o “build-tools” do SDK automaticamente, por favor, leia o comentário [build-tools] que explico como baixar.

Vamos precisar do terminal do Windows, o CMD, e rodar o seguinte comando (substitua os nomes entre <> pelos valore reais):

sign --ks --ks-key-alias --ks-pass pass: --key-pass pass: --out

Explicação:

caminho_completo_do_apksigner.bat: o caminho completo do arquivo “apksigner.bat”, utilize aspas duplas em caso de ter espaços no caminho;

caminho_completo_para_o_seu_keystore: o caminho completo para seu arquivo “.keystore” criado por você para este projeto, utilize aspas duplas em caso de ter espaços no caminho;

alias_da_chave: o Alias da sua KeyStore

senha_do_keystore: a senha da sua KeyStore

senha_da_chave: a senha do Alias

caminho_completo_para_o_apk_assinado: o caminho completo para o APK assinado, de destino final onde será salvo o arquivo assinado. NÃO utilize o mesmo nome do arquivo original, utilize aspas duplas em caso de ter espaços no caminho;

caminho_completo_para_o_apk_original: o caminho completo do APK origina, o mesmo que foi compilado no Delphi em modo Release, utilize aspas duplas em caso de ter espaços no caminho;

Após rodar este comando com sucesso, o arquivo deverá ser seu APK re-assinado com a sua KeyStore original, pronto para ser enviado para o cliente.

[1] “Artigo, pré-requisitos” nostrudel.ninja/#/n/nevent1qvzqqqqqqypzpdvpeyfrlddvrymt056g2jmtvc6cgntlrsumk3zcwevcl47lsfc0qy88wumn8ghj7mn0wvhxcmmv9uq3qamnwvaz7tmwdaehgu3wd4hk6tcqyrdjvn6cu4rhhrskz6gpanwlnv92tyraqzy6weaf8x79uzh3k0k6yf8qnsd

Reply to this note

Please Login to reply.

Discussion

No replies yet.