¿Cómo firmar mi apk para subirlo a Play Store de Google?

Thian Lopez Zambrano
5 min readFeb 19, 2019

--

Este es otro post que complementa a mi curso de Ionic Framework en Ecudevs.

Estamos listos, ya hemos pasado por lo más difícil, corregir bugs, realizar pruebas, cambios a última hora, pero al fin nuestra APP está lista, nuestro APK por fin compiló. Pero, ¡espera! aun hay un detalle más que debes resolver para que Google pueda enseñar al mundo lo que tienes para él… debes firmar tu APK.

Pero…

¿Qué es “firmar un APK”?

Cambiemos el sentido a esta pregunta diciendo: Por que debo firmar mi APK. Y respondamos respondamos textualmente como dice la documentación oficial para android:

“ Android exige que todos los APK se firmen digitalmente con un certificado para poder instalarse.”

Es decir, esto es cosa del sistema operativo como tal, así que si por alguna razón muy inimaginable Google permite publicar tu APP sin firmar y alguien la descarga, Android le dirá que no se puede instalar, y así será como si nunca la hubieras subido, o inclusive peor.

¡Pero tranquilo!, dejemos de hablar de estas cosas tan técnicas y teóricas. Manos a la obra.

1. Consigamos un certificado de firma

Digamos que el certificado que debemos conseguir va a tener nuestra “rubrica” lista para ser estampada en un papel importante que valide que es de mi propiedad.

Lleguemos hasta la ruta donde se encuentran instalados nuestros archivos de Java esta ruta pude variar mucho dependiendo de tu sistema operativo y la versión de Java que tengas instalado, en mi caso la ruta es la siguiente:

C:\Program Files\Java\jdk1.8.0_181\bin

Vamos a usar la herramienta llamada keytool. Para Ello vamos a ubicarnos en este directorio con nuestra terminal en modo de administrador.

Ya con nuestro terminal en la ruta vamos a ejecutar el siguiente comando:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Hice énfasis en las configuraciones que puedes cambiar sin que represente un peligro de error alguno:

my-release-key va a ser el nombre o la ruta de destino que va tener nuestro archivo de firma.

alias_name va a ser el nombre que queremos hacer referencia con nuestra firma.

10000 va a ser los días de validez de nuestra firma.

En mi caso en particular el comando queda de la siguiente manera:

keytool -genkey -v -keystore mi-llave-maestra.keystore -alias thianlopezz -keyalg RSA -keysize 2048 -validity 10000

Ejecutamos.vamos llenando el formulario que se despliega en nuestra terminal, comenzando con la contraseña que va a tener nuestra firma:

Al final ponemos aceptamos ingresando “y”, luego nos pregunta si queremos configurar la contraseña para alias thianlopezz, presionamos enter para que sea la misma contraseña que ingresamos al prinicipio.

Archivo .keystore generado

Considera guardar este archivo en un lugar seguro ya que en el caso de que publiques tu APK y más adelante quieras subir una actualización, esta debe llevar la misma firma.

2. Firmemos nuestro apk

Primero ubiquemos nuestra llave en el mismo directorio que el APK que vamos a firmar:

En la misma ruta de la terminal que abrimos vamos a ejecutar la rutina jarsigner, esta es la herramienta que va nos ayuda a firmar como tal:

Lo usamos escribiendo el siguiente comando desde nuestra terminal:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore C:\Users\thian\Desktop\generated\mi-llave-maestra.keystore C:\Users\thian\Desktop\generated\app-release-unsigned.apk thianlopezz

Configuramos la ruta de nuestro archivo .keystore y .apk, y por último especificamos el alias de nuestra firma.

Escribimos nuestra contraseña, luego de esto se habrá firmado nuestro archivo.

Pero antes un último paso.

3. Zipalign

Según la documentación oficial de Android:

Zipalign garantiza que todos los datos descomprimidos comiencen con una alineación de bytes en particular relacionada con el comienzo del archivo, lo que reduce el consumo de memoria RAM de una aplicación.

Un último paso para conseguir un mejor rendimiento de nuestra APP.

Para hacerlo vamos a usar una herramienta propia del SDK de Android, ubiquemonos en la ruta de nuestro SDK en mi caso es la siguiente:

C:\Users\thian\AppData\Local\Android\Sdk\build-tools\28.0.3

Accedemos a esta ruta nuevamente con nuestra terminal en modo administrador y escribimos el siguiente comando:

zipalign -v 4 C:\Users\thian\Desktop\generated\app-release-unsigned.apk C:\Users\thian\Desktop\generated\superapp.apk

No olvides configurar la ruta de nuestro archivo firmado y la ruta que va a tener tu archivo apk alineado.

Y con esto estamos listos, ve y enséñale al mundo lo que tienes.

Conclusión

Es muy importante que sepas estos pequeños detalles que muchas veces pueden resultar un poco tedisosos y te frenan en la consecución de tu objetivo, muchas veces la documentación puede ser un poco dificil de enteneder. Espero haberte ayudado y no olvides dejar tu aplauso que ayuda bastante.

--

--