Skip to content
Christian Gastrell edited this page Jul 20, 2015 · 11 revisions

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

  1. Repaso y conceptos basicos
  2. Ejercicios para repasar
  3. Problematica de desarrollo mobile
  4. Phonegap
  5. Requerimientos e instalacion
  6. Phonegap CLI
  7. [Primeros ejercicios con Phonegap](Ejercicio Phonegap)
  8. Plugins
  9. Hello world
  10. Estructura de un proyecto Phonegap
  11. Plugin Device
  12. Debugging
  13. Incorporando un framework CSS
  14. Plugin Vibration
  15. Sumando partes
  16. Plugin Battery Status
  17. Un poco de jQuery
  18. jQuery Mobile
  19. Navegacion
  20. Plugin Dashboard
  21. Revision de Plugin Dashboard
  22. Paginas extra
  23. ToDo
  24. Persistencia
  25. ToDo Persistente
  26. Plugin Camera
  27. Opciones de camara
  28. App Mi Galeria
  29. Revision de Galeria
  30. Plugin File
  31. Escribir y leer texto
  32. Escribir archivos binarios
  33. Guardando fotos
  34. Debugger: weinre
  35. Inspeccionar con weinre
  36. Phonegap Developer App
  37. Refactor de apps
  38. Plugin Media
  39. Pruebas con audio
  40. Control y monitoreo de audio
  41. Encapsular play/pausa
  42. Hacks
  43. Formato de tiempos
  44. Grabar y reproducir
  45. Proyecto Integrador
  46. Revision de interfaz
  47. Interfaz basica
  48. Entrevista: modelo
  49. Funcionalidad: revision
  50. Seleccion de framework
  51. iRec: navegacion
  52. iRec: fileApi
  53. iRec: guias
  54. iRec: entrevistas
  55. iRec: recordApi
  56. iRec: helpers
  57. iRec: mediaApi
  58. iRec: inicializar paginas
  59. iRec: refactor
  60. iRec: mediaApi refactor
  61. iRec: recordApi refactor
  62. iRec: helpers
  63. iRec: guias.js
  64. iRec: entrevistas.js
  65. iRec: crear guias
  66. iRec: re-inicializando
  67. iRec: re-ordenando
  68. iRec: pendientes
  69. iRec: reporte ux
  70. iRec:revision: volver
  71. iRec:entrevista: volver
  72. iRec:revision: cambios
  73. iRec:revision: stop
  74. iRec:revision: Rew 10"
  75. iRec:revision: tag Go
  76. iRec: limpieza
  77. Firma de apps
  78. Android
  79. Generacion de key
  80. Firma de apk
  81. Alineacion de zip
  82. Firmar con Phonegap
  83. iOS
  84. Detalles finales
  85. Config.xml
  86. Iconos
  87. Splash
Clone this wiki locally