motofan logo
       
> 

[Atrix HD] - переносим кэш игр на SD-карту, А также Razr Hd, Razr M и другие (много букв)

Legza
сообщение 4.6.2013, 11:32


Интересующийся
**

Группа: Пользователи
Сообщений: 71
Регистрация: 9.12.2004
Из: Ковров
Пользователь №: 25 884
Модель телефона: Motorola Z3
Прошивка: Verizon Android 9.0

Рейтинг: 90



Всем привет.

Когда я купил Atrix HD, я оказался весьма удивлен количеством доступной встроенной памяти - из заявленных 8 ГБ доступно пользователю чуть больше 4х. Ну да ладно, подумал я, и вставил в телефон свою боевую флешку на 32 гига - теперь-то уж точно хватит)) Однако тут пришло второе удивление - оказывается, кэш игрушек, карты для навигации и вся прочая внешняя хрень - тянутся опять же во внутреннюю память! Которая у меня и закончилась часа через 2.
Небольшое исследование (для которого, правда, пришлось разблокировать загрузчик и получить рут)) - подтвердило подозрения - внутренняя память в наших аппаратах смонтирована как раздел /sdcard/ , и все программы считают, что это и есть флешка, а "настоящая" флешка - получается вроде как и нафик не нужна, так, для красоты.

Собственно, все, что я опишу ниже, актуально для всех телефонов с такой организацией памяти - Razr HD, Razr M и т.д., а думаю, и других марок телефонов, типа SGS3. Пусть в 16-гиговых моделях памяти гораздо больше, однако и она не бездонна.

Поиск по интернетам навел меня на интересный скрипт под названием "поменять внутреннюю память и sd-карту местами", однако после некоторых размышлений я решил, что это не оптимальный выход, поскольку:
  • внешняя sd-карта менее быстрая и расчитана на меньшее количество циклов перезаписи;
  • теряется возможность извлечь карту, т.к. с ней потеряем и все программы;
  • по умолчанию там заменялась внутренняя память на память флеш-карточки, а сама внутренняя оставалась не использованной, т.е. внутренние 4 гига просто пропадали в никуда. Чтобы наоборот, примонтировать внутреннюю как внешнюю, нужны были какие-то дополнительные неочевидные движения, и я их не осилил)
Прикинув, что конкретно мне не хватает, я придумал следующее - надо переносить только крупные каталоги с данными (кэш игр, карты gps и т.д.) на карту памяти, но монтировать их, как части внутренней памяти. Собственно, это у меня получилось и я этим методом с вами сейчас поделюсь. Странно, но никто про это в инете не писал - может быть это настолько очевидно, что всем и так ясно?)) Само собой, нужно так же, чтобы эти изменения работали и после перезагрузки телефона.

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

Итак, что делаем.
  1. Предположим, что вы установили игру с огромным кэшем, например, Max Payne, с кэшем в 1.5-2 гига. Кэш у вас по умолчанию находится в каталоге /sdcard/Android/data/com.rockstar.maxpayne
  2. Берем любой файловый менеджер, которым копируем эту папку целиком на внешнюю sd-карту. Если кто не знает, где в файловом менеджере внешняя флешка - так она здесь: /mnt/external1/ (на самом деле туда есть еще миллион забинденных путей, но этот - самый короткий)). Я сделал на флешке каталог Games, куда кидал кэши, но на практике, конечно же, кидать можно куда угодно. Предположим все же, что скопировали в Games.
  3. Убедившись, что все скопировалось, удаляем все файлы из /sdcard/Android/data/com.rockstar.maxpayne, но не сам каталог! Видим, что внутренней памяти опять хватает.
  4. Теперь надо сделать логическую ссылку на наш новый каталог с флешки, "забиндить" его. Простыми словами - мы сделаем так, что система будет думать, что файлы лежат по старому адресу, а они будут по новому, мы обманем систему. Для этого мы создадим скрипт.
  5. Скрипты писать можно в чем угодно, но я рекомендую программу Smanager из маркета - она все равно нам пригодится для автозапуска скриптов после перезагрузки телефона. Устанавливаем и запускаем Smanager.
    Изображение
    Кстати, как вы видите, он включает в себя еще и файл-менеджер, так что, в принципе, все можно делать в нем. (Я, однако, предпочитаю ES файл менеджер).
  6. В Smanager вызываем меню (три точки) - выбираем непонятную команду "Новый макротип". В английской версии все гораздо понятнее - "New script"))
    Изображение
  7. Вводим имя скрипта - любое, жмем ОК - если система предложит, в чем мы хотим писать скрипт - выбираем SM Editor и попадаем в блокнотик.
    Изображение
  8. Здесь мы вводим наш скрипт. Выглядит он так:
    mount -o bind /mnt/external1/Games/com.rockstar.maxpayne /sdcard/Android/data/com.rockstar.maxpayne
    Т.е. команда пробел путь, куда мы скопировали кэш пробел путь, где он должен быть на самом деле
    Изображение
  9. Выбираем меню-сохранить или просто жмем на крестик.
  10. В основном окне Smanager находим наш скрипт (он лежит внизу списка, вспоминайте имя, которое ввели в п.7) - и нажимаем на него. Попадаем в окно свойств скрипта.
  11. Выбираем первые 3 иконки и нажимаем на них (это добавить скрипт в избранное, запустить от root, запускать при перезагрузке). Нажимаем кнопку "сохранить". Предварительно можно нажать на кнопку "Run" - чтобы наш скрипт отработал и до перезагрузки.
    Изображение
  12. Выходим из программы, перезагружаемся (если не нажимали Run) проверяем работоспособность скрипта:
    - запустив игру и убедившисть, что все играет и поет
    - или просто перейдя файловым менеджером по пути /sdcard/Android/data/com.rockstar.maxpayne. Там будут файлы, а ведь мы их стерли в п.3. Такая вот уличная магия.
  13. При добавлении новых программ в наш скрипт повторяем заново действия 1-2, но новый скрипт не создаем - открываем Smanager, тыкаем в наш скрипт и кнопку "изменить". Собственно, сам скрипт можно найти и дополнить в любом редакторе.
  14. Окончательный скрипт может быть довольно большим - сюда добавятся любые каталоги, которые мы решили перенести на флеху. В конце каждой строки не должно быть лишних символов! (точек, запятых и т.д. - только перевод каретки).
    Изображение
  15. Все наши забинденные каталоги мы можем увидеть в файл менеджере, как внешние устройства.
    Изображение
