Co to oznacza: błąd [INSTALL_FAILED_CONTAINER_ERROR]?


129

Próbuję wdrożyć aplikację i czasami pojawia się ten błąd:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Próbowałem go wygooglować, ale nie znalazłem, co oznacza błąd ani przez co jest spowodowany. Wdrażam przez IDE (IntelliJ), plik jest kopiowany na urządzenie do / data / local / tmp (nieukorzeniony Huawei Ideos, działający 2.2), ale menedżerowi pakietów to nie lubi. Przed zainstalowaniem apk wcześniej usunąłem aplikację z urządzenia. Upewniłem się również, że na urządzeniu nie ma starego pliku w / data / local / tmp. Nadal pojawia się ten błąd. Pakiet powinien być podpisany kluczem debugowania, ponieważ wdrażam za pośrednictwem IDE, „uruchamiając” aplikację.

$ 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]

Co to oznacza i jak go rozwiązać?

Edycja / aktualizacja:

Mogę uniknąć błędu, gdy nie zezwalam na zainstalowanie aplikacji na karcie SD, ustawienie

android:installLocation="internalOnly"

w manifeście. Jest ok do programowania, ale do produkcji, nie jest to, czego chcę - ponieważ moja aplikacja jest dość duża i ma 17 MB; dlatego wolę, aby był na sdcard. Jak kiedykolwiek móc zainstalować go w pamięci zewnętrznej bez rootowania (ponieważ jest to jedyny sposób, w jaki mogłem usunąć /mnt/secure/asec/smdl2tmp1.asec, który również wydaje się być jednym z rozwiązań).


Tak z ciekawości: czy możesz go zainstalować przez pm install -f com.company.shop?
Jakub Czaplicki

Istnieje kilka odmian tego INSTALL_FAILED_CONTAINER_ERRORproblemu, dla niektórych z nich moja odpowiedź znajduje się tutaj: stackoverflow.com/a/30343659/313113
Alex Bitek

Dla mnie było to tak proste, jak "brak miejsca" w emulatorze (???) i musiałem wyczyścić dane w menedżerze AVD.
EpicPandaForce

Odpowiedzi:


44

usuń ten plik z urządzenia

/mnt/secure/asec/smdl2tmp1.asec

Edycja / aktualizacja autorstwa Mathiasa Conradta (OP):

Jeśli nie masz uprawnień roota, musisz zamontować sdcard i usunąć ją z komputera:

/.android_secure/smdl2tmp1.asec

3
ale moje urządzenie nie jest zrootowane i patrząc na bezpieczny folder, tylko root ma dostęp. Wcześniej udało mi się uruchomić aplikację, ale od jakiegoś czasu nie mogę jej uruchomić i daje powyższy błąd.
Mathias Conradt,

1
btw - tam też folder / mnt / ASEC / że mogę osiągnąć z braku korzeni, ale to jest pusta
Mathias Conradt

3
@Jazz Przydarzyło mi się to dzisiaj. Naprawdę chciałbym wiedzieć, dlaczego / o co w tym chodzi. Usunąć plik ręcznie? Dlaczego zaćmienie nie mogło tego zrobić? Czy to błąd telefonu?
Erik,

1
mam ten problem. Nie widzę plików / folderów na moim Macu. czy jest inny sposób?
SleepNot

14
To zadziałało, ale czy możesz wyjaśnić, dlaczego tak się dzieje? Co znajduje się w tajemniczym pliku smdl2tmp1.asec?
Alexander Pacha

222

Zmień lokalizację instalacji z

android:installLocation="preferExternal"

w

android:installLocation="auto"

w pliku AndroidManifest.xml projektu.


12
To właśnie zrobiło to dla mnie. Dzięki!
Jim McKeeth,

Tak, to też zrobiło to dla mnie. Dzięki!
Senthil Kumaran

22
ale chcę preferować Zewnętrzne ...? Jak to naprawić?
Aiden Fry

2
@Sameer nie, dzieje się tak również na prawdziwych urządzeniach - ale jest niespójne. Główne z nich to urządzenia HTC Desire S i Nexus.
Aiden Fry

1
@AidenFry Użyj rozwiązania user2445968, jeśli chcesz zachować preferExternal.
LG,

32

Jeśli używasz emulatora, edytuj go i dodaj więcej pamięci. Miałem problem taki jak ten i jedyne co zrobiłem, to edytować pamięć mojego AVD z 200 MB do 1000 MB i problem wydaje się znikać ... Powodzenia.


