Android: ошибка установки: INSTALL_FAILED_INSUFFICIENT_STORAGE - PullRequest
27 голосов
/ 20 августа 2011

При установке приложения на моем устройстве сегодня появляется ошибка «Ошибка установки: INSTALL_FAILED_INSUFFICIENT_STORAGE».До вчерашнего дня работал нормально, сегодня только я сталкиваюсь с этой проблемой.Я удалил некоторые файлы на моей SD-карте, но все еще сталкиваюсь с проблемой.Я уверен, что это не проблема с местом на SD-карте.Кто-нибудь может подсказать, как решить эту проблему.

- nehatha

Ответы [ 15 ]

73 голосов
/ 20 августа 2011

Это решено наличием 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">

Спасибо

7 голосов
/ 02 декабря 2014

Вам нужно сделать две вещи, после чего эта ошибка будет устранена.

  1. В вашем файле AndroidManifest.xml добавьте android: installLocation = "предпочитаемую" в тег манифеста.

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.packagename.appname"
    android:versionCode="1"
    android:versionName="1.0" 
    android:installLocation="preferExternal">
    
  2. Что еще более важно, очистите данные кэша на вашем устройстве.Зайдите в настройки -> хранилище -> нажмите на кэшированные данные.Это очистит кэш и освободит место.

  3. Повторно подключите устройство, очистите проект и снова запустите его на устройстве.Теперь проект будет запущен на вашем устройстве.

4 голосов
/ 22 мая 2012

В моем случае решение, использующее тег манифеста, не работало, так как для этого тега не было ресурса Android.

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

3 голосов
/ 19 мая 2015

исправил мою проблему.проблема заключалась в том, что я установил местоположение установки через adb на своем рутированном телефоне KitKat 4.4.2 за один раз, чтобы поместить свои приложения на SD-карту:

adb shell
pm set-install-location 2

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

pm set-install-location 2
2 голосов
/ 25 апреля 2015

Я пробовал много вещей из этой темы и многих других, но в моем случае ничего не помогло, оно продолжало появляться с этим сообщением, для меня то, что он делал, это переходило на Приложения> Сервисы Google Play иочистите данные там.

Я нахожусь на GooglePlayServices 7.3.29 и отлаживал на этой старой Галактике S1

1 голос
/ 20 апреля 2015

Мне не удалось удалить приложение, так как оно отсутствовало в списке приложений.Мне пришлось удалить файл библиотеки из / data / app-lib

, затем снова установить приложение.adb install

1 голос
/ 10 марта 2015

В моем случае в отношении INSTALL_FAILED_INSUFFICIENT_STORAGE.Мне пришлось пойти и отредактировать мой AVD Internal и SD Storage моего устройства под Android Virtual Deviece Manager .Я увеличиваю Внутреннее хранилище с 200 до 2000, а SD Card также до 2000. И добавляю android:installLocation="preferExternal" в мой AndroidManifest.xml файл

И это сработало для меня.

1 голос
/ 28 января 2015

В моем случае я работал на эмуляторе, и мое приложение зависало из-за доступа к устаревшей локальной ссылке в нативном коде.Это, скорее всего, не имеет значения, но я упоминаю об этом на случай, если сбои усугубят проблему.Основываясь на совете, связанном с INSTALL_FAILED_INSUFFICIENT_STORAGE , я теперь усердно использую PM для удаления моего приложения после следующих сбоев:

adb shell pm uninstall <my-application-package>

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

У меня был опыт работы с .APK, который был кратко очень большим (~ 60 МБ).Поскольку эмулятору действительно требуется 3-кратный размер доступного APK (1-кратный для загрузки в / data / local / tmp, 2-кратный для сохранения установленных копий -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.

0 голосов
/ 19 декабря 2017

Когда внешнее хранилище недоступно и не касается места для хранения, перезагрузка реального устройства исправляет эту ошибку.

Мой журнал показывает следующие строки:

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");
    }

Для неустановленного пользовательского приложения без общего пользователя используемый код в Настройки :

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 или удалением, не вызывающим ее для освобождения идентификатора пользователя приложения, который требует подробных журналов удаления, которых у меня нет на данный момент.

0 голосов
/ 12 мая 2017

Может быть, это может помочь вам ...

  1. проверить настройки> хранилище> проверить Предпочитаемое место установки *

* если съемная SD-карта. пожалуйста, измените его на внутреннюю память устройства. потому что, возможно, ваша SD-карта имеет проблемы.

надеюсь, это поможет

...