Cómo lidiar con INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES sin desinstalación

Traté de reinstalar un apk

$adb install -r new.apk 

Y muestra el error:

 Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] 

Una solución es desinstalar e instalar new.apk, que funciona bien.

Pero me pregunto si podría volver a comstackr una aplicación y volver a instalarla sin la desinstalación. P.ej. cambie alguna configuración en AndroidManifest.xml, o no firme el APK, etc.

Sería muy apreciado si pudieras decirme todo el significado de “INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES”.

Significa que la nueva copia de su aplicación (en su máquina de desarrollo) se firmó con una clave de firma diferente a la copia anterior de su aplicación (instalada en el dispositivo / emulador). Por ejemplo, si se trata de un dispositivo, es posible que haya puesto la copia anterior en una máquina de desarrollo diferente (por ejemplo, la máquina de otro desarrollador). O bien, el anterior está firmado con su clave de producción y el nuevo está firmado con su clave de depuración.

Me encontré con esto mientras probaba en un nuevo Xoom. Previamente había instalado mi aplicación desde Marketplace. Más tarde, mientras trataba de probar una nueva versión de la aplicación, encontré este error.

Lo arreglé quitando la aplicación que se instaló en Marketplace (solo mantén presionada y arrastra a la papelera). A partir de entonces, pude implementar mi versión de desarrollo sin ningún problema.

Esto me sucedió cuando otro desarrollador del equipo creó nuestra aplicación en el dispositivo de hardware en el que intentaba implementar. Desinstalar la aplicación del hardware solucionó mi problema.

Este es el comando para desinstalar la aplicación del dispositivo usando adb:

 adb uninstall  

Recibí este error incluso después de desinstalar el APK original, lo que me desconcertó. Finalmente me di cuenta de que había configurado varios usuarios en mi Nexus 7 para probar y que la aplicación aún estaba instalada para uno de los otros usuarios. Una vez que lo desinstalé para todos los usuarios, el error desapareció.

Cambié el nombre del paquete mientras codificaba una actualización para poder depurarlo en mi dispositivo a través de Eclipse, sin eliminar la versión anterior que estaba instalada. Sin revertir el nombre del paquete que estaba usando al intentar reinstalar, obtuve este mismo error. Usando el mismo nombre de paquete, la reinstalación fue exitosa.

Simplemente elimine la comstackción anterior del dispositivo y vuelva a instalar la misma. Debido a que device.keystore ya existe en el dispositivo, solo desinstale la comstackción y vuelva a instalar el APK, eso es todo.

Gracias

Enfrenté otro caso de uso en el que obtuve el error similar. Cuando al principio obtuve el error, me entró el pánico y /data/data/{package.name} Después de eso lo intenté, y mi problema todavía estaba presente. Luego intenté desinstalar, falló.

Luego eliminé el archivo apk presente en /system/app (acceso raíz requerido) e intenté la desinstalación y se realizó con éxito.

Después de eso intenté reinstalar el apk, funcionó.

Por lo que vale, me encontré con este problema después de agregar un nuevo complemento a mi proyecto de Cordova. He estado haciendo cordova do builds e instalándome directamente en el dispositivo a través de USB.

Lo arreglé desinstalando la aplicación del dispositivo y en la siguiente implementación no hubo problemas.

Si encuentra una implementación fallida en un dispositivo o emulador Andorid con el error “Error [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]” en la ventana de resultados, simplemente elimine la aplicación existente en el dispositivo o emulador y vuelva a implementarla. Las comstackciones de depuración usarán un certificado de depuración mientras que las versiones de lanzamiento usarán su certificado configurado. Este error simplemente le informa que el certificado de la aplicación instalada en el dispositivo es diferente al que está intentando instalar. En escenarios sin desarrollo (tienda de aplicaciones), esto puede ser indicador de una aplicación corrupta o modificada que no es segura para instalar en el dispositivo.

Nada de lo anterior funcionó para mí. El problema para mí fue que tenía una fuente incorrecta en mi Java Build Path para android-support-v7-appcompat. Cuando vaya a Proyecto> Ruta de comstackción> Configurar ruta de comstackción>. En la pestaña Fuente, asegúrese de tener Android-support-v7-appcompat / gen, android-support-v7-appcompat / libs y android-support-v7-appcompat / src y nada más. Haga clic en Aceptar y debería funcionar.

He tenido el mismo error hoy, pero el problema no era exactamente el mismo. Estoy usando ADB con Android instalado en VirtualBox . Traté de instalar diferentes versiones de mi aplicación (firmado / no firmado, modo de depuración / liberación) y obtuve dos errores alternativamente: INSTALL_FAILED_UID_CHANGED e INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES .

Ahora, al buscar en /data/data/{package.name} , encontré un grupo de archivos que seguían allí después de desinstalar la aplicación. Intenté rm -rf sin éxito: obtuve errores de E / S.

La solución a esto fue:

  • Apagar la máquina virtual
  • Monte la imagen de VDI con vdfuse (lectura / escritura)
  • Reparar el archivo de imagen Partition1 con e2fsck
  • Umount y reinicie la VM

Tuve el mismo problema hasta que me di cuenta de que tenía el simulador en ejecución y adb estaba tratando de instalar en ese

Como la verificación se basa en el nombre del paquete, puede cambiar el nombre del paquete dentro de su config.xml o archivo de manifiesto por otro nombre que desee.

Al publicar su aplicación, ¡no olvide cambiar el nombre!

Tuve este problema al intentar ejecutar la tarea gradle connectedDebugAndoidTest (o connectedAndroidTest ) en Genymotion . Ejecutarlo en emulador normal resolvió el problema.