Come gestisco il codice di errore di installazione sconosciuto -505?


9

Ho un Nexus 7 ed è appena stato aggiornato ad Android 5.

Due app mi danno problemi dopo l'aggiornamento del sistema, i giochi a cui giocano i miei figli. Dumb Ways to Die e VVVVVV. Entrambi avevano icone dopo l'aggiornamento ma quando si faceva clic appariva un popup che diceva "App non installata". Tento di installarli. Il download va bene. L'installazione ha inizio. E poi un messaggio di errore:

Codice di errore sconosciuto durante l'installazione dell'applicazione: "-505"

Lo stesso errore esatto per entrambe le app. Ho riavviato il dispositivo senza alcun risultato.

Non ho idea di cosa fare dopo. Per favore, un'anima gentile potrebbe darmi consigli su come risolvere questo problema.

Risposte:


10

TL; DR

Questo problema si verifica quando un'app sta tentando di dichiarare nuovamente un'autorizzazione esistente, con un messaggio di errore INSTALL_FAILED_DUPLICATE_PERMISSION. Ha interessato principalmente le app basate su Adobe AIR (prefisso del pacchetto con com.air). La causa principale è la diversa implementazione del codice in Lollipop 5.0 durante la verifica della firma di un certificato utilizzata per firmare un'app. Per la soluzione, passa direttamente alla parte "Soluzione".

Aggiornamento : Google ha risolto questo problema su Lollipop 5.0.1.


Dettagli tecnici

Estratti dal tracker del problema Anteprima Android Developer L che sono collegati da una voce sul tracker del problema AOSP ,

Post n. 4 :

logcat mi dice che c'è un conflitto con le autorizzazioni di redeclaring durante l'installazione (nel mio caso, Amazon sta cercando di redeclare getui.permission.GetuiService, che è già di proprietà di Camera 360)

LogCat di Post # 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

Estratti dal tracker dei problemi AOSP ,

Posta n. 4

In API19 il nuovo X509CertImpl (encCert) racchiude il certificato (che è già analizzato e pronto per il calcolo SHA1), mentre in API 21, il certificato viene inoltrato come flusso di byte, analizzato di nuovo ed elaborato da una fabbrica di certificati. Quale fabbrica, dipende dal contesto. Nel caso dei dispositivi L su cui ho provato, la fabbrica creerà un certificato OpenSSLX509. Sfortunatamente, nel nostro certificato è presente qualcosa con cui openssl ha problemi e l'impronta digitale cambia durante l'elaborazione di openssl. Posso riprodurlo anche con lo strumento openssl, quando converto il nostro certificato in qualche altro formato (es. PEM).

Se SHA1 fosse calcolato direttamente su 'encCert.getEncoded ()' sarebbe corretto in entrambi i casi.


Soluzione

Aggiornamento : a partire dal 04-12-2014, Google ha risolto questo problema su Lollipop 5.0.1. Per coloro che non hanno eseguito alcuna soluzione alternativa nel tentativo di reinstallare l'app, è possibile eseguire il flashing dell'immagine Lollipop 5.0.1 quando è pronta / attendere l'OTA.

Posta n. 20, n. 21

Sembra che questo sia stato corretto in 5.0.1:

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

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

Stato: rilasciato

Nota del committer

Ripristina app con certificati non validi.

C'era una finestra temporale in Lollipop in cui persistevamo i certificati dopo che erano passati attraverso un ciclo di decodifica / codifica. La ben scritta libreria OpenSSL era liberale durante la decodifica (consentendo l'analisi di certs leggermente malformati), ma poi rigorosa durante la codifica, dandoci byte diversi per lo stesso certificato.

Una modifica di libcore correlata (0c990ab4a90b8a5492a67b2b728ac9a4a1ccfa1b) ora restituisce i byte originali alla lettera, riparando sia le installazioni pre-Lollipop che le installazioni successive a quella modifica.

Questa modifica ripristina tutte le app che erano state installate nella finestra temporale sopra descritta facendo un controllo una tantum per vedere se i certificati sono effettivamente uguali.


Fare riferimento alla revisione precedente per altre soluzioni suggerite.


Ho lo stesso di David: nulla da disinstallare dal dispositivo, ADB non vede il mio dispositivo, i tentativi di installazione di nuovo danno come risultato -505 da Google Play e un errore non descrittivo se installato dall'APK locale. Anche il passaggio a Guest non è utile.
Roman R.,

2
Bene, ho appena realizzato di aver affrontato anche questo problema. Ho disinstallato con successo le app problematiche con adb, ma non sono riuscito a reinstallarlo. Nota che l'app che voglio installare ha il air.comprefisso come nome del pacchetto. Sembra che questo sia più un problema tra Google, Adobe Air e gli sviluppatori di app. Fino a quando almeno uno di essi lo risolverà, non sarà possibile installare l'app. Ho escluso il problema per ottenere l'aggiornamento da Google.
Andrew T.

3
Sto riscontrando lo stesso errore su 5.1.1 (cyanogenmod 12.1 galaxy s3 l'ultima notte). Avevano in qualche modo un vecchio codice o è un bug più recente?
Ike,

1
Sto riscontrando questo problema su Android 6.0 Marshmallow. C'era una soluzione media a questo, o semplicemente aspettare un OTA?
Ben

2
@Ben, questo post menziona i problemi con INSTALL_FAILED_DUPLICATE_PERMISSION, che è stato risolto con 5.0.1. Ho riscontrato questo errore con Marshmellow, a causa di INSTALL_FAILED_CONFLICTING_PROVIDER. Uso il provider della finestra di dialogo Condividi SDK di Facebook, che è stato dichiarato sia nel mio debug che nelle build di rilascio, impedendo l'installazione della build di rilascio dal Google Play Store. Puoi vedere il messaggio esatto sfogliando il tuo logcat adb. Nel mio caso, ho scelto di rinominare il <provider> della mia build di debug tramite l'uso di manifestPlaceholder nel nome del mio provider.
Mike Lambert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.