Comment gérer le code d'erreur d'installation inconnu -505?


9

J'ai un Nexus 7 et il vient d'être mis à jour vers Android 5.

Deux applications me posent des problèmes après la mise à niveau du système, des jeux auxquels mes enfants jouent. Dumb Ways to Die et VVVVVV. Ces deux icônes comportaient des icônes après la mise à niveau, mais lorsque vous cliquez dessus, une fenêtre contextuelle s'affiche indiquant "Application non installée". J'essaie de les installer. Le téléchargement est très bien. L'installation commence. Et puis un message d'erreur:

Code d'erreur inconnu lors de l'installation de l'application: "-505"

La même erreur exacte pour les deux applications. J'ai redémarré l'appareil en vain.

Je ne sais pas quoi faire ensuite. S'il vous plaît, une gentille âme pourrait me donner des conseils sur la façon de résoudre ce problème.

Réponses:


10

TL; DR

Ce problème se produit lorsqu'une application tente de re-déclarer une autorisation existante, avec un message d'erreur INSTALL_FAILED_DUPLICATE_PERMISSION. Il a principalement affecté les applications basées sur Adobe AIR (préfixe de package avec com.air). La principale cause est l'implémentation de code différente dans Lollipop 5.0 lors de la vérification de la signature d'un certificat utilisé pour signer une application. Pour la solution, passez simplement à la partie "Solution".

Mise à jour : Google a résolu ce problème sur Lollipop 5.0.1.


Détails techniques

Extraits du traqueur de problèmes d'Aperçu du développeur Android L qui sont liés à partir d' une entrée sur le traqueur de problèmes AOSP ,

Message n ° 4 :

logcat m'indique qu'il y a un conflit avec les autorisations de redéclaration lors de l'installation (dans mon cas, Amazon essaie de redéclarer getui.permission.GetuiService, qui appartient déjà à Camera 360)

LogCat du message # 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

Extraits du traqueur de problèmes AOSP ,

Message n ° 4

Dans API19, le nouveau X509CertImpl (encCert) encapsule le certificat (qui est déjà analysé et prêt pour le calcul SHA1), tandis que dans API 21, le certificat est transmis sous forme de flux d'octets, analysé à nouveau et traité par une fabrique de certificats. Quelle usine dépend du contexte. Dans le cas des appareils L sur lesquels j'ai testé, l'usine créera un certificat OpenSSLX509. Malheureusement, il y a quelque chose dans notre certificat qui a des problèmes avec openssl et les empreintes digitales changent pendant le traitement avec openssl. Je peux le reproduire également avec l'outil openssl, lorsque je convertis notre certificat en un autre format (par exemple, PEM).

Si le SHA1 était calculé directement sur 'encCert.getEncoded ()', ce serait correct dans les deux cas.


Solution

Mise à jour : Depuis le 2014-12-04, Google a résolu ce problème sur Lollipop 5.0.1. Pour ceux qui n'ont pas fait de solution de contournement en essayant de réinstaller l'application, vous pouvez flasher l'image Lollipop 5.0.1 lorsqu'elle est prête / attendre l'OTA.

Message # 20, # 21

On dirait que cela a été corrigé dans 5.0.1:

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

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

Statut: libéré

Note du Committer

Récupérez des applications avec des certificats mal formés.

Il y avait une fenêtre de temps dans Lollipop où nous avons persisté les certificats après qu'ils aient traversé un cycle de décodage / encodage. La bibliothèque OpenSSL bien écrite était libérale lors du décodage (permettant l'analyse des certificats légèrement mal formés), mais stricte lors du codage, nous donnant différents octets pour effectivement le même certificat.

Un changement de libcore connexe (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) renvoie désormais les octets originaux textuellement, corrigeant les installations pré-Lollipop et les installations après ce changement.

Cette modification récupère toutes les applications qui avaient été installées pendant la fenêtre de temps décrite ci-dessus en effectuant une vérification unique pour voir si les certificats sont effectivement égaux.


Veuillez vous référer à l' ancienne révision pour d'autres solutions suggérées.


J'ai le même que David: rien à désinstaller de l'appareil, ADB ne voit pas mon appareil, les tentatives de réinstallation entraînent -505 sur Google Play et une erreur non descriptive lors de l'installation à partir de l'APK local. Le passage à Guest n'est pas non plus utile.
Roman R.

2
Eh bien, je viens de réaliser que je faisais aussi face à ce problème. J'ai réussi à désinstaller les applications problématiques avec adb, mais je n'ai pas pu les réinstaller. Notez que l'application que je souhaite installer a le air.compréfixe comme nom de package. Il semble que ce soit davantage un problème entre Google, Adobe Air et les développeurs d'applications. Jusqu'à ce qu'au moins l'un d'entre eux le corrige, l'application ne pourra pas être installée. J'ai marqué le problème pour obtenir une mise à jour de Google.
Andrew T.

3
J'ai la même erreur sur 5.1.1 (cyanogenmod 12.1 galaxy s3 plus tard dans la nuit). Avaient-ils en quelque sorte un ancien code, ou s'agit-il d'un bug plus récent?
ike

1
J'ai ce problème sur Android 6.0 Marshmallow. Y a-t-il eu une solution moyenne à cela, ou simplement attendre un OTA?
Ben

2
@Ben, ce message mentionne les problèmes avec INSTALL_FAILED_DUPLICATE_PERMISSION, qui a été corrigé avec 5.0.1. J'ai eu cette erreur avec Marshmellow, en raison de INSTALL_FAILED_CONFLICTING_PROVIDER. J'utilise le fournisseur de la boîte de dialogue Partager sur le SDK Facebook, qui a été déclaré dans mes versions de débogage et de version, empêchant l'installation de la version de version à partir du Google Play Store. Vous pouvez voir le message exact en parcourant votre logcat adb. Dans mon cas, j'ai choisi de renommer le <provider> de ma version de débogage en utilisant manifestPlaceholders dans mon nom de fournisseur.
Mike Lambert
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.