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

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

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

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

Ответы (2)

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

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

Сначала создайте папку, в которую вы хотите перенести ваш dalvik-cache. Тогда 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. Busybox может не всегда работать корректно, так как 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 перед первой загрузкой телефона.

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

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

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

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