Cordova-Android: Cómo firmar tu aplicación

cordova_android_sign

En esta entrada vamos a ver cómo se firma una aplicación de Android creada con Córdova / Phonegap desde la linea de comandos. Este procedimiento se puede hacer también con Eclipse ADT o con Android Studio, pero si no los has utilizado en ningún momento a la hora de desarrollar tu aplicación o ni siquiera los tienes instalados, como es mi caso, ¿para qué hacerlo ahora?.

Veamos qué pasos hay que dar:

1 – Generar el archivo .apk de la aplicación.

Para ello debemos abrir un terminal y colocarnos en el directorio donde esté la aplicación.

cd /ruta/al/directorio/de/la/aplicacion

y a continuación ejecutar el código que generará el archivo apk sin firma:

cordova buil android --release

Esto generará el archivo android-release-unsigned.apk en /platforms/android/build/outputs/apk/.

2- Generar la llave privada.

Para generar la llave privada utilizaremos la herramienta keytool de la siguiente manera:

keytool -genkey -v -keystore llavedetuaplicacion.keystore -alias tu_alias -keyalg RSA -keysize 2048 -validity 365

Al ejecutar este código se te preguntarán varias cuestiones importantes para crear tu llave. Tras responder a todas las preguntas pertinentemente en la terminal debería quedar algo así:

Introduzca la contraseña del almacén de claves:
 Volver a escribir la contraseña nueva:
 ¿Cuáles son su nombre y su apellido?
 [Unknown]:  Nombre Apellido
 ¿Cuál es el nombre de su unidad de organización?
 [Unknown]:  Desarrollador
 ¿Cuál es el nombre de su organización?
 [Unknown]:  Organización
 ¿Cuál es el nombre de su ciudad o localidad?
 [Unknown]:  Tu Ciudad
 ¿Cuál es el nombre de su estado o provincia?
 [Unknown]:  Tu Provincia
 ¿Cuál es el código de país de dos letras de la unidad?
 [Unknown]:  Código de tu país
 ¿Es correcto CN=Nombre Apellido, OU=Desarrollador, O=Organización, L=Tu Ciudad, ST=Tu Provincia, C=Código de tu país?
 [no]:  si
Generando par de claves DSA de 1.024 bits para certificado autofirmado (SHA1withDSA) con una validez de 365 días
 para: CN=Nombre Apellido, OU=Desarrollador, O=Organización, L=Tu Ciudad, ST=Tu Provincia, C=Código de tu país
 Introduzca la contraseña de clave para <mykey>
 (INTRO si es la misma contraseña que la del almacén de claves):
 [Almacenando llavedetuaplicacion.keystore]

Esto generará un archivo llavedetuaplicacion.keystore el cual tiene una validez de 365 días, osea un año. Para cambiar ésto, basta con cambiar el valor 365 en “-validity” por el que se quiera. Es importante guardar bien este archivo ya que será necesario utilizarlo en futuras ocasiones para firmar actualizaciones de tu aplicación que quieras subir a Google Play.

3- Firmar la aplicación.

Para firmar la aplicación utilizaremos la herramienta jarsigner de la siguiente manera

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /ruta/al/archivo/llavedetuaplicacion.keystore /ruta/al/archivo/android-release-unsigned.apk tu_alias

Ahora el archivo android-release-unsigned.apk estará firmado correctamente.

4- Alinear la aplicación.

Alinear la aplicación trata de optimizar el paquete .apk adaptándolo a los requisitos óptimos del sistema Android. Para ello utilizaremos la herramienta zipalign. En mi caso, que utilizo Arch Linux, si ejecuto zipalign directamente en la terminal me dará el error “bash: zipalign: no se encontró la orden”. Por ello he de ejecutar zipalign desde el directorio donde se encuentra. En mi caso está en /opt/android-sdk/build-tools/20.0.0/. Por lo tanto, el código para alinear la aplicación queda así:

/opt/android-sdk/build-tools/20.0.0/zipalign -v 4 /ruta/al/archivo/android-release-unsigned.apk /ruta/al/nuevo/archivo.apk

El archivo generado archivo.apk ya está firmado, alineado y listo para subir a Google Play.

¡Suerte!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *