Android: Ошибка установки: INSTALL_FAILED_INSUFFICIENT_STORAGE
Я получаю сообщение об ошибке "Ошибка установки: INSTALL_FAILED_INSUFFICIENT_STORAGE" при установке приложения на моем устройстве сегодня.
Он работает нормально до вчерашнего дня, сегодня только им приходится сталкиваться с этой проблемой. Я удалил некоторые файлы на SD-карте, но все еще столкнулся с проблемой. Я уверен, что это не проблема с пространством на SD-карте. Кто-нибудь может предложить, как это решить.
- nehatha
Ответы
Ответ 1
Это разрешилось с помощью android:installLocation="preferExternal"
для тега <manifest>
файла манифеста.
Как ниже:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="bros.imaq.demilic"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="preferExternal">
Спасибо
Ответ 2
Вам нужно сделать две вещи, после которых эта ошибка будет решена.
-
В вашем файле AndroidManifest.xml добавьте android: installLocation = "preferExternal" в теге манифеста.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.packagename.appname"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="preferExternal">
-
Что еще более важно, очистите данные кэша на своем устройстве. Перейти к настройкам → хранилище → нажмите на кешированные данные. Это очистит кеш и освободит место.
-
Подключите свое устройство, очистите проект и снова запустите его на устройстве. Теперь проект будет запущен на вашем устройстве.
Ответ 3
В моем случае решение с использованием тега манифеста не сработало, поскольку для этого тега не было никаких ресурсов для Android.
Что было просто удалением приложения на телефоне. И несколько других версий, которые я установил одновременно.
Ответ 4
исправлена моя проблема. проблема заключалась в том, что я установил установить место установки через adb на моем укоренившемся телефоне KitKat 4.4.2 за один раз, чтобы поместить мои приложения на SD-карту:
adb shell
pm set-install-location 2
Сказанная карта была дешевой и неудачной. даже если я установил местоположение по умолчанию на внутреннюю SD-карту, даже если бы я удалил "поврежденную" (дешевую и бесполезную) SD-карту, я теперь не мог бы устанавливать приложения... но все хорошо сейчас, решение заключалось в том, чтобы запустить
pm set-install-location 2
Ответ 5
Я пробовал много вещей из этого потока и многих других, но в моем случае ничто не исправило бы его, чтобы он не появлялся с этим сообщением, для меня он сделал это, перейдя в "Приложения" > "Службы Google Play" и очистив там данные.
Я нахожусь в GooglePlayServices 7.3.29 и отлаживаю эту старую Galaxy S1
Ответ 6
Мне не удалось удалить приложение, поскольку оно не было в списке приложений.
Мне пришлось удалить файл библиотеки из
/Данные/приложение Пб
затем снова установите приложение.
adb install
Ответ 7
На галактическом устройстве:
В моем случае я обнаружил, что Storage- > Miscellaneous files- > CasheData занял 8 ГБ, потребляя всю внутреннюю память. Очистите папку и освободите память.
После перезагрузки устройства приложения, установленные без ошибок
Ответ 8
В моем случае я работал на эмуляторе, и мое приложение терпело крах из-за доступа к устаревшей локальной ссылке в собственном коде. Это, скорее всего, не имеет значения, но я упоминаю об этом в случае, если сбои способствуют этой проблеме. Основываясь на совете, относящемся к INSTALL_FAILED_INSUFFICIENT_STORAGE, теперь я стараюсь использовать PM для удаления приложения после этих сбоев:
adb shell pm uninstall <my-application-package>
В большинстве случаев это выглядит как reset состояние эмулятора, так что я могу загрузить/установить/запустить в следующий раз.
У меня был опыт работы с .APK, который был очень большой (~ 60 Мб). Поскольку эмулятор действительно нуждается в 3x размера доступного APK (1x для загрузки в /data/local/tmp, 2x для сохранения установленных -1.apk и -2.apk копий в /data/app ), это была проблема когда у моего эмулятора было ограниченное внутреннее хранилище.
Я также делаю привычкой в этих случаях удалять пакеты по умолчанию в /data/app
adb shell rm /data/app/*
И чтобы удалить любые остаточные файлы, я, возможно, нажал на /data/local/tmp
adb shell rm /data/local/tmp/*
Даже с этими мерами я испытал INSTALL_FAILED_INSUFFICIENT_STORAGE, несмотря на наличие достаточного свободного пространства (как сообщается du
и df
). Таким образом, кажется, что существует некоторая остаточная конфигурация. В этих случаях я должен Wipe Data
с изображения эмулятора с помощью AVD.
Ответ 9
В моем случае в отношении INSTALL_FAILED_INSUFFICIENT_STORAGE.
Мне пришлось пойти и отредактировать размер AVD Internal и SD Storage моего устройства в Android Virtual Deviece Manager. Я увеличиваю внутреннее хранилище с 200 до 2000, а SD-карту также на 2000. И добавьте android:installLocation="preferExternal"
в мой AndroidManifest.xml
файл
И это сработало для меня.
Ответ 10
Моя проблема заключалась в том, что я установил местоположение приложения на внешнюю SD-карту через оболочку на adb, после чего моя SD-карта умерла. даже если он больше не был установлен, и на экране "Настройки" по умолчанию была внутренняя карта, мое приложение не установило. я должен был reset местоположение по умолчанию через оболочку, чтобы заставить его работать. см. мой ответ на Android: Ошибка установки: INSTALL_FAILED_INSUFFICIENT_STORAGE.
Ответ 11
Когда я получил эту ошибку, попытка установки на SD-карту не работала для меня, и я использую htc-телефон, но удаление некоторых приложений из телефона работает. Я думаю, что во внутренней памяти телефона требуется некоторое количество места, и этот объем пространства может варьироваться от телефона к телефону.
Ответ 12
Я использую Cordova для разработки Android и iPhone. После 4 месяцев развития эта ошибка возникла примерно в 10 раз.
ЧТО РАБОТАЕТ ДЛЯ МЕНЯ
* # 9900 # - МЕТОД № 1
Сначала все, что мне нужно было сделать, было...
- Ручной набор * # 9900 #; затем выберите удаление DUMPSTATE. Но через несколько недель после этого я все равно получил ошибку.
- Очистить оперативную память...
- ДОЛГО НАЖМИТЕ КНОПКУ ДОМА.
- нажмите кнопку RAM bttn
_ PRESS Очистить память bttn внизу
- Удалите мое приложение.
ТЕПЕРЬ БОЛЬШЕ ОШИБКИ. YAY!!!
Но сегодня метод № 1 выше не работает. Итак, я...
СПОСОБ №2 - УДАЛЕНИЕ ДАННЫХ В СКАЧИВАНИИ
- Я удалил все в папке "Загрузка" и...
ТЕПЕРЬ БОЛЬШЕ ОШИБКИ. YAY!!!
Спасибо и надеюсь, что это поможет!
Ответ 13
возможно, это может помочь вам...
- проверить настройки > хранилище > проверить Предпочитаемое место установки *
*, если съемная SD-карта. измените его на Внутреннее устройство. потому что, возможно, у вашей SD-карты есть проблемы.
надеюсь, что это поможет
Ответ 14
Если внешнее хранилище недоступно и оно не относится к месту хранения, перезагрузка реального устройства устраняет эту ошибку.
В моем журнале отображаются следующие строки:
PackageManager: Package ... could not be assigned a valid uid
PackageManager: package setting is null
PackageManager: Skipping remove dir for ...(user:0, appId:null)
PackageManager: Package couldn't be installed in /data/app/...
PackageManager: com.android.server.pm.PackageManagerException: Creating application package ... failed
PackageManager: at com.android.server.pm.PackageManagerService.scanPackageDirtyLI(PackageManagerService.java:10630)
Основная причина кажется исключением в PackageManagerService:
pkgSetting = mSettings.getPackageLPw(...);
if (pkgSetting == null) {
throw new PackageManagerException(INSTALL_FAILED_INSUFFICIENT_STORAGE,
"Creating application package " + pkg.packageName + " failed");
}
Для не установленного пользовательского приложения без общего пользователя используемый код в Settings:
private PackageSetting getPackageLPw(...) {
// Assign new user id
p.appId = newUserIdLPw(p);
if (p.appId < 0) {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Package " + name + " could not be assigned a valid uid");
return null;
}
}
// Returns -1 if we could not find an available UserId to assign
private int newUserIdLPw(Object obj) {
// None left?
if (N > (Process.LAST_APPLICATION_UID-Process.FIRST_APPLICATION_UID)) {
return -1;
}
}
private void removeUserIdLPw(int uid) {
if (uid >= Process.FIRST_APPLICATION_UID) {
final int N = mUserIds.size();
final int index = uid - Process.FIRST_APPLICATION_UID;
if (index < N) mUserIds.set(index, null);
} ...
}
Таким образом, существует некоторая проблема с логикой removeUserIdLPw или деинсталляция, не вызывающая его на бесплатный идентификатор пользователя приложения, для которого требуются подробные журналы деинсталляции, которых у меня нет на данный момент.
Ответ 15
Эта проблема связана с тем, что на вашем устройстве не хватает места для установки приложения.