«Недостаточно места для хранения», даже если в памяти устройства много свободного места


140

Общее пространство моего приложения составляет 10 МБ, а после установки оно займет менее 20 МБ. В Galaxy Note I при обновлении моего приложения появляется сообщение «Недостаточно свободного места», где 214 МБ свободного места в памяти устройства (внутренней). Это случается даже при попытке загрузить новое приложение.

Я долго искал решение и причину этой проблемы, но не могу ее найти. Как мне решить эту проблему?

Это результат использования «adb shell df» на другом моем устройстве с той же проблемой. Имеет 35 МБ свободного места:

/dev: 115788K total, 0K used, 115788K available (block size 4096)
/mnt/asec: 115788K total, 0K used, 115788K available (block size 4096)
/system: 179840K total, 168376K used, 11464K available (block size 4096)
/data: 201856K total, 168524K used, 33332K available (block size 4096)
/cache: 108544K total, 1284K used, 107260K available (block size 4096)
/cdrom: 8960K total, 8632K used, 328K available (block size 4096)
/tmp: 2048K total, 28K used, 2020K available (block size 4096)
/pds: 1536K total, 1320K used, 216K available (block size 4096)
/mnt/sdcard: 1928992K total, 1014496K used, 914496K available (block size 32768)
/mnt/secure/asec: Permission denied

2
Может случиться так, что указанное вами свободное пространство не является объемом фактического внутреннего хранилища, а является «внутренним» (например, постоянно спаянным) «внешним» хранилищем. Если вы можете запустить adb из командной строки, опубликуйте выводadb shell df
Chris Stratton

Это проблема на стороне клиента. Поэтому я не могу запустить adb shell.
Снайпер

Тогда кто я могу найти фактическую внутреннюю память (свободное место) устройства, где будут храниться приложения.
Снайпер

1
вы объявили android: installLocation в манифесте?
Blackbelt

8
Этот вопрос кажется не по теме, потому что он касается проблемы на уровне пользователя. Лучше бы дома у Энтузиастов Android .
Питер Мортенсен

Ответы:


177

Вот очень простое решение, которое работает на моих Samsung Galaxy S II и Note 1 ; Не имею представления о других моделях:

  1. Откройте приложение телефона и переключитесь на клавиатуру.
  2. Набирать номер *#9900#
  3. На появившемся экране нажмите кнопку с надписью «Удалить dumpstate / logcat».

Таким образом я восстановил около одного ГБ системного пространства.


3
Он удалил внутреннее пространство (около 300 МБ) на моем Galaxy Note 1, но стоит отметить. +1 с моей стороны.
Мохаммад Ариф

15
Неправильный ответ на эту проблему. Там нет недостатка внутренней памяти здесь !!!
Роберт Симер 08

13
По-видимому, это не работает для сторонних программ дозвона (например, CyanogenMod), но см. Ответ Рли о том, как сделать то же самое, если вы получите ошибку «недействительный MMI», когда вы попробуете это на рутированном, модифицированном телефоне.
ChrisC

3
Как мне сделать то же самое на планшете, у которого НЕТ клавиатуры для набора номера и который НЕ рутирован ???
Jalle

1
Для меня (hammerhead, API-19) проблема заключалась в том, что / data / app-lib / содержал пакет приложения, который я пытался установить. Удалить и исправить.
shkschneider

67

Сначала я попробовал ответить Берислава Лопака , но получил, Connection problem or invalid MMI code.когда попытался дозвониться *#9900#. Я использовал CyanogenMod на телефоне и считаю, что телефоны с пользовательскими ПЗУ не используют стандартную программу набора номера, поэтому им не хватает функциональности SysDump.

По сути, Delete dumpstate/logcatв SysDump очищает файлы журнала /data/log. Но вы также можете сделать это вручную без SysDump. (Предполагается, что ваш телефон был рутирован, что будет иметь место, если на вашем телефоне работает CyanogenMod или любое другое нестандартное ПЗУ.)

  1. Убедитесь, что установлены приложения Superuser и Terminal Emulator. (Они поставляются с большинством пользовательских ПЗУ.)
  2. Запустить эмулятор терминала
  3. Введите su, нажмите "Return".
  4. Это вызовет приглашение суперпользователя. Предоставление доступа. (Вам придется подождать три секунды, прежде чем вы сможете нажать «Разрешить».)
  5. Измените текущий каталог, набрав cd /data/log, а затем вернувшись.
  6. УБЕДИТЕСЬ, что вы находитесь в data/logкаталоге, набрав pwd, а затем вернувшись. Он должен распечатать настоящий рабочий каталог, в которой находитесь /data/log. Очень важно убедиться, что вы находитесь в правильном каталоге, поскольку на следующем шаге будут удалены все файлы в любом рабочем каталоге, в котором вы сейчас находитесь.
  7. Удалите все файлы в каталоге, набрав rm *, а затем вернувшись.
  8. Закройте окно терминала или приложение или введите, exitчтобы выйти из suсеанса.

