Cómo autofirmar y verificar una aplicación de android (apk) en Windows manualmente

Cómo autofirmar y verificar una aplicación de android (apk) en Windows manualmente

De acuerdo a las directrices de publicación de una aplicación de Android en Play Store, esta necesita estár firmada y comprimida con zipalign.

Para algunos desarrolladores, es mucho más fácil ejecutar este proceso manualmente en lugar de usar Android Studio por diferentes razones (no tienen ni idea de como hacerlo, la aplicación es híbrida y fue creada basicamente usando la línea de comandos).

Antes de continuar, verifica que tienes instalado el kit de desarrollo de Java y el SDK de Android instalado en tu sistema, de otra manera te perderas en alguno de los pasos. Además recuerda ejecutar siempre cmd.exe como administrador.

Para firmar tu aplicación (archivo apk) necesitarás seguir los siguientes pasos:

1) Crea un certificado auto firmado

Con el fin de firmar tu APK necesitarás un certificado. Para comenzar abre la linea de comandos (cmd.exe) y navega hasta el directorio bin de el kit de desarrollo de Java:

# Usualmente (con una instalación predeterminada) el directorio bin
# se encuentra localizado en C:\Program Files (x86)\Java\jdk1.7.0_71\bin
# pero el nombre de las carpetas pueden variar asi que verifica primero
# que el directorio exista.

# Navega hacia el directorio usando el comando cd 
# cd [directorio al que navegar]:

cd C:\Program Files (x86)\Java\jdk1.7.0_71\bin

# Ahora estarás localizado en el directorio bin
# y aqui podrás usar las herramientas de Java

C:\Program Files (x86)\Java\jdk1.7.0_71\bin >

Una vez localizado en el directorio bin de Java, podremos usar la herramienta keytool. Java Keytool es una llave y herramienta de certificados usada para manipular Java Keystores, incluida en el kit de desarrollo de Java.

Ahora solo debes ejecutar el siguiente comando para generar tu certificado para android:

# Recuerda cambiar NOMBREPROPIO Y ALIAS_PROPIO en el siguiente comando
# para generar tu certificado

keytool -genkey -v -keystore NOMBREPROPIO.keystore -alias ALIAS_PROPIO -keyalg RSA -keysize 2048 -validity 10000

Al ejecutar el comando se iniciará un cuestionario interactivo en la consola. Debes proporcionar toda la información que este solicite (tu nombre, país, clave para el certificado etc). Si hiciste todo correctamente, encontraras un nuevo archivo en el directorio bin de java con el nombre que le diste en el comand (en nuestro ejemplo "NOMBREPROPIO.keystore").

2) Firma el archivo APK con el certificado creado

Ahora que tenemos un certificado, debemos usarlo para firmar la apk. Para comenzar copia el archivo apk en el directorio bin de java (en el mismo directorio en el que esta la herramienta keytools). 

Despues de copiar el archivo, ejecuta el siguiente comando en la consola (aún localizado en el directorio bin):

# Cambia el nombre del archivo APK (incluyendo el nombre de tu keystore y el alias) en el siguiente comando
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NOMBREPROPIO.keystore MIARCHIVOAPK.apk ALIAS_PROPIO

Este comando utilizara el certificado generado previamente (que se encuentra en la misma carpeta bin junto con el apk). Al ejecutar el comando este solicitara la contraseña de tu certificado (que proporcionaste en el cuestionario), una vez proporcionada tu apk será firmada.

3) Verifica el APK (opcional)

Para verificar tu archivo APK usa el siguiente comando (aún localizado en el directorio bin):

jarsigner -verify -verbose -certs MIARCHIVOAPK.apk

Nota: este paso no es necesario para publicar tu apk, pero puede ser util para verificar si tu archivo fue firmado correctamente.

4) Usa zipalign para alinear y comprimir tu apk

Finalmente, necesitas comprimir el archivo apk autofirmado. Para comprimirla necesitaremos zipalign, herramienta que ya viene incluida en el SDK de Android.

A continuación, navega a la carpeta build-tools del SDK de Android Studio por medio de la consola de comandos (cmd.exe) :

# Ve a la carpeta build-tools que contiene zipalign.exe con la consola
# Usualmente localizada en la carpeta AppData C:\Users\MyUser\AppData\Local\Android\android-sdk\build-tools\23.0.0
# Or just browse to the folder that contains the zipalign.exe file in your sdk

cd C:\Users\MyUser\AppData\Local\Android\android-sdk\build-tools\23.0.0

# Y estarás localizado ahora en el directorio de build tools :

C:\Users\MyUser\AppData\Local\Android\android-sdk\build-tools\23.0.0 >

Ahora copia el archivo apk firmado del paso 2 en la carpeta build tools donde zipalign.exe está localizado (android-sdk\build-tools\xx.x.x) y ejecuta el siguiente comando :

# Usa el siguiente comando para comprimir tu archivo APK 
# Provee como primer parametro el nombre del APK localizado (firmado) en la carpeta build-tools
# y como segundo parametro el nuevo nombre del APK que será alineado
zipalign -v 4 ARCHIVO_FIRMADO_SIN_ALINEAR.apk ARCHIVO_FIRMADO_ALINEADO.apk

# Ahora el nuevo archivo será ARCHIVO_FIRMADO_ALINEADO.apk y esté podra ser publicado en play store

Finalmente el nuevo APK (ya alineado) será creado en la misma carpeta que el archivo APK anterior y podrá ser subido a la Play Store.

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable