В настоящее время я использую Link2SD, так как встроенной памяти моего телефона недостаточно для более чем нескольких основных приложений. Это очень эффективно, но только при включенном телефоне.
При смене ПЗУ кеш dalvik стирается, и когда телефон перезагружается, вы видите индикатор выполнения, говорящий, что Android оптимизирует приложения. Таким образом, при разумном количестве приложений кеш dalvik заполняет хранилище задолго до того, как link2sd сможет что-либо с этим сделать.
Итак, есть ли способ монтировать папку SD-карты в качестве подходящего места для кеша, прежде чем система начнет загружаться и заниматься своими делами? Я знаю, что это может включать создание символической ссылки, но я просто не знаю, когда что-то монтируется и в каком порядке.
Конечно вы можете. Хотя кажется, что нет проблем с переносом 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
Вот и все. Были сделаны. Перезагрузите телефон (не обязательно, но рекомендуется).
Некоторые замечания об этом процессе:
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...]
Никогда не извлекайте SD-карту. Если вы переформатируете свою SD-карту, убедитесь, что она по-прежнему ext4 И создайте папку dalvik-cache перед первой загрузкой телефона.
Есть несколько хороших руководств, которые могут оказаться полезными для решения вашей проблемы:
Согласно нескольким веткам форума, A2SDGUI — Darktremor A2SD GUI должно быть предпочтительным приложением для перемещения кеша Dalvik на вашу SD-карту.
iBug