Я удалил примерно 1500 таких файлов размером 1 МБ и исправил проблему «Недостаточно свободного места».

Как и в случае с другими постерами, у меня есть Galaxy S II , поэтому, похоже, это проблема с этой моделью.

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

ПРИМЕЧАНИЕ. Некоторые файловые менеджеры будут ошибочно /data/logуказывать, что они пусты, поскольку они работают без привилегий и, следовательно, не имеют прав для просмотра файлов внутри.


Спасибо, это был первый пост на форуме, в котором мне объясняли, что делать, если не работает * # 9900 #! Я подозревал, что причиной недействительной проблемы с MMI является CyanogenMod, но не знал, что делать дальше. Я также использовал ES File Explorer, но он не показывал мне каталог / data / log - по-видимому, я забыл получить его для просмотра скрытых файлов.
ChrisC

2
@Chris Chapman: Поскольку вы используете CyanogenMod, вы можете использовать собственный файловый менеджер CyanogenMod под названием File Manager (синяя папка с белой стрелкой / кружком). Перейдите в Настройки -> Общие настройки -> Режим доступа в приложении и измените его на режим подсказки пользователя или режим доступа с правами root (режим подсказки пользователя безопаснее). После этого вы сможете увидеть файлы в каталоге / data / log. Также вы сможете массово удалить все файлы. Этот метод проще, но удаление файлов происходит медленнее.
rhlee

+1! Я всегда вижу такие числа *#9900#, *#7832но у меня не работает из-за Cyanogen ROM.
S.Thiongane

13
Относится ли это к CyanogenMod 10.2? Потому что у меня нет папки "/ data / log". "Данный файл или каталог отсутствует".
jonS90

7
У меня есть /data/и /data/data/и , /sdcard/data/но ни один из них не имеют logподпапки
эндолиты

18

Память может быть зарезервирована ОС для использования для работы того, что вы обычно запускаете (что-то вроде файла подкачки). Вы можете сжать еще одно или два приложения,

  • Пытаться установить их сразу после перезагрузки, или
  • Принудительно закрывая некоторые запущенные приложения (но этот второй вариант может быть не очень хорошей идеей - см. Первую ссылку),

Но единственное хорошее решение - это

  • Разбейте SD-карту на разделы, чтобы приложения можно было устанавливать прямо на нее (см. Вторую ссылку).

Взгляните на сообщение на форуме. Это должно было случиться: предупреждение о нехватке памяти! .

Важная часть:

ОС знает, сколько памяти ей нужно для запуска приложений, которые у вас уже есть. Это прекрасный пример.

Теперь вы можете «обмануть» ОС, принудительно закрыв некоторые приложения, которые находятся в оперативной памяти. Это увеличит ваше "ведро" памяти, что может позволить вам установить приложение, но помните, что если вы будете делать такие вещи, вы только вызовете проблемы в будущем .. лаг, сообщения об ошибках и т. Д. (Потому что вы обманываете ОС думая, вы дали ему дополнительную память, что на самом деле вы сделали .. вы только принудительно закрыли).

Еще одно хорошее объяснение того, что происходит, можно найти в сообщении на форуме « Низкая внутренняя память» .

Важная часть:

Причина, по которой ваше внутреннее пространство заполняется, состоит из трех причин. Во-первых, когда приложение «перемещается» на SD-карту, оно перемещается не полностью. На самом деле уходят только его части. Во-вторых, кеш Dalvik приложения по-прежнему хранится во внутренней памяти (которая занимает значительный объем места). В-третьих, данные для приложений и все ваши системные настройки хранятся во внутренней памяти (да, некоторые приложения используют SD-карту для части своих данных, но каждое приложение имеет данные, хранящиеся во внутренней памяти).

И в этой ветке есть предложения о том, какие разделы вы можете сделать на своей SD-карте, чтобы разрешить «моар-приложения»!


