¿Cómo trato con el código de error de instalación desconocido -505?

9

Tengo un Nexus 7 y se acaba de actualizar a Android 5.

Dos aplicaciones me causan problemas después de la actualización del sistema, juegos que juegan mis hijos. Maneras tontas de morir y VVVVVV. Ambos tenían iconos después de la actualización, pero cuando se hizo clic, apareció una ventana emergente que decía "Aplicación no instalada". Intento instalarlos. La descarga está bien. La instalación comienza. Y luego un mensaje de error:

Código de error desconocido durante la instalación de la aplicación: "-505"

El mismo error exacto para ambas aplicaciones. He reiniciado el dispositivo en vano.

No tengo idea de qué hacer a continuación. Por favor, ¿podría algún alma amable darme consejos sobre cómo podría solucionar este problema?

David Heffernan
fuente

Respuestas:

10

TL; DR

Este problema ocurre cuando una aplicación intenta volver a declarar un permiso existente, con un mensaje de error INSTALL_FAILED_DUPLICATE_PERMISSION. Afectó principalmente a las aplicaciones basadas en Adobe AIR (prefijo de paquete con com.air). La causa principal es la implementación de código diferente en Lollipop 5.0 al verificar la firma de un certificado utilizado para firmar una aplicación. Para la solución, salte a la parte "Solución".

Actualización : Google ha solucionado este problema en Lollipop 5.0.1.


Detalles técnicos

Extractos del rastreador de problemas de Android L Developer Preview que están vinculados desde una entrada en el rastreador de problemas de AOSP ,

Publicación # 4 :

logcat me dice que hay un conflicto con la redeclaración de permisos durante la instalación (en mi caso, Amazon está intentando redeclarar getui.permission.GetuiService, que ya es propiedad de Camera 360)

LogCat de la publicación n. ° 12 :

10-25 08:06:37.805   749   824 W PackageManager: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 D Finsky  : [1] PackageInstallerImpl.cancelSession: Canceling session 121130466 for com.tencent.mm
10-25 08:06:37.926  4812  4812 E Finsky  : [1] PackageInstallerImpl.handleCommitCallback: Error -505 while installing com.tencent.mm: INSTALL_FAILED_DUPLICATE_PERMISSION: Package com.tencent.mm attempting to redeclare permission com.google.android.c2dm.permission.SEND already owned by com.google.android.gsf
10-25 08:06:37.926  4812  4812 W Finsky  : [1] 4.installFailed: Install failure of com.tencent.mm: -505 null
10-25 08:06:37.933   749   749 D ZenLog  : intercepted: 0|com.android.vending|-973170826|null|10017,!priority
10-25 08:06:37.933   749   749 V NotificationService: pkg=com.android.vending canInterrupt=false intercept=true
10-25 08:06:37.964  4812  4812 D Finsky  : [1] InstallerTask.cancelCleanup: Cancel running installation of com.tencent.mm

Extractos del rastreador de problemas de AOSP ,

Publicación # 4

En API19, el nuevo X509CertImpl (encCert) envuelve el certificado (que ya está analizado y listo para el cálculo SHA1), mientras que en API 21, el certificado se reenvía como flujo de bytes, se analiza nuevamente y se procesa en una fábrica de certificados. Qué fábrica es, depende del contexto. En el caso de los dispositivos L que probé, la fábrica creará un certificado OpenSSLX509. Desafortunadamente, hay algo en nuestro certificado con el que openssl tiene problemas y la huella digital cambia durante el procesamiento de openssl. Puedo reproducir esto también con la herramienta openssl, cuando convierto nuestro certificado a algún otro formato (por ejemplo, PEM).

Si el SHA1 se calculara directamente en 'encCert.getEncoded ()', sería correcto en ambos casos.


Solución

Actualización : A partir del 2014-12-04, Google ha solucionado este problema en Lollipop 5.0.1. Para aquellos que no hicieron ninguna solución al tratar de reinstalar la aplicación, pueden flashear la imagen de Lollipop 5.0.1 cuando esté lista / esperar la OTA.

Publicación # 20, # 21

Parece que esto se ha solucionado en 5.0.1:

https://android.googlesource.com/platform/libcore/+/6632d8c9d8d1a3ac338d541676148677641bafe3

https://android.googlesource.com/platform/frameworks/base/+/32a22c44b8351c1cccd3a1f9c47a33469d9378e0

Estado: liberado

Nota del comitente

Recupere aplicaciones con certificados malformados.

Hubo una ventana de tiempo en Lollipop donde persistimos los certificados después de haber pasado por un ciclo de decodificación / codificación. La biblioteca OpenSSL bien escrita era liberal cuando se decodificaba (lo que permitía analizar certificados ligeramente mal formados), pero luego era estricta cuando se codificaba, dándonos diferentes bytes para efectivamente el mismo certificado.

Un cambio relacionado de libcore (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) ahora devuelve los bytes originales textualmente, reparando las instalaciones e instalaciones previas a Lollipop después de ese cambio.

Este cambio recupera cualquier aplicación que se haya instalado durante el período de tiempo descrito anteriormente mediante una verificación única para ver si los certificados son efectivamente iguales.


Consulte la revisión anterior para otras soluciones sugeridas.

Andrew T.
fuente
Tengo lo mismo que David: nada que desinstalar del dispositivo, ADB no ve mi dispositivo, los intentos de instalación nuevamente dan como resultado -505 de Google Play y un error no descriptivo cuando se instala desde el APK local. Cambiar a Invitado tampoco es útil.
Roman R.
2
Bueno, me di cuenta de que también me enfrenté a este problema. Desinstalé con éxito las aplicaciones problemáticas adb, pero no pude reinstalarlo. Tenga en cuenta que la aplicación que quiero instalar tiene un air.comprefijo como nombre del paquete. Parece que esto es más un problema entre Google, Adobe Air y los desarrolladores de la aplicación. Hasta que al menos uno de ellos lo arregle, la aplicación no se podrá instalar. Destaqué el problema para obtener actualizaciones de Google.
Andrew T.
3
Estoy teniendo el mismo error en 5.1.1 (cyanogenmod 12.1 galaxy s3 la última noche). ¿De alguna manera tenían código antiguo o es un error más reciente?
ike
1
Tengo este problema en Android 6.0 Marshmallow. ¿Hubo alguna solución para esto, o simplemente esperar una OTA?
Ben
2
@Ben, esta publicación menciona los problemas con INSTALL_FAILED_DUPLICATE_PERMISSION, que se corrigió con 5.0.1. Recibí este error con Marshmellow, debido a INSTALL_FAILED_CONFLICTING_PROVIDER. Utilizo el proveedor del cuadro de diálogo Compartir del SDK de Facebook, que se declaró tanto en mis versiones de depuración como de lanzamiento, evitando la instalación de la versión de lanzamiento desde Google Play Store. Puede ver el mensaje exacto navegando a través de su adb logcat. En mi caso, elegí renombrar el <proveedor> de mi compilación de depuración mediante el uso de manifestPlaceholders en mi nombre de proveedor.
Mike Lambert