Що це означає: Збій [INSTALL_FAILED_CONTAINER_ERROR]?


129

Я намагаюся розгорнути свою програму, а інколи отримую цю помилку:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Я спробував google це, але не знайшов, що означає помилка чи що вона викликана. Я розгортаю через IDE (IntelliJ) файл, який копіюється на пристрій, в / data / local / tmp (без коріння Huawei Ideos, запущений 2.2), але менеджеру пакунків, схоже, це не подобається. Перш ніж встановлювати apk, я заздалегідь видалив додаток із пристрою. Я також переконався, що на пристрої не було старого файлу under / data / local / tmp. Я все-таки отримую цю помилку зараз. Пакет повинен бути підписаний ключем для налагодження, оскільки я розгортаю через IDE 'запуск' програми.

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

Що це означає і як це вирішити?

Редагування / оновлення:

Я можу уникнути помилки, коли не дозволяю програмі встановлюватись на sdcard, налаштовуючи

android:installLocation="internalOnly"

в маніфесті. Це нормально для розвитку, але для виробництва, це насправді не те, що я хочу - оскільки мій додаток досить великий з 17 Мб; тому я вважаю за краще це бути на sdcard. Як коли-небудь мати змогу встановити його на зовнішню пам'ять без вкорінення (оскільки це єдиний спосіб я міг видалити /mnt/secure/asec/smdl2tmp1.asec, що, здається, також є одним із рішень).


Просто з цікавості: ви можете встановити його pm install -f com.company.shop?
Якуб Чаплічки

Є кілька варіацій на INSTALL_FAILED_CONTAINER_ERRORпроблему, для деяких з них бачать мою відповідь тут: stackoverflow.com/a/30343659/313113
Бітек

Для мене це було так само просто, як емулятору "не вистачало місця" (???), і мені довелося протирати дані в AVD Manager.
EpicPandaForce

Відповіді:


44

видаліть цей файл зі свого пристрою

/mnt/secure/asec/smdl2tmp1.asec

Редагування / оновлення Матіаса Конрадта (ОП):

Якщо у вас немає кореневого доступу, вам потрібно встановити sdcard і видалити його через ПК:

/.android_secure/smdl2tmp1.asec

3
але мій пристрій без коренів, і дивлячись на захищену папку, доступ має лише root. Я раніше міг запускати додаток, і лише час від часу не можу його запустити, і це дає вищезгадану помилку.
Матіас Конрадт

1
btw - також є папка / mnt / asec /, до якої я можу дістатись не-root, але це порожньо
Mathias Conradt

3
@Jazz Це сьогодні трапляється зі мною. Мені б дуже хотілося знати, чому / про що це. Видалити файл вручну? Чому не вдалося цього затьмарити? Це телефонна помилка?
Ерік

1
Я маю цю проблему. я не бачу файлів / папок на моєму Mac. чи є інший спосіб?
SleepNot

14
Це спрацювало, але ви могли б пояснити, чому це так? Що міститься у загадковому smdl2tmp1.asec-файлі?
Олександр Пача

222

Змініть місце встановлення з

android:installLocation="preferExternal"

в

android:installLocation="auto"

у AndroidManifest.xml вашого проекту.


12
Це те, що зробило це для мене. Дякую!
Джим Маккіт

Так, це зробило і для мене. Дякую!
Шентіл Кумаран

22
але я хочу віддати перевагу зовнішньому ...? Як це виправити?
Ейден Фрай

2
@Sameer nope, це трапляється і на реальних пристроях - але непослідовно. Основними з них є пристрої HTC Desire S та Nexus.
Ейден Фрай

1
@AidenFry Використовуйте рішення user2445968, якщо ви хочете зберегти перевагуExternal.
LG

32

Якщо ви використовуєте емулятор, відредагуйте його та додайте більше пам’яті. У мене виникла така проблема, як ця, і все, що я зробив, було відредагувати пам'ять AVD від 200 Мб до 1000 МБ, і проблема, здається, пішла ... Удача.


