Что это значит: Ошибка [INSTALL_FAILED_CONTAINER_ERROR]?

Я пытаюсь развернуть свое приложение и иногда получаю эту ошибку:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Я пытался погуглить, но не нашел, что означает ошибка и чем она вызвана. Я развертываю через IDE (IntelliJ), файл копируется на устройство в /data/local/tmp (без рута Huawei Ideos, работает 2.2), но диспетчеру пакетов это, похоже, не нравится. Перед установкой apk я уже заранее удалил приложение с устройства. Я также убедился, что в каталоге /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]

Что это значит и как решить?

Изменить/обновить:

Я могу избежать ошибки, когда не разрешаю устанавливать приложение на SD-карту, установив

android:installLocation="internalOnly"

в манифесте. Это нормально для разработки, но для производства это не совсем то, что мне нужно, так как мое приложение довольно большое - 17 МБ; поэтому я предпочитаю, чтобы он был на SD-карте. Как вообще установить его на внешнюю память без рутирования (поскольку это единственный способ удалить /mnt/secure/asec/smdl2tmp1.asec, что также является одним из решений).


person Mathias Conradt    schedule 21.04.2011    source источник
comment
Просто из любопытства: можете ли вы установить его pm install -f com.company.shop?   -  person Jakub Czaplicki    schedule 03.09.2012
comment
Существует несколько вариантов проблемы INSTALL_FAILED_CONTAINER_ERROR, для некоторых из них см. мой ответ здесь: stackoverflow.com/a/30343659/313113   -  person Alex Bitek    schedule 20.05.2015
comment
Для меня это было так же просто, как эмулятору не хватило места (???), и мне пришлось стереть данные в AVD Manager.   -  person EpicPandaForce    schedule 29.05.2020


Ответы (15)


удалите этот файл с вашего устройства

/mnt/secure/asec/smdl2tmp1.asec

Изменить/обновить Матиас Конрад (OP):

Если у вас нет root-доступа, вам нужно смонтировать SD-карту и удалить ее через компьютер:

/.android_secure/smdl2tmp1.asec
person Community    schedule 21.04.2011
comment
но мое устройство не рутировано, и, глядя на безопасную папку, доступ есть только у root. Раньше мне удавалось запускать приложение, только теперь с некоторых пор я не могу его запустить, и оно выдает указанную выше ошибку. - person Mathias Conradt; 21.04.2011
comment
Кстати, есть еще папка /mnt/asec/, к которой я могу получить доступ без полномочий root, но она пуста - person Mathias Conradt; 21.04.2011
comment
Хорошо, оказывается, мне нужно смонтировать SD-карту и удалить ее через компьютер (.android_secure/smdl2tmp1.asec), тогда все снова заработает. - person Mathias Conradt; 21.04.2011
comment
@Jazz Это случилось со мной сегодня. Я действительно хотел бы знать, почему / о чем это. Удалить файл вручную? Почему затмение не могло этого сделать? Это глюк телефона? - person Erik; 06.07.2011
comment
Я не смог найти файлы .asec в указанных местах, а удаление SD-карты из эмулятора не помогло. Это сработало, когда я удалил sdcard.img в моем каталоге avd. - person Roy Solberg; 14.06.2012
comment
у меня эта проблема. я не вижу файлы/папки, используя мой Mac. Есть ли другой способ? - person SleepNot; 14.08.2012
comment
Это сработало, но не могли бы вы объяснить, почему это так? Что находится в таинственном файле smdl2tmp1.asec? - person Alexander Pacha; 27.05.2013
comment
Я не могу найти этот файл (ни по какому пути, даже по всей файловой системе), хотя устройство рутировано. Что еще я могу сделать? - person android developer; 03.01.2015

Измените место установки с

android:installLocation="preferExternal"

в

android:installLocation="auto"

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

person Rene    schedule 15.04.2012
comment
Это то, что сделало это для меня. Спасибо! - person Jim McKeeth; 19.07.2012
comment
Да, это сделало это и для меня. Спасибо! - person Senthil Kumaran; 08.12.2012
comment
но я хочу предпочесть внешний...? Как это исправить? - person Aiden Fry; 19.12.2012
comment
@AidenFry это проблема эумлятора. Так что меняйте, пока не протестируете на эмуляторе - person Tofeeq Ahmad; 21.02.2013
comment
@Sameer Нет, это происходит и на реальных устройствах, но непоследовательно. Основными из них являются устройства HTC Desire S и Nexus. - person Aiden Fry; 21.02.2013
comment
да, это случилось со мной на HTC Desire S и исправлено путем изменения места установки на авто. Спасибо.. - person Rizwan Sohaib; 14.03.2013
comment
@AidenFry Используйте решение user2445968, если вы хотите сохранить PreferenceExternal. - person L. G.; 14.01.2014
comment
Для тех, у кого, как и у меня, не было исходников приложения, следуйте инструкциям этого сайта: miui-au.com/add-ons/apktool . apktool предоставляет очень полезную функцию декодирования, изменения файлов и перекодирования apk. - person Alex; 15.11.2014
comment
Это должен быть ответ! - person Ayyappa; 23.02.2015

