Android, cómo generar APK (signed & aligned)

Va un breve tutorial para generar archivo APK firmado y alineado para subir al Playstore.

Se requiere instalar Android Studio con SDK manager. Java SDK y configurar el PATH del sistema indicando la ruta a ambos.
Donde dice nombredetuapp colocal el nombre de tu app :smirk: .
Este tutorial es válido para MAC, no lo probé en WIN o Linux pero supongo que es igual.

1.    Remover  consola de desarrollo: cordova plugin rm org.apache.cordova.console ( no siempre es necesario pero no está de más)
2.    Generar apk: `cordova build android --release` . Se crea el archivo **android-release-unsigned.apk** en el directorio: directoriodetuapp/platforms/android/build/outputs/apk/
3.    Generar Key: `keytool -genkey -v -keystore nombredetuapp-key.keystore -alias nombredetuapp -keyalg RSA -keysize 2048 -validity 10000`   genera archivo **nombredetuapp-key.keystore**
4.    Recuerda anotar la clave usada para generar  key :grin:
5.    Copiar archivo en el mismo directorio que el apk del paso 2:  directoriodetuapp/project/platforms/android/build/outputs/apk/
6.    Situarse en el directorio anterior y ejecutar **jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore nombredetuapp-key.keystore android-release-unsigned.apk nombredetuapp**
7.    Alinear apk: `zipalign -v 4 android-release-unsigned.apk nombredetuapp.apk`
8.    Genera apk valido con el nombre: **nombredetuapp.apk**
9.    Subir a Google Play primero como version Beta luego pasar a Prod.

Espero les sea de utilidad.

4 Likes

Buenas he estado probando varias formas de crear l’APK y solo me crea una APK en formato DEBUG, que no me deja ni firmar ni subir a la play store.
He eliminado el plugin que has dicho. Pero sigue creando la APK en debug.
Alguna idea?

Gracias

Hola, estás utilizando el comando en esta forma?

cordova build android --release

Esto debería generar un app de producción.

Si estás usando Yeoman ( https://github.com/diegonetto/generator-ionic) el comando sería

grunt build:android --release

Ojalá te sirva de ayuda, saludos

Hola buenas
Estube probando varias cosas que mire por internet en varios foros.
He probado de cambiar el numero de version que hay en el xml y todo.
Hasta que hoy he actualizado Ionic y ha funcionado a la primera.

He utilizado:

cordova build android -release

Gracias por todo

1 Like

Excelente muchacho!
Solo tengo que agregar que para Mac OS X Mavericks la ruta de zipalign queda en:

/Users/TUUSUARIO/Library/Android/sdk/build-tools/23.0.3/

Sucede que por alguna razón intento agregar al path los tools como lo vi en un foro pero no podía ejecutar zipalign sin hacer referencia a la ruta completa, como sea muy util, muy muy útil

1 Like

Buenas, me esta pasando que cuando estoy generando la key hay un punto que no me deja avanzar, cuando me pide que ponga mi nombre, mi ciudad, nombre de empresa, etc, cuando me dice que presione yes si esta todo bien, me vuelve a preguntar de nuevo por todo.

1 Like

Lo mismo me esta pasando, cuando me pregunta “Es correcto CN=…? [no]:” respondo: “yes” y me vuelve a preguntar por lo mismo, he tratado poniendo ok, true y nada sucede, encontraste alguna solución? Necesito ayuda!

Hola, prueba poniendo solo la letra y

1 Like

Escribe lo en español

Fantástico tutorial, me funcionó a la perfección. Tan solo como comentaron más abajo, incluir el path del zipalign, con lo que el paso 7 quedaría así:

/Users/USUARIO/Library/Android/sdk/build-tools/25.0.3/zipalign -v 4 android-release-unsigned.apk NOMBREAPP.apk

Espero que os sirva

1 Like

Hola, hice un script que hace todo el proceso de certificación, compresión y generación automáticamente a release, quedará listo para publicar en la playstore.

Pueden verlo aquí:

Buenos días;

En mi caso el cliente nos ha proporcionado su keystore (en formato .jks), entiendo directamente que tenemos que ir a firmarla con jarsigner … me pregunta el password, y al incluirlo correctamente me responde con:
Certificate chain not found for: . must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.

Podeis alumbrarme un poco? estoy algo perdido…

Muchas gracias!