Firmar apk - CGastrell/phonegap GitHub Wiki

Los pasos manuales para firmar un aplicacion en Android son:

  • generar una key en base a una serie de datos nuestros. Esta key no puede ser duplicada aun ingresando los mismos datos
  • firmar la aplicacion: significa embeberle la key en el archivo binario de la aplicacion compilada
  • alinear la aplicacion compilada y firmada

Los pasos con Phonegap son distintos, tal vez incluso mas complejos, pero a contrapartida solo necesitamos hacerlos una vez, luego quedaran listos para que la aplicacion se firme cuando querramos.

  • generar una key en base a una serie de datos nuestros. Esta key no puede ser duplicada aun ingresando los mismos datos
  • indicar a ant donde se encuentra el keystore
    • ant.properties
  • indicar claves para el keystore
    • custom_rules.xml
    • secure.properties

En ambos casos es inevitable generar una key dentro de un keystore

Para estos pasos tendremos que utilizar herramientas provistas por JDK/JRE que es uno de los requerimientos para iniciar el curso.

Otro requerimiento fue configurar correctamente la variable de entorno JAVA_HOME. Esta representa la ruta a donde se encuentra instsalado JDK/JRE, deberia apuntar a algo como C:\Program Files\Java\jdk1.8.0_45.

Dentro de este directorio tendremos uno llamado jre y otro bin. En estos directorios encontraremos las aplicaciones que necesitamos:

  • keytool
  • jarsigner
  • zipalign

Prueben en una ventana de comando (cmd):

dir "%JAVA_HOME%"

Deberian ver algo como esto:

C:\Users\cg>dir "%JAVA_HOME%"
 Volume in drive C has no label.
 Volume Serial Number is 0CD8-9E9F

 Directory of C:\Program Files\Java\jdk1.8.0_45

18/04/2015  05:54 p.m.    <DIR>          .
18/04/2015  05:54 p.m.    <DIR>          ..
18/04/2015  05:53 p.m.    <DIR>          bin
10/04/2015  11:00 a.m.             3.244 COPYRIGHT
18/04/2015  05:53 p.m.    <DIR>          db
18/04/2015  05:53 p.m.    <DIR>          include
18/04/2015  05:53 p.m.         5.172.313 javafx-src.zip
18/04/2015  05:53 p.m.    <DIR>          jre
18/04/2015  05:53 p.m.    <DIR>          lib
18/04/2015  05:53 p.m.                40 LICENSE
18/04/2015  05:53 p.m.               159 README.html
18/04/2015  05:53 p.m.               527 release
10/04/2015  11:00 a.m.        21.242.025 src.zip
18/04/2015  05:53 p.m.           110.114 THIRDPARTYLICENSEREADME-JAVAFX.txt
18/04/2015  05:53 p.m.           178.403 THIRDPARTYLICENSEREADME.txt

Que .apk?

Hasta ahora siempre ejecutamos la aplicacion contra el telefono. Es decir:

phonegap run android

compila la aplicacion por nosotros y la envia al telefono para que podamos verla funcionando. Sin embargo el proceso esta simplificado y lo que realmente hace es ejecutar:

phonegap build android --debug
phonegap run --device

Ahora bien, para firmar la aplicacion necesitaremos el archivo .apk preparado para produccion, para esto instruimos al compilador que queremos un release:

phonegap build android --release

Con este parametro el compilador ant procesa el codigo para nuestra aplicacion y guarda el archivo .apk de la aplicacion generada en:

platforms/android/ant-build/CordovaApp-release-unsigned.apk

Como se puede deducir por el nombre, si bien la aplicacion fue generada para un release, permanece sin firmar (unsigned).

Este es el archivo que vamos a usar para los siguientes procedimientos de firmar la aplicacion y alinear el archivo binario (zip).

Si bien los siguientes pasos no son necesarios automatizando la firma del archivo .apk a traves de Phonegap y ant, la ubicacion del archivo sera la misma solo que con distinto nombre.

Referencias

http://www.adamwadeharris.com/sign-publish-phonegap-app-google-play-store-windows/

http://www.adamwadeharris.com/android-automation/

http://developer.android.com/tools/publishing/app-signing.html

http://developer.android.com/tools/publishing/preparing.html

http://certificate.fyicenter.com/97_JDK_Keytool_How_to_Find_the_Java_Keytool_on_Windows.html

http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html

⚠️ **GitHub.com Fallback** ⚠️