Error de instalación: INSTALL_PARSE_FAILED_NO_CERTIFICATES

Con el riesgo de repetir lo que parece ser una queja muy común, creo que tengo una variación sustancial en este error.

La aplicación no se instalará desde Eclipse y esto aparecerá en la consola: Error de instalación: INSTALL_PARSE_FAILED_NO_CERTIFICATES.

LogCat proporciona alguna iluminación: El paquete com.xxx no tiene certificados en la entrada assets / fonts / helvetica_neue.ttf; ¡postergación!

Lo que significa que el dispositivo (o emulador) cree que este archivo en particular no fue firmado.

Las soluciones habituales propuestas para esto son:
– Cambiar el nombre del archivo ofensivo. Hemos intentado que, luego se queja sobre el siguiente archivo, luego el siguiente, y así sucesivamente.
– Añadir un archivo ficticio. Probado que también. Se queja del nuevo archivo, independientemente de lo que se llame.
– Compilar por más de Android 1.6. Estamos compilando para 2.3.

Vale la pena señalar que esto sólo ocurre cuando lanzamos una prueba de unidad. Podemos instalar la aplicación "real" por sí sola sin dificultades. También estamos utilizando Maven y, por supuesto, el complemento de Maven para Android.

Cualquier idea o sugerencia sería muy bienvenida y por supuesto si lo averiguamos por nuestra cuenta voy a publicar cualquier conclusión.

Me encontré con esto a través de la depuración normal – mientras que es poco probable que ayude todo el tiempo, simplemente ir a Proyecto -> Limpiar y reconstruir todo puede ser suficiente para borrar el error.

Encontré que era debido a mi versión de JDK. Estaba teniendo este problema con 'ant' y fue debido a esta PRECAUCIÓN mencionada en la documentación:

http://developer.android.com/guide/publishing/app-signing.html#signapp

Precaución: A partir de JDK 7, el algoritmo de firma predeterminado ha cambiado, requiriendo que especifique los algoritmos de firma y digest (-sigalg y -digestalg) al firmar un APK.

Tengo JDK 7. No puedo hablar por su Maven, pero es probablemente el mismo problema. En mi registro de Ant, usé -v para verbo y mostró

$ ant -Dadb.device.arg=-d -v release install [signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments: [signjar] '-keystore' [signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore' [signjar] '-signedjar' [signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk' [signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk' [signjar] 'mykey' [exec] pkg: /data/local/tmp/PairFinder-release.apk [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 

Firmé el JAR manualmente y zipaligned él, pero dio un error ligeramente diferente:

 $ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey $ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk $ adb -d install -r bin/PairFinder-release.apk pkg: /data/local/tmp/PairFinder-release.apk Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] 641 KB/s (52620 bytes in 0.080s) 

Encontré eso contestado aquí.

Cómo tratar con INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES sin desinstalación

Sólo tenía que desinstalarlo y luego funcionó!

 $ adb -d uninstall com.kizbit.pairfinder Success $ adb -d install -r bin/PairFinder-release.apk pkg: /data/local/tmp/PairFinder-release.apk Success 641 KB/s (52620 bytes in 0.080s) 

Ahora sólo necesito modificar el build.xml para usar esas opciones al firmar!

Esto está arreglado ahora. Si alguien se encuentra con la misma configuración de proyecto único y el error de la solución puede ser de algún valor.

El problema surgió de la configuración de nuestros directorios de recursos en el POM de nuestro proyecto de prueba (el proyecto que contiene nuestras pruebas unitarias). Estaban señalando los directorios de recursos del proyecto que se estaba probando. Esta configuración debe funcionar así que voy a adivinar que se trata de un error en el complemento de Maven Android que hace que los recursos permanezcan sin firmar.

Así que la solución era eliminar las referencias a los directorios de recursos externos (no puedo decir por qué se hizo de esa manera inicialmente, pero su eliminación parece no tener efectos nocivos) y configurar los directorios de recursos de la manera estándar (tomando como ejemplo el POM proporcionado por el plugin del proyecto maven arquetipo con pruebas).

Tuve este problema con MotoDev 3.0.0

La solución era eliminar el emulador y crear uno nuevo.

De hecho, no es necesario eliminar el emulador antiguo, solo cree uno nuevo y la instalación se realizará sin problemas.

Tenía el mismo problema, era que estaba configurado para usar la App Store en lugar de depurar bajo la configuración de destino de Android, y yo no había configurado la tienda de aplicaciones todavía. Cambiado de nuevo a depurar y estaba bien.

Esta pregunta tiene una respuesta realmente simple si está usando Maven, sólo unas pocas líneas agregadas a su pom:

¿Qué tipo de pitfals existen para la firma de APK para Android?

Elija Java SE 6 en la aplicación de preferencias de Java

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.