5
Согласно androidforums.com/evo-4g-support-troubleshooting/… , «Эээ, что? Все это неверно. Область ПЗУ, в которой установлены приложения, не связана с областью ОЗУ, где приложения запускаются / кешируются. Task Killer будет освободите оперативную память, а не ПЗУ. Вы не сможете установить больше приложений в эту область, просто отключив их от запуска ". (Я думаю, ПЗУ - неправильный термин, но все же)
nafg

1
"ROM", постоянная память, здесь вообще не обсуждается. Каждый тип хранилища, который мы обсуждаем, можно изменить, в отличие от ПЗУ. То , что в настоящее время обсуждается ОЗУ и место для хранения, и даже эти понятия размыты понятием пространства подкачки, в которых один действует как другие. Если у вас есть другие ответы для публикации, это может быть конструктивным, но аргументы, указывающие на ПЗУ, кажутся гораздо менее правдоподобными.
AM

7
Полный чушь ответ. 1) Мы не говорим здесь об оперативной памяти, но вы говорите. Зачем? 2) Android не использует своп (по умолчанию). 3) ОС не резервирует оперативную память для установленных приложений. 4) Внутренняя память не заполнена, на что указывает op !! 4) @Sniper Прошу вас, не принимайте этот возмутительный ответ!
Роберт Симер 08

3
Этот ответ кажется неуместным. Ниже приведены более полезные ответы.
Mr Ed

1
@AM Вы здесь совершенно отключены. ПЗУ - это внутренняя память телефона (например, жесткий диск компьютера). ОЗУ - это «блокнот», который процессор использует во время работы и куда загружаются ваши приложения во время работы. Со всеми твердотельными накопителями термин ПЗУ действительно был "запутан". На самом деле все сводится к двум различным типам «памяти» 1) энергозависимая память (RAM) работает быстро и требует питания для «хранения» вещей, то есть, как только устройство выключается, эта память стирается. 2) энергонезависимая память (ПЗУ) - это место, где данные хранятся даже при отсутствии питания.
Mike U

12

У менеджера пакетов («установщика») есть проблема дизайна: он не может различить множество возможных ошибок и регулярно придумывает оправдание «недостаточно места для хранения».

Первые шаги сделаны: определите, что это проблема установки (1.) и не связана с нехваткой памяти (2.)

  1. Это происходит в консоли ( pm install file.apk), в Google Play, на других рынках и при ручной установке через графический интерфейс (например, «щелчок» по загруженному файлу APK ); это не проблема загрузки, ...
  2. Пакеты полностью попадают в /dataраздел или в основном на SD-карту (и немного на нее /data). - Оба места показывают достаточно места, как указано на исходном плакате (33 МБ и> 900 МБ соответственно) для пакета <20 МБ. –И– на /dataразделе свободно более 10% (33 МБ - это более 10% от 200 МБ).

Удивительно, но в большинстве ответов это не учитывается ...

На самом деле /dataраздел нуждается в очистке от остатков предыдущих установок.

  • Определите общее имя проблемного пакета (например, com.abc.def)
  • Удалите пакет (например, pm uninstall com.abc.def)
  • Проверьте, что от него осталось в данных (например, find /data -name 'com.abc.def*')
  • Удалить это

Установщик подавляется ими, возвращаясь по неправильной причине. - Интересная часть: если пакет установлен на SD-карту (принудительно или другими способами), некоторые (все?) Остатки /dataне повредят ... что приводит к ложному убеждению, что это действительно проблема с пространством ( больше места на SD карте ...)!

Вопрос о переполнении стека, из которого я получил половину этого, - это решение ошибки INSTALL_FAILED_INSUFFICIENT_STORAGE на Android .


6

Первое, что нужно сделать, это проверить подробности сообщения об ошибке. Для этого вы можете использовать приложение LogCat .

Для меня проблема заключалась в ошибке типа

Cannot rename native library directory /data/app-lib/vmdl-... to /data/app-lib/com.xyz

Решением было активировать в моем мозгу функцию здравого смысла и с помощью ES-Explorer искать папку com.xyz в папке app-lib. Я узнал, что эта папка уже была там. Таким образом, его удаление решило проблему переименования, и теперь приложения могут устанавливаться правильно.


3
Довольно грустно, сколько решений полагается на загрузку и установку еще одного приложения
Mooing Duck

6