Если вы используете эмулятор, отредактируйте его и добавьте больше памяти. У меня была такая же проблема, и все, что я сделал, это отредактировал память моего AVD с 200 МБ до 1000 МБ, и проблема, похоже, исчезла ... Удачи.

person Dan    schedule 11.08.2011
comment
Да так же случилось и со мной. Недурно :) - person NaXir; 03.10.2014
comment
Помимо увеличения памяти мне еще пришлось стереть пользовательские данные и только после этого отразился новый размер и ошибка ушла. - person Varun; 24.03.2015
comment
Могу я предположить, что вы имеете в виду внутреннюю память, а не оперативную память? - person Jonny; 29.07.2015
comment
Я увеличил память своего AVD, а затем стер данные!! и теперь это работает. - person Meet Vora; 09.11.2017

Это означает, что более ранняя установка была повреждена. Если вы устанавливаете на внешний, я бы посоветовал вам отформатировать SD-карту и попробовать еще раз.

person dalbator    schedule 16.04.2012

У меня была эта ошибка неоднократно. Я нашел самый простой способ полностью избежать ошибки — просто отформатировать SD-карту. Использование внутренних инструментов телефона или эмуляторов. Я обнаружил, что автоматически сгенерированные SD-карты или даже создание собственного sdcard.iso терпят неудачу и вызывают эту ошибку, если они не отформатированы внутренними инструментами Android.

person user2445968    schedule 02.06.2013
comment
Добро пожаловать в Stack Overflow! Спасибо за ваш пост! Пожалуйста, не используйте подписи/слоганы в своих сообщениях. Ваш пользовательский ящик считается вашей подписью, и вы можете использовать свой профиль для публикации любой информации о себе, которая вам нравится. Часто задаваемые вопросы о подписях/слоганах - person Andrew Barber; 03.06.2013
comment
Решил это тем же решением, так как проблема вызвана ошибкой записи на SDCard, это лучше, чем работа Рене, если вы хотите сохранить android:installLocation=preferExternal. - person L. G.; 14.01.2014
comment
Подтверждать. Ошибка на SD была причиной для меня. Я протестировал его, удалив предпочтительный внешний из манифеста - он установлен нормально. - person djdance; 04.09.2014

Для меня это было вызвано нехваткой места на SD-карте моего эмулятора. Я работал над довольно большим проектом и думал, что 40 МБ будет достаточно, но я изменил его на 200 МБ, и проблема исчезла.

person noisecapella    schedule 05.08.2012

Была такая же ошибка с разными .apk на Cyanogenmod 12.1 (Android 5.1.1) на моем Note 8 со вторым разделом для Link2SD. Я смог установить приложения, принудительно установив их через adb от имени пользователя root:

adb root
adb install -f myapp.apk
person Tobi G.    schedule 05.07.2016

Я получил это сообщение об ошибке от Android 5.0.1. Я изменил предпочтительное место установки на «Съемная SD-карта» через «Настройки» -> «Приложения» -> «Предпочитаемое место установки».

Я изменил параметр обратно на «Пусть решает система», и сообщение об ошибке исчезло.

person nyxee    schedule 21.03.2015
comment
Это казалось решением для меня, использующего Cyanogenmod 12 (Android 5.0.2). Похоже, что это открытие заставляло приложение устанавливаться на съемную SD-карту, хотя в манифесте приложения указывалось, что оно не может быть установлено там. - person Sam; 08.05.2015

Для меня это был язык устройства. Я изменил язык на арабский, чтобы проверить свое приложение. Затем я получил эту ошибку. Возврат языка сделал свое дело.

person Elyess Abouda    schedule 23.10.2012

android:installLocation="auto" работает..!!

Если нет, один раз проверьте размер внешней памяти. [Доступная память > размер приложения] Если памяти недостаточно, также выдается эта ошибка.

person Mallikarjungouda Annigeri    schedule 10.02.2016

У меня была аналогичная проблема с эмулятором. Он исчез, когда я изменил тип процессора эмулятора с ARM на Intel.

person Wytas    schedule 22.06.2013
comment
Это на самом деле не помогает OP в решении их проблемы, поскольку их забота - заставить его работать на реальных устройствах, многие из которых все еще используют процессоры ARM. - person James Green; 23.06.2013

в некоторых ситуациях удаление libs/android-support-v4.jar вызывает эту ошибку.

person Amir Saniyan    schedule 31.03.2014

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

person CoolMind    schedule 18.07.2014

Перезапуск моего устройства решил проблему для меня.

person theOzmic    schedule 05.01.2017

Это происходит, когда во внутренней памяти недостаточно места для установки приложения. Просто освободите память во внутренней памяти, удалив ненужные файлы или фотографии. Программное обеспечение для очистки памяти также может помочь.

person Rahul K    schedule 17.06.2021