Tak, to samo stało się ze mną. Kciuki w górę :)
NaXir

Oprócz zwiększenia pamięci musiałem też wyczyścić dane użytkownika i dopiero po tym nowy rozmiar odbijał się i błąd zniknął.
Varun

2
Czy mogę zgadnąć, że odnosisz się do pamięci wewnętrznej, a nie pamięci RAM?
Jonny

1
Zwiększyłem pamięć mojego AVD, a następnie wyczyściłem dane! a teraz działa.
Spotkaj się z Vorą

7

Oznacza to, że wcześniejsza instalacja była uszkodzona. Jeśli instalujesz na zewnętrznym, sugerowałbym sformatowanie karty SD i spróbuj ponownie.


6

Wielokrotnie miałem ten błąd. Odkryłem, że najprostszym sposobem uniknięcia błędu w całości jest po prostu sformatowanie karty SD. Korzystanie z wewnętrznych narzędzi telefonu lub emulatorów. Odkryłem, że automatycznie generowane karty SD lub nawet tworzenie własnego sdcard.iso nie powiodło się i powoduje ten błąd, chyba że zostanie sformatowany przez wewnętrzne narzędzia Androida.


1
Witamy w Stack Overflow! Dzięki za Twój post! Prosimy nie używać podpisów / sloganów w swoich postach. Twoja skrzynka użytkownika liczy się jako Twój podpis i możesz używać swojego profilu do publikowania dowolnych informacji o sobie. Często zadawane pytania dotyczące podpisów / sloganów
Andrew Barber

Rozwiązano to tym samym rozwiązaniem, ponieważ problem jest spowodowany błędem podczas zapisywania na karcie SD, jest to lepsze rozwiązanie niż zestaw roboczy Rene, jeśli chcesz zachować androida: installLocation = "preferExternal".
LG,

Potwierdzać. Błąd na SD był powodem mnie. Testowałem to usuwając "preferuj zewnętrzne" z manifestu - jest zainstalowany poprawnie.
djdance

4

U mnie było to spowodowane brakiem miejsca na karcie SD mojego emulatora. Pracowałem z dość dużym projektem i myślałem, że 40 MB wystarczy, ale zmieniłem go na 200 MB i problem zniknął.


4

Wystąpił ten sam błąd z różnymi .apkna Cyanogenmod 12.1 (Android 5.1.1) w mojej Note 8 z drugą partycją dla Link2SD. Udało mi się zainstalować aplikacje, wymuszając instalację przez adb jako root:

adb root
adb install -f myapp.apk

3

Otrzymałem ten komunikat o błędzie z Androida 5.0.1. Zmieniłem preferowaną lokalizację instalacji na „Wymienna karta SD” poprzez Ustawienia-> Aplikacje-> Preferowana lokalizacja instalacji.

Zmieniłem opcję z powrotem na „Niech system zdecyduje” i komunikat o błędzie zniknął.


1
Wydawało się, że to rozwiązanie dla mnie działające z Cyanogenmod 12 (Android 5.0.2). To otwarcie wydawało się wymuszać instalację aplikacji na wymiennej karcie SD, mimo że manifest aplikacji wskazywał, że nie można jej tam zainstalować.
Sam

1

Dla mnie był to język urządzenia. Zmieniłem język na arabski, żeby przetestować swoją aplikację. Wtedy otrzymałem ten błąd. Przywrócenie języka załatwiło sprawę.


1

android: installLocation = "auto" działa .. !!

Jeśli nie, raz sprawdź rozmiar zewnętrznej przestrzeni dyskowej. [Dostępna pamięć> rozmiar aplikacji] Jeśli przestrzeń dyskowa nie jest wystarczająca, również ten błąd jest zgłaszany.


0

Miałem podobny problem z emulatorem. Zniknął, gdy zmieniłem typ procesora emulatora z ARM na Intel.


To naprawdę nie pomaga OP w rozwiązaniu problemu, ponieważ obawiają się, że zadziała na rzeczywistych urządzeniach, z których wiele nadal korzysta z procesorów ARM.
James Green


0

U mnie odinstalowanie kilku aplikacji rozwiązało problem. Gdy lokalna pamięć ma wystarczającą ilość pamięci, wdrożenie APK zakończyło się pomyślnie. Ale zwykle po prostu ponownie uruchamiam gadżet i instalacja jest zakończona. Mogą też pomóc niektóre programy, takie jak Clean Master. Po prostu często wyczyść nieużywane procesy i zamknij programy za pomocą Clean Master i uzyskaj wystarczającą ilość pamięci.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.