9 votes

Comment faire face au code d'erreur d'installation inconnu -505 ?

J'ai une Nexus 7 et elle vient d'être mise à jour vers Android 5.

Deux applications me posent problème après la mise à jour du système, des jeux auxquels jouent mes enfants. Dumb Ways to Die et VVVVVV. Ces deux applications avaient des icônes après la mise à niveau, mais lorsqu'on cliquait dessus, une fenêtre contextuelle apparaissait, indiquant "App not installed". J'essaie de les installer. Le téléchargement se passe bien. L'installation commence. Et puis un message d'erreur :

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

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

Je n'ai aucune idée de ce qu'il faut faire ensuite. Une âme charitable pourrait-elle me donner des conseils sur la manière de remédier à ce problème ?

10voto

Andrew T. Points 12017

TL;DR

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

更新情報 : Google a corrigé ce problème sur Lollipop 5.0.1.


Détails techniques

Extraits de Suivi des problèmes liés à l'aperçu pour développeurs d'Android L qui sont liés à une entrée sur l'AOSP issue tracker ,

Poste n°4 :

logcat me dit qu'il y a un conflit avec la redéclaration des permissions pendant l'installation (dans mon cas, Amazon essaie de redéclarer getui.permission.GetuiService, qui est déjà détenu par Camera 360)

LogCat du poste 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

Extraits de Suivi des problèmes de l'AOSP ,

Poste n°4

Dans l'API 19, le nouveau X509CertImpl(encCert) enveloppe le certificat (qui est déjà analysé et prêt pour le calcul SHA1), tandis que dans l'API 21, le certificat est transmis sous forme de flux d'octets, analysé à nouveau et traité par une fabrique de certificats. Laquelle dépend du contexte. Dans le cas des appareils L sur lesquels j'ai testé, la fabrique créera un certificat OpenSSLX509Certificate. Malheureusement, il y a quelque chose dans notre certificat avec lequel openssl a des problèmes et l'empreinte digitale change pendant le traitement openssl. Je peux reproduire ce phénomène également avec l'outil openssl, lorsque je convertis notre certificat dans un autre format (par exemple, PEM).

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


Solution

更新情報 : En date du 2014-12-04, Google a corrigé 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 quand elle sera prête/attendre l'OTA.

Postes 20 et 21

Il semble que cela ait été corrigé dans la version 5.0.1 :

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

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

Statut : Libéré

Note du commissaire

Récupérer les applications avec des certificats malformés.

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

Une modification connexe de libcore (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) renvoie maintenant les octets d'origine mot pour mot, corrigeant ainsi les installations et les installations après ce changement.

Ce changement permet de récupérer toutes les applications qui avaient été installées lors de la fenêtre de temps décrite ci-dessus en effectuant une vérification unique pour voir si les certitudes sont effectivement égales.


Veuillez vous référer à ancienne version pour d'autres solutions proposées.

0 votes

J'ai la même chose que David : rien à désinstaller de l'appareil, ADB ne voit pas mon appareil, les tentatives de réinstallation aboutissent à -505 de Google Play et à une erreur non descriptive lors de l'installation depuis l'APK local. Le passage en mode invité n'aide pas non plus.

2 votes

Je viens de réaliser que j'ai aussi rencontré ce problème. J'ai désinstallé avec succès les applications problématiques avec adb mais je n'ai pas pu le réinstaller. Notez que l'application que je veux installer a air.com comme nom de paquet. Il semble qu'il s'agisse plutôt d'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, il ne sera pas possible d'installer l'application. J'ai démarré le problème pour obtenir une mise à jour de Google.

0 votes

Modifiez votre réponse avec votre commentaire. Cette information est utile. +1

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X