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:
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 :)
"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:
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 :)