Ok aqui vamos nós. A maneira mais frequente de criar um apk não assinado é usando linha de comando:
./gradlew assemble<$Flavor><$BuildType>
É bastante similar para o pacote app:
./gradlew bundle<$Flavor><$BuildType>
por exemplo:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
Tipicamente, estes são os comandos para construir um pacote apk/app, mas as pessoas frequentemente adicionam o signingConfig ao build.gradle para fazer a parte de assinatura ao mesmo tempo.
Assim, removendo esta parte do arquivo build.gradle, somos bons para criar um pacote apk/app não assinado.
O apk construído será hospedado em: build/outputs/apk/flavor/buildtype/
O app bundle one estará em: build/outputs/bundle/flavorBuildType/
Note que este apk não pode ser instalado em seu dispositivo sem estar assinado. Você receberá um erro se tentar instalá-lo:
Para assinar esse apk ou app bundle, primeiro usamos keytool para gerar uma keystore (se você não tiver uma) e depois usamos jarsigner ou apksigner para assinar o apk ou app bundle com a keystore gerada.
Gerar keystore:
Executar o comando seguinte:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Então ser-lhe-á pedida alguma informação como habitualmente mas as mais importantes são a password do keystore e a password do alias. Uma vez gerado o keystore, iremos assiná-lo com diferentes opções.
Assine um pacote apk/app com jarsigner
Assuma que já tem o JDK instalado.
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
Este comando não gera nenhum ficheiro novo mas o apk não assinado ficará assinado sem quaisquer alterações externas visíveis (nome do ficheiro e tamanho do ficheiro).
Com um app bundle, o comando é exatamente o mesmo, só temos que mudar o caminho do arquivo apk para app bundle file.
Na verdade, jarsigner é uma ferramenta geral que é usada para assinar um arquivo jarro. A ferramenta mais adaptável para assinar um apk é o apksigner que funciona de forma similar ao jarsigner, exceto que ele não suporta assinar um pacote de aplicativos.
Assine um apk com apksigner
Important: como o seu nome indica, apksigner é apenas um signer apk, não pode assinar um App Bundle
Sintaxe para isto é tão simples como jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
Após executar este comando, ser-lhe-á pedida a password do keystore e do alias password. Introduza estas informações e pronto.