9 votos

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

Tengo un Nexus 7 y acaba de ser actualizado a Android 5.

Dos aplicaciones me dan problemas después de la actualización del sistema, juegos que juegan mis hijos. Dumb Ways to Die y VVVVVV. Ambos tenían iconos después de la actualización pero al hacer clic aparecía un mensaje diciendo "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 sin éxito.

No tengo idea de qué hacer a continuación. Por favor, ¿podría alguien brindarme consejos sobre cómo podría remediar este problema?

10voto

Andrew T. Puntos 2107

TL;DR

Este problema ocurre cuando una aplicación intenta volver a declarar un permiso existente, con el mensaje de error INSTALL_FAILED_DUPLICATE_PERMISSION. Principalmente afectó a aplicaciones basadas en Adobe AIR (paquete con prefijo com.air). La causa principal es la diferente implementación de código en Lollipop 5.0 al verificar la firma de un certificado utilizado para firmar una aplicación. Para la solución, simplemente vaya 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 vista previa para desarrolladores de Android L que están vinculados desde una entrada en el rastreador de problemas de AOSP,

Publicación #4:

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

LogCat de la publicació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: Cancelling 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 la computación SHA1), mientras que en API 21, el certificado se reenvía como flujo de bytes, se analiza nuevamente y se procesa mediante una fábrica de certificados. Qué fábrica es esa, depende del contexto. En el caso de los dispositivos L en los que probé, la fábrica creará un OpenSSLX509Certificate. Desafortunadamente, hay algo en nuestro certificado con lo que OpenSSL tiene problemas y la huella digital cambia durante el procesamiento de openssl. También puedo reproducir esto 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 quienes no hicieron ningún otro intento 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 ha sido solucionado en 5.0.1:

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

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

Estado: Publicado

Nota del comitter

Recuperar aplicaciones con certificados defectuosos.

Hubo un período de tiempo en Lollipop donde persistimos los certificados después de pasar por un ciclo de decodificación/codificación. La bien escrita biblioteca OpenSSL era liberal al decodificar (permitiendo que se analizaran certificados ligeramente defectuosos), pero luego estricta al codificar, dándonos diferentes bytes para un certificado efectivamente igual.

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

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


Por favor, consulte la revisión anterior para otras soluciones sugeridas.

0 votos

Tengo lo mismo que David: nada que desinstalar del dispositivo, ADB no reconoce mi dispositivo, los intentos de instalar nuevamente resultan en -505 desde Google Play y un error no descriptivo al instalar desde APK local. Cambiar a Invitado tampoco es útil.

2 votos

Bueno, acabo de darme cuenta de que también me enfrenté a este problema. He desinstalado con éxito las aplicaciones problemáticas con adb, pero no pude reinstalarla. Ten en cuenta que la aplicación que quiero instalar tiene el prefijo air.com como nombre de paquete. Parece que este es más un problema entre Google, Adobe Air y los desarrolladores de la aplicación. Hasta que al menos uno de ellos lo resuelva, la aplicación no podrá ser instalada. He marcado el problema para recibir actualizaciones de Google.

0 votos

Edita tu respuesta con tu comentario. Esa información es útil. +1

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X