Вот и все. Немного сложно, зато преимущества метода налицо:
  • На флешку переносится только то, что не нужно для обычной работы телефона, т.е. если откажет флешка, или мы ее просто вынем - в памяти все равно остаются все установленные программы, все данные и т.д. Их можно бэкапить титаниумом, поднимать обратно и т.д. Мы не нарушаем систему внутренней памяти.
  • Биндить можно целые корневые каталоги, например, добавив в скрипт
    mount -o bind /mnt/external1/Games/gameloft /sdcard/gameloft - мы сразу добавим, считай, все игры от gameloft - даже новыые игры, устанавливаемые после этого скрипта потянут кэш сразу на внешнюю флешку.
  • По идее, можно забиндить сам каталог /sdcard/Android - и больше вообще ничего не придется биндить, все данные программ пойдут на флеху. Но я так не делал, т.к. иногда флешку достаю и меняю, и не хочу, чтобы при этом пропали данные тех приложений, которые нужны, ну например, скины к Fancy Widgets или что еще.
  • Т.к. скрипты - это обычный текстовый файл, то достаточно его сохранить на той же внешней SD-карте - и ничего не придется восстанавливать после перепрошивки телефона, вайпа данных и т.д. Просто заново цепляем его через Smanager, и все работает - кэши перекачивать не надо
  • Метод универсальный, надежный и безопасный.
Собственно, пока все. Будут вопросы - не стесняйтесь задавать.

А я пока обдумаю, есть ли смысл накидать сравнение Atrix HD vs Razr HD smile.gif

Сообщение отредактировал Legza - 4.6.2013, 11:41
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
stigr
сообщение 4.6.2013, 18:33


Авторитет
********

Группа: Администраторы
Сообщений: 8 286
Регистрация: 12.3.2007
Из: Україна
Пользователь №: 126 559
Модель телефона: Motorola Edge 30 Neo

Рейтинг: 3190



Спасибо за такой ман, думаю и на других телефонах он может пригодится, а вот такой способ у Вас работает [DROID Bionic] - Обсуждение Motorola XT875 ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Legza
сообщение 10.6.2013, 18:19


Интересующийся
**

Группа: Пользователи
Сообщений: 71
Регистрация: 9.12.2004
Из: Ковров
Пользователь №: 25 884
Модель телефона: Motorola Z3
Прошивка: Verizon Android 9.0

Рейтинг: 90



На Atrix HD это делается немного по-другому, хотя смысл тот же.
Раз уж речь зашла, приведу тут и этот мануал:
  1. В build.prop строку "persist.fuse_sdcard=true" меняем на "persist.fuse_sdcard=false"
  2. Открываем vold.fstab, находим строку "dev_mount sdcard /storage/sdcard1 auto /devices/platform/msm_sdcc.3/mmc_host", меняем sdcard1 на sdcard0
  3. Добавляем строку "dev_mount external /storage/sdcard1 auto /data/media"
  4. Этим мы смонтировали внешнюю карту, как внутреннюю память. Чтобы оставшуюся внутреннюю память смонтировать, как флешку, в SManager вводим "mount -o bind /data/media /mnt/external1;"
В результате разделы поменяны местами. Но мне этот способ не особо понравился, т.к. я периодически достаю флеху из телефона и всовываю другую. Не хотелось бы при этом терять весь раздел /data/ при этом, да и не уверен, можно ли вообще доставать флешку после данных скриптов. Тем не менее, если кто-то доставать карту из телефона не планирует - этот метод сгодится.
PS. Названия разделов из официальной прошивки 4.1.1, на неофициальных - вполне могут называться по-другому.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
[Atrix HD] - переносим кэш игр на SD-карту, А также Razr Hd, Razr M и другие (много букв) · Motorola на Android OS · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25.4.2024, 20:53

Форум живёт: