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
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.
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