Так, так само і зі мною. Великі пальці вгору :)
NaXir

Окрім збільшення пам’яті, я також повинен був стерти дані користувачів, і лише після цього новий розмір відобразився і помилка пішла.
Варун

2
Чи можу я припустити, що ви посилаєтесь на внутрішню пам’ять, а не оперативну пам’ять?
Джоні

1
Я збільшив пам'ять AVD, а потім стер дані! і зараз це працює.
Зустріньтесь з Ворою

7

Це означає, що раніше була встановлена ​​корумпована установка. Якщо ви встановите на зовнішній, я б запропонував вам відформатувати sd-карту спробувати ще раз.


6

У мене була помилка неодноразово. Я знайшов найпростіший спосіб уникнути помилки в повному обсязі - просто відформатувати SD-карту. Використання внутрішніх інструментів телефону або емуляторів. Я виявив, що автоматично сформовані SD-карти або навіть виготовлення власного sdcard.iso виходить з ладу і викликає цю помилку, якщо вона не була сформована внутрішніми інструментами для Android.


1
Ласкаво просимо до переповнення стека! Дякуємо за ваш пост! Будь ласка, не використовуйте підписи / мітки у своїх публікаціях. Ваше поле користувача вважається вашим підписом, і ви можете використовувати свій профіль, щоб розміщувати будь-яку інформацію про себе, яка вам подобається. FAQ про підписи / теги
Ендрю Барбер

Вирішили це тим же самим рішенням, оскільки проблема викликана помилкою запису на SDCard, це краще, ніж обчислювальний засіб Рене, який ви хочете зберегти на android: installLocation = "кращеExternal".
LG

Підтвердіть. Помилка в SD була причиною для мене. Я перевірив це, видаляючи "волію зовнішнього" з маніфесту - його встановлено добре.
djdance

4

Для мене це було причиною браку місця на SD-картці мого емулятора. Я працював з досить великим проектом, і я вважав, що 40 mb достатньо, але я змінив його на 200 mb і проблема пішла.


4

Була однакова помилка з різними .apkна Cyanogenmod 12.1 (Android 5.1.1) у моїй Note 8 із другим розділом для Link2SD. Мені вдалося встановити програми, змусивши встановити через adb як root:

adb root
adb install -f myapp.apk

3

Я отримав це повідомлення про помилку від Android 5.0.1. Я змінив бажане місце встановлення на "Знімна карта SD" через "Налаштування"> "Програми"> "Переважне місце встановлення".

Я змінив параметр назад на "Нехай система вирішує", і повідомлення про помилку пішло.


1
Це, здавалося, було рішенням для мене під керуванням Cyanogenmod 12 (Android 5.0.2). Це відкриття, здавалося, змушує програму встановити на знімну SD-карту, хоча в маніфесті програми вказано, що її там не можна встановити.
Сем

1

Для мене це була мова пристрою. Я прив’язав мову до арабської, щоб перевірити свою заявку. Тоді я отримав цю помилку. Повернення мови зробило свою справу.


1

android: installLocation = "авто" працює .. !!

Якщо ні, раз перевірте розмір зовнішньої пам’яті. [Доступна пам’ять> розмір програми] Якщо місця для зберігання недостатньо, також ця помилка буде викинута.


0

У мене була аналогічна проблема з емулятором. Він зник, коли я змінив тип процесора емулятора з ARM на Intel.


Це насправді не допомагає ОП з їхньою проблемою, оскільки їх стурбованість полягає в тому, щоб він працював на пристроях реального світу, велика частина яких все ще використовує процесори ARM.
Джеймс Грін


0

Для мене деінсталяція декількох додатків вирішила проблему. Коли в локальному сховищі було достатньо пам'яті, розгортання APK успішно завершено. Але зазвичай я просто перезапускаю гаджет, і установка завершується. Також можуть допомогти деякі програми, такі як Clean Master. Просто часто витирайте непотрібні процеси та закривайте програми за допомогою Clean Master та отримуйте достатню кількість пам'яті.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.