2015-05-30 8 views
11

Ho preso tutti i passaggi appropriati per creare l'APK di rilascio. (Demonstration of steps required)Codice errore -7 durante il tentativo di installare la versione APK

Il mio dispositivo (Nexus 7 2012) è impostato per consentire installazioni da fonti sconosciute.

Ho inviato a me l'APK (app-release.apk) e ho tentato di aprirlo da GMail, in quanto ciò dovrebbe funzionare.

MODIFICA: Mi scuso, dovrei aver incluso anche che ho disinstallato l'app da impostazioni> app> (app in questione)> pulsante "disinstalla".

Tuttavia, l'applicazione non riesce immediatamente a caricare, con solo le seguenti informazioni logcat:

05-30 14:44:41.689  466-497/? W/PackageManager﹕ Package edu.osu.expandablelistviewtest1 signatures do not match the previously installed version; ignoring! 
05-30 14:44:41.914  466-497/? I/art﹕ Explicit concurrent mark sweep GC freed 74971(3MB) AllocSpace objects, 22(1348KB) LOS objects, 33% free, 28MB/43MB, paused 9.752ms total 220.463ms 
05-30 14:44:41.927 20704-20704/? D/InstallAppProgress﹕ Installation error code: -7 
05-30 14:44:43.094 20704-20704/? I/InstallAppProgress﹕ Finished installing edu.osu.expandablelistviewtest1 

Ho provato ogni stringa di ricerca mi viene in mente e non riesco a trovare alcuna informazione in caso di errore -7 di significato . Guardando il code on GitHub, vediamo il seguente codice:

public void handleMessage(Message msg) { 
    ... 
    if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) { 
    ... 
    } else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE){ 
    ... 
    } else { 
    // Generic error handling for all other error codes. 
    centerTextDrawable.setLevel(1); 
    centerExplanationLabel = getExplanationFromErrorCode(msg.arg1); 
    centerTextLabel = R.string.install_failed; 
    mLaunchButton.setVisibility(View.INVISIBLE); 
    } 
    ... 
    private int getExplanationFromErrorCode(int errCode) { 
    Log.d(TAG, "Installation error code: " + errCode); 
    switch (errCode) { 
    case PackageManager.INSTALL_FAILED_INVALID_APK: 
     return R.string.install_failed_invalid_apk; 
    case PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: 
     return R.string.install_failed_inconsistent_certificates; 
    case PackageManager.INSTALL_FAILED_OLDER_SDK: 
     return R.string.install_failed_older_sdk; 
    case PackageManager.INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: 
     return R.string.install_failed_cpu_abi_incompatible; 
    default: 
     return -1; 
    } 
    } 
    ... 
} 

... quindi non abbiamo modo di sapere ciò che il "-7" si intende. (Oltre a ciò non si tratta di casi di switch.)

Sono aperto a qualsiasi idea/suggerimento. Grazie.

+0

avete che app precedentemente installato sul vostro dispositivo? –

+0

L'ho disinstallato dalle impostazioni> app> (l'app in questione)> pulsante "disinstalla" – somecbusnerd

+0

Anche dopo aver disinstallato la tua app, ora quando provi a installare, dà lo stesso errore? –

risposta

27

Bene, mi sento imbarazzato. Dopo tutto ciò, il problema era che nelle versioni più recenti di Android, la disinstallazione nel modo che ho citato sopra disinstallazione solo per quello specifico utente.

La risposta è andare alle impostazioni> app> (app in questione) e quindi selezionare "Disinstalla per tutti gli utenti" dal menu "..." in alto a destra.

Così, per i futuri utenti Google:

InstallAppProgress: Installazione codice di errore: -7 evidentemente significa che è necessario disinstallare completamente la versione precedente della vostra applicazione, come ad esempio le versioni di debug precedenti, ecc

+1

In aggiunta a questa risposta corretta: ero nel deadlock, che l'APK firmato non poteva essere installato (codice di errore -7), ma la versione di debug era già stata disinstallata. Quindi, prima deve essere installata di nuovo la versione di debug, questa dovrebbe essere una parola. Successivamente, rimuovere con "Disinstalla per tutti gli utenti". Successivamente, è possibile installare l'APK di rilascio firmato. –

+0

Non riesco a capire come ho disinstallato la mia app solo per il mio utente (che dovrebbe essere l'unico). Questa risposta mi ha salvato un sacco di tempo. Grazie amico. –

+2

Grazie amico, ho trovato una soluzione .. Un'altra soluzione è eseguire 'adb uninstall com.ephesoft.snapdoc' .. – AnkitRox

3

l'errore costanti di codice per PackageInstaller sono definite nella classe PackageManager con prefissi come INSTALL_FAILED_.

(il link corrisponde ad una revisione del codice dal 25 giugno 2015, quindi per il momento di leggere questo, il codice potrebbe cambiare.)

Problemi correlati