Friday, November 9, 2012

"Google Play no acepta archivos APK firmados con el certificado de depuración. Crea un certificado nuevo que sea válido durante al menos 50 años."

He tratado de subir mi primera aplicación de android al market Google Play y me apareció el siguiente error:

"Google Play no acepta archivos APK firmados con el certificado de depuración. Crea un certificado nuevo que sea válido durante al menos 50 años."

Qué es lo que ocurre? El APK debe ser firmado para que no se pueda modificar a menos que se tenga la llave privada con la que se generó la firma. Sin esta firma, los dispositivos Android no querrán instalar una aplicación.
En un principio, cuando se está desarrollando, la aplicación se firma con una llave de debug, que sirve para poder depurarlo y probar la aplicación en tu dispositivo mientras haces pruebas. Para publicarlo en el market, esta firma debe cambiar ya que la firma de debug no es aceptada.

Si utilizan Basic4Android, hay una forma muy sencilla para solucionar este problema. Solo sigan este tutorial.
Pero no es mi caso, yo uso Eclipse. En el sitio de android developers se puede encontrar información al respecto. Aquí lo hay que hacer según android developers:



  • Obtain a suitable private key
  • Compile the application in release mode
  • Sign your application with your private key
  • Align the final APK package


  • Si están haciendo una aplicación nativa pueden utilizar el wizard de exportar de Eclipse el cual realiza todos estos pasos.

    Yo estoy trabajando en una aplicación multi-plataforma utilizando Rhomobile por lo que requiere seguir los pasos descritos, pero es muy fácil:

    Generar una clave privada, se debe usar un keytool. En Windows abrir consola y utilizar el siguiente comando:


    $ keytool -genkey -v -keystore nombre-de-mi-llave.keystore
    -alias nombre_alias -keyalg RSA -keysize 2048 -validity 10000

    Donde deben reemplazar "nombre-de-mi-llave" y "nombre_alias" por el que gusten. Cuando corran ese comando se les pedirá ciertos datos, incluida una clave la cual deben guardar muy bien ya que si alguien tiene acceso a ella y a la llave pueden manipular su aplicación.
    Si quieren más detalles sobre el comando lean aquí

    Una vez generada la llave. Abran su proyecto y vayan al build.yml y bajo android agreguen lo siguiente bajo production, de tal manera que se vea así:


    android:
      android_title: 0
      version: 2.3.3
      emulator: rhomobile
      production:
        certificate: E:/nombre-de-mi-llave
        password: "clave_de_la_llave"
        alias: "nombre_alias"


    ahora abran la consola de nuevo, vayan a la carpeta de su proyecto y corran el comando:

    rake device:android:production

    de manera que compile nuevamente el proyecto, pero esta vez utilizando la llave indicada para firmar el apk. Cuando corran esto se les pedirá que completen nuevamente los campos que fueron solicitados cuando generaron la llave. Terminado de correr el comando podrán navegar a la carpeta de su aplicación/bin/target y encontrarán el APK firmado y listo para ser subido a Google Play :)

    Bookmark and Share

    Related Posts Plugin for WordPress, Blogger...