INSTALL_FAILED_INSUFFICIENT_STORAGE
Ошибка отрава жизни каждого Android разработчика. Это происходит независимо от размера приложения или объема доступной памяти. Перезагрузка целевого устройства на короткое время решает проблему, но вскоре возвращается. Существуют сотни (если не тысячи) сообщений на доске объявлений от людей, спрашивающих, почему возникает проблема, но люди в Google разочарованно молчат об этой проблеме.
Есть простой обходной путь. Если ваше тестовое устройство работает под управлением Android 2.2 или более поздней версии, добавьте android:installLocation
атрибут в файл манифеста приложения со значением "preferExternal"
. Это приведет к установке приложения на внешнюю память устройства, например на SD-карту телефона.
Например:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.andrewsmith.android.darkness"
android:installLocation="preferExternal"
Это скорее пластырь, чем исправление, и, возможно, он не идеален, если вы хотите, чтобы ваше законченное приложение было установлено во внутренней памяти устройства. Но это по крайней мере сделает процесс разработки намного менее расстраивающим.
источник
Ответы:
Это только временное решение, а не реальное исправление.
После того, как это случилось со мной и я не был доволен текущими ответами, я начал работать, пытаясь выяснить это из источника AOSP. Я нашел РЕАЛЬНОЕ решение.
объяснение
Прежде всего, немного (упрощенно) предыстории того, как Android устанавливает и обновляет
Проблема, с которой сталкивается большинство из нас, возникает при обновлении приложения, но удаление старого APK не удается. Что само по себе еще не приводит к сбою обновления, но приводит к тому, что в нем есть два APK-файла
/data/app
.В следующий раз, когда вы попытаетесь обновить приложение, система не сможет переместить его временный файл, поскольку ни (1.apk), ни (2.apk) не пусты. Поскольку File # renameTo (File) не генерирует исключение, а возвращает логический PackageManager, у него нет никакого способа узнать, почему он возвращает INSTALL_FAILED_INSUFFICIENT_STORAGE, даже если ошибка не имеет никакого отношения к количеству свободного места.
Решение
Запустить:
ИЛИ
Удалить приложение
Используйте ваш любимый метод для удаления ОБА :
Убедитесь, что ничто другое не блокирует будущие установки таким же образом. В моем случае у меня был
/data/app-lib/<full.package.name>-1
каталог, задерживающийся вокруг! В этом случае сработала установка на SD-карту и последующий переход на внутреннюю память. (Создание/data/app-lib/<full.package.name>
без-1
окончания.)Почему другие "решения" работали
Код для установки на внешнее хранилище значительно отличается, что не имеет те же проблемы
При удалении приложения удаляется только одна версия файла APK в
/data/app
. Вот почему вы можете переустановить его один раз, но не обновлять.Количество свободного места в эмуляторе не имеет значения при возникновении этой ошибки.
источник
function fix_app { adb shell "pm uninstall ${1}; rm -rf /data/app/${1}-*; su -c 'rm -rf /data/app-lib/${1}-*'" }
$ fix_app com.facebook.katana
android:installLocation="preferExternal"
но все напрасно, в моем случае ничего не работает. Я использую реальное устройство для тестирования. Какое решение в этом случае?/data/local/tmp
Вам необходимо увеличить объем памяти эмулятора Android. Для этого есть два пути:
Щелкните правой кнопкой мыши на корне вашего Android-проекта, перейдите к «Запуск от имени», а затем к «Запустить настройки ...». Найдите узел «Приложение Android» в дереве слева, затем выберите свой проект и перейдите на вкладку «Цель» в правой части окна, найдите поле «Дополнительные параметры командной строки эмулятора» (иногда вы Мне нужно будет увеличить окно) и, наконец, вставить туда "-partition-size 1024". Нажмите Apply и затем Run, чтобы использовать ваш эмулятор.
Перейдите в « Настройки» Eclipse и выберите «Запустить», добавить «-partition-size 1024» в поле «Параметр эмулятора по умолчанию». Нажмите «Применить» и используйте эмулятор как обычно.
источник
Спасибо за размещение этого вопроса. У меня есть некоторые дополнительные идеи, которые могут помочь некоторым разработчикам.
Я отлаживаю свое приложение на устройстве (не на эмуляторе). На устройстве свободно включено 21 МБ
/data
(как показывает «df» при выполнении «adb shell»), а мое приложение - всего 5 МБ. Однако я обнаружил, что если я удалю другие приложения на устройстве (без перезагрузки телефона или перезапуска adbd), INSTALL_FAILED_INSUFFICIENT_STORAGE ненадолго уйдет, а затем вернется.Таким образом, кажется, что для отладки моего 5-мегабайтного приложения требуется больше, чем 20 мегабайт
/data
, и, кроме того, что-то просачивалось каждый раз, когда я отлаживал свое приложение.Поэтому я сделал «оболочку adb» и перечислил ВЕСЬ
/data
каталог сИ я посмотрел на 5000-строчный вывод, чтобы увидеть, куда уходит все пространство.
Я обнаружил огромное количество потраченного впустую пространства на моем устройстве в
/data/klog
каталоге в виде старых файлов журналов от месячных сессий отладки.Это были не мои файлы журналов: они были созданы какой-то частью инфраструктуры Android.
Я удалил их и сразу же сэкономил 58 МБ, которые не были отнесены в приложении «Настройки» к какому-либо конкретному приложению. У меня маленькое устройство, поэтому 58 МБ очень важно (около 40%).
До сих пор я не получил INSTALL_FAILED_INSUFFICIENT_STORAGE снова после многих запусков. Будем надеяться, что это была настоящая проблема, хотя ОП предполагает, что на его устройстве было достаточно места (но не сказал, сколько).
Надеемся, что некоторые из вас также смогут избежать INSTALL_FAILED_INSUFFICIENT_STORAGE путем периодического удаления
/data/klog/*
.Или, вы можете по крайней мере сделать
ls -a -l -R
в ,/data
чтобы увидеть , где все ваше пространство будет, если действительно есть на самом деле некоторые (скрытые) пространства вопрос.источник
ls
команда сталаls -alR
du
перечисляет только папки.Помогает следующее:
Откройте оболочку на устройстве
Перейдите во временный каталог, куда сначала копируется входящий APK
Перечислите доступные файлы и удалите по желанию
До сих пор это было надежно для меня на реальном устройстве.
РЕДАКТИРОВАТЬ: Это оказалось не так надежное решение, как приведенное выше.
Я попробовал ряд решений. Ничего действительно не помогло. Наконец я нашел приложение под названием SD Maid . Это помогло.
Это говорит, что функциональность ограничена на рутированных устройствах. У меня корни, так что было бы хорошо видеть, как люди слышат, что они эффективны в этих сценариях, и если это была просто случайность, это сработало для меня (в любом случае это непредсказуемая проблема).
ПРИМЕЧАНИЕ: я не имею ничего общего с приложением. Просто нашел его с помощью поиска.
источник
Я решил это путем включения
android:installLocation="auto"
внутреннего<manifest>
тега в файл AndroidManifest.xml.источник
Error: ADB exited with exit code 1 adb: failed to install build\app\outputs\apk\app.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE] Error launching application on Android SDK built for x86.
Я добавил дополнительную строку в файл манифеста приложения
android:installLocation="preferExternal"
. с помощью этой строки он принудительно устанавливает приложение на внешнее хранилище. см. пример ниже,источник
Проблема, связанная с эмулятором, связана с тем, что в разделе не осталось места
/data
.Например,
Вот примерное представление
/data/app
каталога:Я удалил лишние APK файлы. Кажется, после каждой установки вы получаете новый файл APK. Просто удалите лишние APK файлы.
Например,
источник
В моем случае сбой был вызван
com.android.providers.media
приложением. Я сталкивался с этим на эмуляторе Android x86. Что я сделал:Слишком мало свободного места на
/data
Почти все было поглощено одним приложением! Это системное приложение, поэтому я считаю, что лучше не удалять его. Вместо этого я очистил данные приложения.
Диск был очищен и приложение успешно установлено.
источник
Я чувствую себя немного странно, когда пишу это, но я не могу быть на 100% уверен, что в некоторых случаях это неправда (у меня это сработало). Если у вас были следующие симптомы:
Затем попробуйте это:
Я отключил телефон и оставил его на ВЕСЬ ДЕНЬ. Моя батарея немного разрядилась. После этого я снова подключил его и снова начал отладку. На этот раз все работало нормально! И я имею в виду действительно очень хорошо, как и раньше.
Возможно ли, что эта ошибка может быть связана с некоторыми аппаратными проблемами, связанными с батареей ? Мне все еще кажется странным думать об этом, но теперь я время от времени отключаю свой телефон (и на ночь), и проблема не возвращается.
источник
Отвечая на самый первый пост этой темы ...
Симптом: Некоторые приложения не устанавливаются, говоря, что места нет, а на самом деле свободного места достаточно как для внутреннего, так и для внешнего хранилища !!! Решение: отключить внешнюю установку по умолчанию.
Установка внешней установки по умолчанию с помощью этого:
Делает невозможной установку во многих приложениях, которые не могут быть установлены извне (например, adblock + или около того)
Тогда решение
Или
источник
Я попробовал следующее:
Проверьте, работает ли он так же с вами.
источник
Samsung Galaxy Ace рекламирует 158 МБ встроенной памяти в своих спецификациях, но основные приложения и службы потребляют около 110 МБ (для проверки я использовал диспетчер задач на устройстве). Мое приложение было 52 МБ, потому что в нем было много ресурсов. Как только я удалил некоторые из них до 45 МБ, приложение удалось установить без проблем. Устройство все еще предупреждало меня о том, что внутреннее хранилище почти заполнено, и я должен удалить некоторые приложения, хотя у меня было установлено только одно приложение.
После установки окончательной версии пакета .apk, а затем его удаления мое устройство отображает 99 МБ свободного места, так что в конечном итоге оно может отлаживать информацию, загромождающую устройство. Смотрите ответ Луи Семприни .
источник
В Затмении
Run -- > Debug Configurations --> Select "target",
и выберите предпочитаемую цель эмулятора для запуска.Затем под «дополнительными параметрами командной строки эмулятора» добавьте:
Затем закройте эмулятор и щелкните значок отладки, чтобы запустить выбранный вами эмулятор.
Надеюсь, поможет...!
источник
Android Virtual Device Manager
пользователей. Вы можете установить размер раздела на 1024 как «Внутреннее хранилище», которое представляет собойdisk.dataPartion.size
Я столкнулся с этой проблемой с моим новым Nexus 4 и APK, созданным с помощью Adobe AIR. У меня уже был Android: installLocation = "предпочесть External" в моем манифесте. Я заметил, что я также звонил
adb install
с-s
опцией (Установить пакет на общем запоминающем устройстве, таком как sdcard.), Которая выглядела как излишняя.Снятие
-s
флажкаadb install
исправило проблему для меня.источник
Поскольку эта проблема все еще существует, я решил добавить что-то к ответу RacZo в целях разработки. Если вы не используете плагин Eclipse или по какой-либо причине у вас нет исходного кода, а есть только .apk, вы можете увеличить размер раздела из командной строки, используя ту же опцию при запуске эмулятора:
Насколько я знаю, этот параметр не задокументирован на developer.android.com, поэтому я решил опубликовать его здесь, чтобы люди могли найти это решение.
источник
avd
Я столкнулся с этим вопросом, потому что я получал эту ошибку с помощью Sideload Wonder Machine для установки приложений на мой реальный телефон. Я обнаружил, что проблема заключалась в том, что у меня было несколько файлов .apk в каталоге / payload. Я думал, что это что-то, что было поддержано, но когда я удалил все .apk, кроме одного, ошибка исчезла.
источник
Просто удалите приложение из эмулятора либо из командной строки, либо перейдите в настройки и удалите приложение. Это остановит ошибку от появления.
источник
Если вы используете реальное устройство, вам просто не хватает внутренней памяти. Просто зайдите в настройки Android -> Приложения и переместите некоторые приложения на SD-карту или удалите некоторые приложения.
Если вы используете эмулятор, посмотрите ответ RacZo .
источник
Я столкнулся с той же ошибкой, когда пытался пакетно установить около 50 приложений в каталоге SD-карт с помощью оболочки ADB после полного обновления ПЗУ:
Некоторые из них установлены, но многие не удалось с ошибкой INSTALL_FAILED_INSUFFICIENT_STORAGE. У всех неудачных приложений было место в их имени. Я пакетно переименовал их и попробовал еще раз. Все сработало на этот раз. Я не делал перезагрузку или еще что-нибудь. Может быть, это не та проблема, с которой вы, ребята, сталкиваетесь, но это может помочь кому-то, кто ищет ту же проблему, что и я.
источник
Эмуляторное решение
Откройте свой
.Android
каталог. Обычно в вашем домашнем каталоге. Затем перейдитеavd
и затем откройте каталог с именем avd, которое вы хотите изменить.Теперь отредактируйте
config.ini
файл и добавьте следующую строку или измените следующую строку:disk.dataPartition.size=1024
Где
1024
размер, который вы хотели бы использовать в МБ. Сохраните файл и запустите ваш эмулятор сwipe user data
флажком. Теперь ваш эмулятор должен иметь новый размер.источник
Решение простое.
Откройте диспетчер AVD. Отредактируйте свой AVD.
Внизу в разделе оборудования, есть некоторые свойства, перечисленные с «New ...» и «Delete» справа от него.
Нажмите Новый. Выберите размер раздела данных. Установите значение «512 МБ» (требуется МБ). И вы сделали. если проблемы не исчезли, увеличьте размер системного раздела и раздела кэша, используя тот же метод.
Все это документировано прямо здесь: http://developer.android.com/guide/developing/devices/managing-avds.html
источник
Убедитесь, что вы не подключаете устройство Android с USB при попытке запустить эмулятор
источник
Если вы запускаете свое приложение на эмуляторе, и если эта проблема сохраняется, проверьте диспетчер уведомлений. Если он показывает значок и уведомление о «Память телефона заполнена», это означает, что вы уже установили так много приложений в своем эмуляторе. Удалите несколько приложений, которые вы не хотите в данный момент из «Настройки >> Управление приложением >> Выберите приложение >> Удалить».
Это установлено.
Теперь перезапустите программу.
источник
Я получил эту ошибку сегодня, когда использовал свой телефон для тестирования / отладки с Eclipse.
Моя ошибка заключалась в том, что я использовал норвежский специальный символ («" »,« ø »,« å ») в имени приложения. Когда я изменил название приложения (используя «o» вместо «ø»), приложение было установлено правильно ..
Возможно, это не ваша проблема, но можно заметить, что другие люди получают такую же ошибку.
источник
Попробовав все остальное в этой теме, я обнаружил, что моя собственная проблема в том, что путь к файлу .apk был слишком длинным. Поэтому я перешел в каталог, где был .apk, и сделал:
вместо
И это сработало ... установлено просто отлично.
Просто подумал, что это может помочь кому-то еще.
источник
Временное решение:
Компилировать как 2.1 без
android:installLocation="preferExternal"
.ОК?
Компилировать как 2.2 в том числе
android:installLocation="preferExternal"
.Это все равно будет установлено в версии SDK менее 8 (тег XML игнорируется).
источник
В моем случае это было исправлено путем увеличения расширенной памяти eclipse, путем изменения значения -Xmx768m в eclipse.ini
источник
В итоге я удалил приложение с устройства, а затем переустановил его обратно в Eclipse. Это проблема, которую я постоянно получаю на своем устройстве от регулярного использования, но сегодня я получил это сообщение от разработки.
источник
Я тоже столкнулся с той же проблемой, и я сделал «Сброс заводских данных», и после этого он работал нормально.
источник
У меня не было root-доступа на телефоне, и я не готов установить приложение на SD-карту. 15 МБ свободного места доступно,
/data/
а мое приложение меньше 2 МБ.Некоторое время я проходил мимо; очистка проекта Eclipse и перезагрузка телефона, но в конце концов это перестало работать (вероятно, после обновления).
Очистка кеша моего приложения решила проблему для меня и не требует перезагрузки телефона или удаления приложения.
На рынке есть приложения, которые вы можете использовать для очистки кеша нескольких приложений одновременно. Ищите «чистый».
источник