Та же проблема возникла с моим телефоном, и это решило проблему:

  • Перейдите в Application Manager/ Appsиз настроек.

  • Выбрать Google Play Services.

Введите описание изображения здесь

  • Нажмите Uninstall Updatesкнопку справа от Force Stopкнопки.

  • После удаления обновлений вы должны увидеть Disableкнопку, означающую, что все готово.

Введите описание изображения здесь

Теперь вы увидите много свободного места.


1
и вы должны делать то же самое для всех приложений, особенно от Google. Не забудьте перед этим отключить автоматическое обновление приложений.
GoTo

2

У меня также была эта проблема при установке приложения после того, как я его удалил. Я решил загрузить Lucky Patcher, а затем щелкнул меню - Устранение неполадок - удалить исправления и резервные копии (недостаточно места для хранения). Обратите внимание, что вам нужно, чтобы ваше устройство было рутировано.


My Lucky Patcher (версия 3.6.7) не имеет в меню «удаления исправлений и резервного копирования».
Роберт Симер 08

Я не могу установить Lucky Patcher из-за той же ошибки. Его даже не установят с помощью ADB ...
Metafaniel

2

У меня некорневой Nexus 4 (у которого только внутренняя память, без SD-карты), и эта ошибка возникала при обновлении более крупных приложений. Меньшие приложения будут обновляться нормально.

Я обнаружил, что это произошло потому, что я недавно подписался на сервис Play Music All Access и закрепил несколько альбомов.

Они загружаются в скрытый /dataраздел, и именно в нем закончилось место (я предполагаю)

Я открепил пару альбомов и теперь у меня нет проблем с установкой приложений.


2

1. Перезагрузите телефон и заново установите приложение !

У меня также была такая же проблема Insufficient Storage Availableна моем устройстве, но я перезапустил свое устройство , и оно сработало нормально!

PS:

2. Установите приложение на внешний накопитель.

Для этого установите Storage Locationс помощью следующей команды

adb shell pm set-Install-Location 2 // 2 for external storage ([SD card][1])

adb shell pm set-Install-Location 1 // 2 for internal storage 

adb shell pm set-Install-Location 0 // for auto

