недостаточное хранилище - df - достаточные условия?

Я знаю, что есть много вопросов о нехватке памяти, но пока нет реального ответа! В частности, о /data/app, в котором в моем случае достаточно места. Так почему я не могу установить ни одно новое приложение?! Каковы точные условия, которые приводят к сбою установки? (Мне не нужны такие трюки, как очистка кеша или /data/app, которые в моем случае хороши..., но меня больше интересует ответ разработчика о том, как проходит процесс установки)

Спасибо !

shell@wiko:/ $ df
Filesystem               Size     Used     Free   Blksize
/dev                   235.3M   128.0K   235.2M   4096
/sys/fs/cgroup         235.3M    12.0K   235.3M   4096
/mnt/secure            235.3M     0.0K   235.3M   4096
/mnt/asec              235.3M     0.0K   235.3M   4096
/mnt/obb               235.3M     0.0K   235.3M   4096
/system                787.4M   687.4M   100.0M   4096
/data                    2.5G     1.0G     1.5G   4096
/cache                 221.5M     4.1M   217.3M   4096
/protect_f               8.8M     4.1M     4.8M   4096
/protect_s               8.8M     4.0M     4.8M   4096
/storage/sdcard0         2.3G     1.0G     1.3G   4096

Логкат дает:

I/PackageManager(  672): Apk copy done
I/PackageManager(  672): Checking for more work or unbind...
I/PackageManager(  672): Posting delayed MCS_UNBIND
V/PackageManager(  672): + starting restore round-trip 16
V/PackageManager(  672): No restore - queue post-install for 16
V/PackageManager(  672): Handling post-install for 16
V/Provider/Settings(  672): get setting for user 0 by user 0 so skipping cache
V/Provider/Settings(  672):  from settings cache , name = sys_free_storage_log_interval , value = null
V/Provider/Settings(  672): get setting for user 0 by user 0 so skipping cache
V/Provider/Settings(  672):  from settings cache , name = disk_free_change_reporting_threshold , value = null
D/dalvikvm(  672): GC_EXPLICIT freed 579K (8856), 21% free 15405K/19324K, paused 5ms+10ms, total 125ms
I/Finsky  (14148): [15066] com.google.android.finsky.packagemanager.impl.h.a(9): Package install status for fr.smoney.android.izly.REC is -4
W/Finsky  (14148): [1] com.google.android.finsky.installer.a.aa.a(37): Install failure of fr.smoney.android.izly.REC: -4, Exception: n/a
Вы уже проверили известные решения с помощью нашей вики-теги о недостаточной памяти ? И проверили «связанные» вопросы, показанные рядом с вашими, например «Недостаточно памяти» при попытке установить новое приложение ? Кроме того, взглянув на наши часто задаваемые вопросы по этой теме, вы можете получить некоторые подсказки.
@Izzi Спасибо за переформатирование и ссылки. Да, я проверил большинство этих ссылок, но они дают только ответы на уровне пользователя, которые явно не применимы в моем случае (например, ограничение 25 МБ или 10%), или советы по освобождению памяти - но ничего полезного для меня: ни «осведомленные разработчиком» подсказки о фактическом процессе установки, которые могут помочь мне понять... Как будто никто на самом деле не знал, как на самом деле работает этот процесс установки, в деталях! Я был бы очень признателен, если бы мне не пришлось копаться в коде Android, чтобы понять его ;-), надеясь, что кто-то уже это сделал...
Соответствующая тема на XDA . Если вы хотите попробовать этот подход, я думаю, все, что делает LP, это то, чего вы также можете достичь, используя pm set-install-location 1(0 = авто, 1 = внутренняя, 2 = SDCard).
@xtof54 Добро пожаловать на переформатирование! #D
@Izzy спасибо за ссылку XDA; Я попробовал, и этот маленький трюк действительно работает! После некоторого размышления это имеет смысл, потому что у меня была SD-карта, которая сошла с ума, и я удалил ее, поэтому я думаю, что Android всегда пытался установить на SD-карту, хотя ее больше нет :-/ Пожалуйста, напишите это как реальный ответ, и я отмечу его как решенный. Большое спасибо !
Ой! Это может объяснить, особенно если вы настроили предпочтение этой карты ( 2в моем ответе). Вы можете проверить это, установив 0снова (авто) и посмотреть, работает ли это. Пожалуйста, дайте мне знать, чтобы обновить мой ответ.

Ответы (1)

На XDA есть соответствующая ветка , описывающая обходной путь. Немного адаптируя его, чтобы вам не нужен был этот "конкретный инструмент" (LP):

  1. Явно укажите место установки во внутренней памяти:

    pm set-install-location 1 # (0=auto (default), 1=internal, 2=SDCard)
    
  2. Очистите настройки Play Маркета

Теперь ваша установка должна пройти.

Как видно из комментария в строке кода, по умолчанию Android настроен на автоматический выбор хранилища для установки. Кажется, что-то напутано в этой оценке. Таким образом, если вы сделаете свое желание явным, эта процедура «автоматической оценки» будет пропущена, и, таким образом, удастся избежать ошибки. Если это то, что стоит за проблемой, она также должна работать, установив предпочтительное хранилище на 2(SDCard), если вы предпочитаете это.

Читая ваш комментарий, виновник мог быть немного другим, по крайней мере, в вашем случае: если вы установили место установки, 2а затем удалили карту, почти ясно, почему в пустом слоте «недостаточно памяти» :)