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.