2
Спасибо, Тарсем! Я пробовал перезапуск более 20 раз, но безуспешно .. :(
Sniper

1
Установка на SD-карту позволяет избежать проблемы, но не решает ее (см. Мой ответ) –и– вы можете проще установить проблемный пакет на SD-карту следующим образом:pm install -s package.apk
Роберт Симер

2

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

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

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

Для следующего шага вам понадобится root-доступ на вашем телефоне:

С помощью файлового менеджера перейдите в / data / app-lib и найдите каталог (или каталоги), связанный с приложением. Например, для kindle это com.amazon.kindle. Удалите это. Также перейдите в / data / data и сделайте то же самое.

Затем перейдите в магазин игр и переустановите приложение. В моем случае это работало для всех приложений.


1

У меня была такая же проблема, и она была решена с помощью App Cache Cleaner. .

(HT: acejavelin @ Форумы Android )


1
На самом деле, это не так уж и глупо. У меня есть эта проблема в моем Galaxy S2, и у него было достаточно памяти для установки приложения, и он выпустил около 87 МБ. Но это не решило общей проблемы.
Mr Ed

Хмммм. Может, это решило мою проблему. Я попробовал предложения в ответах на этот вопрос (установить на SD-карту, набрать * # 9900 # «Удалить dumpstate / logcat», запустить Cache Cleaner), и сначала он все еще не работал, т.е. возникали ошибки при обновлении существующих приложений (ошибка 902, если быть точным). Но после перезагрузки телефон обновился нормально! А теперь вроде нормально.
Mr Ed

1

Я пробовал несколько из предложенных решений, но ни одно из них не помогло мне. После некоторых исследований я наткнулся на намек , чтобы переместить некоторые приложения из /data/appк /system/app. Это освободило достаточно места для установки новых приложений и обновления существующих.

Могу порекомендовать бесплатную утилиту SystemCleanup для перемещения приложений.


Была та же проблема, и мне помог SystemCleanup. Я рекомендую!
Eran Egozi

1

Это самый простой способ. Иди settings искать storageили memoryпотрогай и ищи cached data. коснитесь его и очистите оттуда свои данные. ПРОСТО!!!


0

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

 manifest  
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:installLocation="preferExternal".....

Обычно это работает на Android 2.2 и выше в большинстве случаев. Убедитесь, что ваше приложение будет работать правильно, если оно установлено на внешнем хранилище. Вы получите хорошее представление о том, какие приложения можно установить на внешнее хранилище, в разделе «Место установки приложения» .


0

Когда дело доходит до площадного устройства, поведение устройств кажется другим для другой группы устройств.

Вот некоторые из странных мнений, которые я слышал от разных людей:

  • Перезагрузите устройство после отключения
  • Удалите некоторые приложения с устройства и освободите не менее 100 МБ.
  • Попробуйте установить приложение из командной строки, ./adb install ~Application_path
  • Переместите приложение в хранилище SD-карты или сделайте его по умолчанию на SD-карте в файле манифеста Android, android:installLocation="preferExternal"
  • В папке Raw у вас много памяти, которая устанавливает копию в память телефона при установке файла APK, а на устройстве недостаточно памяти для их загрузки.
  • Выполните рутирование устройства и установите хорошее ПЗУ, которое поможет устройству узнать об оставшейся памяти.

Надеюсь, одно из них актуально для вас! ;)


0

Большая часть доступного вам места зарезервирована ОС. Лучшее и простое решение - переместить ваши приложения во внешнее хранилище. Это освободит для вас много места.


0

Некоторым приложениям требуется перезагрузка для полной установки. Android просто сообщает, что по какой-то причине у него недостаточно памяти - он должен сказать, что для завершения установки требуется перезагрузка. Попробуйте - он установится полностью автоматически при перезагрузке.


0

Я решил для себя эту проблему. Однако на внутренней и SD-памяти было много свободного места. Это была проблема с памятью телефона, которая была почти заполнена.

Таким образом, я переехал многие из моих приложений из памяти телефона на внутренний iemory, чтобы освободить память телефона: Настройки -> Хранение -> Программы (в разделе внутренней памяти) -> Внутренний вкладка

Вот те, которые не проверяются и занимают место в памяти телефона.

Щелкните приложения (одно за другим). Щелкните кнопку «Переместить во внутреннее хранилище».

Как только вы освободите таким образом значительный объем памяти телефона, ошибка возникнет не будет.


0

После удаления нескольких приложений я могу установить новое ...

Я думаю, что ОС вычисляет общий объем памяти, необходимый для запуска всех приложений. Если он не подходит, он говорит «достаточно памяти».


0

У меня была такая же проблема на Galaxy S4 (i9505) на стандартном ПЗУ (4.2.2 ME2). У меня было такое свободное место: 473 МБ включено /data, 344 МБ включено /system, 2 ГБ включено /cache. При любой загрузке из Play Store (небольшое приложение, 2,5 МБ) я получал ошибку бесплатного потока , я проверил LogCat , он сказал: «Отменить загрузку ABC из-за недостатка свободного места».

Затем я освободил немного места /data, 600 МБ свободно, и теперь все работает нормально, приложения скачиваются и устанавливаются;). Похоже, этому ПЗУ нужно немного больше свободного места, чтобы нормально работать ...



0

Я не нашел бесплатного решения, которое работало бы, но нашел решение: я использовал платную версию резервного копирования Titanium, нажал кнопку контекста и решил проверить память, занятую приложениями. Найдите приложение для загрузки, и вы увидите, что для его кеш-памяти выделено определенное пространство. Очистить данные - это вариант, который вам нужен.


0

Я получил такое же сообщение об ошибке, если имя пакета было слишком длинным (> 128 символов). Простое использование более короткого имени решило проблему.


0

У меня было больше 2 ГБ внутреннего пространства, но я не мог устанавливать / обновлять приложения ни из Google Play ни вручную.

Какой бы ни была причина, очистка раздела кеша решила мою задачу.

Шаги: Восстановление -> Очистить раздел кеша -> Перезагрузить систему сейчас


0

Если у вас есть root, удалите все папки по пути:

/data/app-lib/

А затем перезагрузите устройство.

У меня была эта проблема много раз, и каждый раз это исправление помогало мне. У него даже есть ветка XDA .

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


0

Зайдите в Настройки, Приложения, Все и удалите Google Play Store. Это заменит старую версию, и тогда вы сможете скачать без "ОШИБКИ недостаточного объема памяти". У меня работает


-1

У меня продолжалась эта проблема, и я очистил кеш Dalvik с помощью Titanium Backup. Вам нужно будет рутировать телефон. Как только я это сделал, я смог обновить Swiftkey и Beautiful Widgets.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.