Могу ли я изменить местоположение кеша dalvik, например, с помощью символической ссылки?

9

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

При смене ПЗУ кэш dalvik стирается, и при перезагрузке телефона отображается индикатор выполнения, в котором говорится, что Android оптимизирует приложения. Поэтому, учитывая достаточное количество приложений, кеш dalvik заполняет хранилище задолго до того, как link2sd сможет что-то с этим сделать.

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

Eshwar
источник

Ответы:

2

Конечно вы можете. Хотя кажется, что нет проблем с переносом dalvik-кеша на обычную файловую систему SD-карты (наиболее распространенную, vfat), все же настоятельно рекомендуется отформатировать SD-карту в ext4 (или такую ​​же, как ваша /data), чтобы убедиться, что все работает хорошо.

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

Сначала создайте папку, в которую вы хотите перенести ваш dalvik-кеш. Затем chmodи chownновая папка для соответствия /data/dalvik-cache. Если вы используете ОС Android с поддержкой SELinux, не забудьте соответствующим образом изменить контексты безопасности. Запустить

ls -dlZ /data/dalvik-cache
ls -lZ /data/dalvik-cache

чтобы увидеть исходные разрешения, владельца / группы и контексты безопасности папки dalvik-cache.

Затем скопируйте все файлы /data/dalvik-cache, например, в новое место /storage/sdcard1/dalvik-cache. Вы можете использовать cp -aкоманду для сохранения атрибутов файла, что упростит задачу.

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

Затем rm -r /data/dalvik-cacheи создайте символическую ссылку на новое местоположение, используя

ln -s /storage/sdcard1/dalvik-cache /data/dalvik-cache

Это все. Были сделаны. Перезагрузите телефон (не обязательно, но рекомендуется).

Некоторые уведомления об этом процессе:

  1. Занятый ящик не всегда может работать хорошо, поскольку Android основан на сильно модифицированном ядре Linux. Например, почти все функции, связанные с SELinux, не работают должным образом. Вы можете проверить это, как показано ниже.

    toolbox ls -Z /data
    busybox ls -Z /data
    toolbox getenforce
    busybox getenforce
    

    Однако они могут работать правильно, в зависимости от версии Android:

    busybox chcon <context> <files...>
    busybox runcon <context <program> [args...]
    
  2. Никогда не вынимайте SD-карту. Если вы переформатируете SD-карту, убедитесь, что она по-прежнему ext4 И создайте папку dalvik-cache, прежде чем загружать телефон в первый раз.

iBug
источник
Я понятия не имел, как написал этот исчерпывающий ответ, когда увижу его снова через год. Думаю, я много забыл об Android (что, конечно, невозможно).
iBug
1

Есть несколько хороших Howtos, которые могут оказаться полезными для решения вашей проблемы:

Согласно нескольким веткам форума, A2SDGUI - Darktremor A2SD GUI должен быть приложением выбора для перемещения кеша Dalvik на вашу SD-карту.

Иззи
источник
1
Было бы неплохо, если бы вы могли добавить некоторую информацию по ссылкам в свой пост
поток
Это слишком много для интеграции с моим ответом - поэтому я извлек только основную подсказку, то есть приложение для работы.
Иззи