Cosa significa: errore [INSTALL_FAILED_CONTAINER_ERROR]?


129

Provo a distribuire la mia app e a volte ottengo questo errore:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Ho provato a cercarlo su Google ma non trovo cosa significhi l'errore o da cosa sia causato. Distribuisco tramite IDE (IntelliJ) il file viene copiato sul dispositivo in / data / local / tmp (Huawei Ideos non rootato, in esecuzione 2.2), ma al gestore dei pacchetti non sembra piacere. Prima di installare l'apk, ho già rimosso l'app dal dispositivo in anticipo. Mi sono anche assicurato che non ci fosse un vecchio file in / data / local / tmp sul dispositivo. Sto ancora ricevendo questo errore ora. Il pacchetto deve essere firmato con la chiave di debug, poiché eseguo la distribuzione tramite IDE eseguendo l'app.

$ pwd 
/data/local/tmp 
$ ls -l 
-rw-rw-rw- shell    shell    17257686 2011-04-21 20:31 
com.company.shop 
$ pm install -r com.company.shop 
        pkg: com.company.shop 
Failure [INSTALL_FAILED_CONTAINER_ERROR]

Cosa significa e come risolverlo?

Modifica / Aggiornamento:

Posso evitare l'errore quando non consento l'installazione dell'app su sdcard, impostazione

android:installLocation="internalOnly"

nel manifest. Va bene per lo sviluppo, ma per la produzione, non è proprio quello che voglio - poiché la mia app è abbastanza grande con 17mb; quindi preferisco che sia su sdcard. Come poterlo installare sulla memoria esterna senza il rooting (dato che questo è l'unico modo in cui potrei cancellare /mnt/secure/asec/smdl2tmp1.asec, che sembra essere anche una soluzione).


Solo per curiosità: puoi installarlo pm install -f com.company.shop?
Jakub Czaplicki,

Ci sono diverse variazioni sul INSTALL_FAILED_CONTAINER_ERRORproblema, per alcuni di loro vedono la mia risposta qui: stackoverflow.com/a/30343659/313113
Bitek

Per me, era semplice come l'emulatore "a corto di spazio" (???) e ho dovuto cancellare i dati in AVD Manager.
EpicPandaForce

Risposte:


44

rimuovi questo file dal tuo dispositivo

/mnt/secure/asec/smdl2tmp1.asec

Modifica / Aggiorna di Mathias Conradt (OP):

Se non si dispone dell'accesso root, è necessario montare la scheda SD e rimuoverla tramite PC:

/.android_secure/smdl2tmp1.asec

3
ma il mio dispositivo non è rootato e guardando la cartella protetta, solo root ha accesso. Sono stato in grado di eseguire l'app prima, solo ora da un po ', non è possibile eseguirlo e dà l'errore sopra.
Mathias Conradt,

1
btw - c'è anche una cartella / mnt / asec / che posso raggiungere con non root, ma che è vuota
Mathias Conradt

3
@Jazz Questo è successo a me oggi. Mi piacerebbe davvero sapere perché / di cosa si tratta. Elimina il file manualmente? Perché l'eclissi non potrebbe farlo? È un bug telefonico?
Erik,

1
sto avendo questo problema. non riesco a vedere i file / le cartelle usando il mio Mac. c'è un altro modo?
SonnoNon

14
Questo ha funzionato, ma potresti spiegare, perché lo fa? Cosa c'è nel misterioso file smdl2tmp1.asec?
Alexander Pacha,

222

Cambia il percorso di installazione da

android:installLocation="preferExternal"

in

android:installLocation="auto"

in AndroidManifest.xml del tuo progetto.


12
Questo è quello che ha fatto per me. Grazie!
Jim McKeeth,

Sì, lo ha fatto anche per me. Grazie!
Senthil Kumaran,

22
ma voglio preferireEsterno ...? Come risolvere questo?
Aiden Fry,

2
@Sameer no, questo si verifica anche su dispositivi reali, ma è incoerente. I principali sono i dispositivi HTC Desire S e Nexus.
Aiden Fry,

1
@AidenFry Utilizzare la soluzione user2445968 se si desidera mantenere preferExternal.
LG

32

Se stai usando un emulatore, modificalo e aggiungi più memoria. Ho avuto un problema proprio come questo e tutto quello che ho fatto è stato modificare la memoria del mio AVD da 200 MB a 1000 MB e il problema sembra andare via ... Buona fortuna.


Sì, è successo lo stesso con me. Pollice in su :)
NaXir,

