Ok here we go. La forma más frecuente de crear un apk sin firmar es utilizando la línea de comandos:
./gradlew assemble<$Flavor><$BuildType>
Es bastante similar para app bundle:
./gradlew bundle<$Flavor><$BuildType>
por ejemplo:
./gradlew assembleProdRelease // building apk./gradlew bundleProdRelease // building app bundle
Típicamente, estos son los comandos para construir un apk/app bundle, pero la gente suele añadir el signingConfig a build.gradle para hacer la parte de la firma al mismo tiempo.
Así, eliminando esta parte en el archivo build.gradle, estamos bien para crear un apk/app bundle sin firmar.
El apk construido estará alojado en: build/outputs/apk/flavor/buildtype/
El del app bundle estará en: build/outputs/bundle/flavorBuildType/
Tenga en cuenta que este apk no puede ser instalado en su dispositivo sin estar firmado. Obtendrás un error si intentas instalarlo:
Para firmar ese apk o app bundle, primero usamos keytool para generar un keystore (si no tienes uno) y luego usamos jarsigner o apksigner para firmar el apk o app bundle con el keystore generado.
Generar keystore:
Ejecutar el comando siguiente:
keytool -genkey -v -keystore <release_keystore.keystore> -alias <alias_name> -keyalg RSA -keysize 2048 -validity 10000
Entonces te pedirá algunos datos como es habitual pero los más importantes son la contraseña del keystore y la contraseña del alias. Una vez generado el keystore, vamos a firmarlo con diferentes opciones.
Firmar un apk/app bundle con jarsigner
Suponiendo que ya tienes instalado el JDK.
jarsigner -keystore <keystore_file> -storepass <storepass> -keypass <keypass> <unsigned_apk_file> <alias_name>
Este comando no genera ningún archivo nuevo pero el apk sin firmar pasará a estar firmado sin ningún cambio externo visible (nombre y tamaño del archivo).
Con un paquete de aplicaciones, el comando es exactamente el mismo, sólo tenemos que cambiar la ruta del archivo apk al archivo del paquete de aplicaciones.
De hecho, jarsigner es una herramienta general que se utiliza para firmar un archivo jar. La herramienta más adaptable para firmar un apk es apksigner que funciona de manera similar a jarsigner, excepto que no soporta la firma de un paquete de aplicaciones.
Firmar un apk con apksigner
Importante: como su nombre indica, apksigner es sólo un firmador de apk, no puede firmar un App Bundle
La sintaxis para esto es tan sencilla como la de jarsigner:
apksigner sign --ks <keystore_file> <apk_file>
Después de ejecutar este comando, se le pedirá la contraseña del almacén de claves y la contraseña del alias. Introduzca esta información y ya está listo.