Oltre ad aumentare la memoria, ho dovuto anche cancellare i dati dell'utente e solo successivamente le nuove dimensioni si sono riflesse e l'errore è scomparso.
Varun,

2
Posso indovinare che ti riferisci alla memoria interna e non alla RAM?
Jonny il

1
Ho aumentato la memoria del mio AVD, quindi ho cancellato i dati !! e ora funziona.
Incontra Vora il

7

Ciò significa che c'era un'installazione precedente che era corrotta. Se si installa su un computer esterno, suggerirei di formattare la scheda SD e riprovare.


6

Ho avuto questo errore ripetutamente. Ho trovato il modo più semplice per evitare l'errore nella sua interezza è semplicemente formattare la scheda SD. Utilizzo degli strumenti interni del telefono o degli emulatori. Ho scoperto che le schede SD generate automaticamente o persino la creazione della tua sdcard.iso falliscono e causano questo errore se non formulate dagli strumenti Android interni.


1
Benvenuto in Stack Overflow! Grazie per il tuo post! Non utilizzare firme / slogan nei tuoi post. La casella utente conta come firma e puoi utilizzare il tuo profilo per pubblicare qualsiasi informazione su di te che ti piace. FAQ su firme / slogan
Andrew Barber,

Risolto questo con la stessa soluzione, poiché il problema è causato da un errore durante la scrittura su SDCard, è meglio del workaorund di Rene f che si desidera mantenere Android: installLocation = "preferExternal".
LG

Confermare. L'errore su SD è stato il motivo per me. L'ho provato rimuovendo "preferisci esterno" da manifest - è installato ok.
djdance,

4

Per me questo è stato causato da una mancanza di spazio sulla scheda SD del mio emulatore. Stavo lavorando con un progetto abbastanza grande e avevo pensato che 40 mb fossero sufficienti, ma l'ho cambiato in 200 mb e il problema è scomparso.


4

Ho avuto lo stesso errore con vari .apksu Cyanogenmod 12.1 (Android 5.1.1) sul mio Note 8 con una seconda partizione per Link2SD. Sono stato in grado di installare le app forzando l'installazione tramite adb come root:

adb root
adb install -f myapp.apk

3

Ho ricevuto questo messaggio di errore da Android 5.0.1. Avevo modificato il percorso di installazione preferito in "Scheda SD rimovibile" tramite Impostazioni-> App-> Percorso di installazione preferito.

Ho cambiato l'opzione di nuovo in "Lascia decidere il sistema" e il messaggio di errore è andato via.


1
Questa sembrava essere la soluzione per me con Cyanogenmod 12 (Android 5.0.2). Quell'apertura sembrava forzare l'installazione dell'app sulla scheda SD rimovibile anche se il manifest dell'app specificava che non poteva essere installato lì.
Sam,

1

Per me, era la lingua del dispositivo. Ho testato la lingua in arabo per testare la mia domanda. Quindi ho ricevuto questo errore. Ripristinare la lingua ha fatto il trucco.


1

android: installLocation = "auto" funziona .. !!

In caso contrario, controllare una volta le dimensioni dello spazio di archiviazione esterno. [Memoria disponibile> dimensione app] Se lo spazio di archiviazione non è sufficiente, viene generato anche questo errore.


0

Ho avuto un problema simile con l'emulatore. Era sparito quando ho cambiato il tipo di CPU dell'emulatore da ARM a Intel.


Questo non aiuta davvero l'OP a risolvere il suo problema, poiché la sua preoccupazione è farlo funzionare su dispositivi del mondo reale, molti dei quali utilizzano ancora CPU ARM.
James Green,

0

in alcune situazioni, la rimozione di libs/android-support-v4.jargenera questo errore.


0

Per me, una disinstallazione di diverse applicazioni ha risolto il problema. Quando una memoria locale ha memoria sufficiente, una distribuzione di APK è stata completata correttamente. Ma di solito riavvio semplicemente un gadget e l'installazione viene completata. Inoltre, alcuni programmi come Clean Master possono essere d'aiuto. Semplicemente spesso cancella i processi inutili e chiudi i programmi con Clean Master e ottieni abbastanza memoria.


0

Il riavvio del dispositivo ha risolto il problema per me.

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.