2013-10-28

Использование SD-карты для хранения файлов Google Play Music

Недавно для России официально открыл свои двери сервис Google Play Music. Поимев в него доступ чуть раньше официального открытия, я сразу столкнулся с проблемой на своем планшете от Samsung. Проблема простая - гугл музыка умеет кэшировать треки на устройстве, но делает это исключительно во внутренней памяти. То есть те люди, которые купили девайс с небольшим объемом памяти, понадеявшись на SD в 64 Гб, оказались в пролете. И, как оказалось, решить данную проблему в пару кликов оказалось не то чтобы невозможно, но не так очевидно, как я думал.

Немного шагов, оказавшихся напрасными

Первой моей мыслью было использовать Titanium Backup, который умеет переносить приложения на SD. Не вышло - оказывается мой планшет отформатировал SD в FAT32, а для работы функции переноса приложения титаниуму нужен ext2/3/4. Планшет же наотрез отказался понимать эту файловую систему на ЭСДЭшке, уверяя что она не отформатирована.

Дальше я полез гуглить и выгуглил замечательное по-своему приложение Link2SD, которое учло проблему файловой системы. Работает оно следующим образом: нужно взять свою SD и разбить на 2 части - первую оставить в FAT32, чтобы ее видел планшет, а вторую отформатировать в один из ext'ов. Этот раздел не будет виден в файловых менеджерах (по крайней мере ни один из моих этот раздел не увидел), но сама прога сможет его куда-то смонтировать и перенести туда приложения. Однако - и тут меня постигло разочарование - переносится только сам apk-файл и дальвик-кэш, но не то, что называется Data. Эпик фейл.

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

Саксес стори

И тут я наконец выгуглил правильное решение, которое на самом деле выгуглил едва ли не первым, но отложил на потом. И вот это "потом" настало.
Суть решения сводится к тому, чтобы вручную создать линк (symlink, если быть совсем уж точным) на директорию с кэшем. То есть сделать то, что пытаются делать все приложения, но не осиливают в силу негибкости своей настройки.

Итак, нам понадобится рутованая прошивка (что какбе очевидно) и прога Root Explorer, или любая другая, умеющая делать линки и обращаться к системному разделу андроида. Кэш гугломузыки находится по адресу:
/data/data/com.google.android.music/files/

Соответственно,

  1. Заходим на нашу SD-карту, создаем там папку, например, GoogleMusic
  2. Недолго тычем в нее и выбираем "Ссылка на эту папку", при этом появится кнопка "Создать ссылку" - ее пока нажимать не надо.
  3. Переходим в папку /data/data/com.google.android.music/
  4. Нажимаем "Создать ссылку" 
  5. Убеждаемся что создалась папка (а вернее ссылка) с названием GoogleMusic
  6. Удаляем папку files
  7. Переименовываем GoogleMusic в files
Вуаля! Теперь все файлы будут писаться в /data/data/com.google.android.music/files/, а на деле попадать на SD-карту в нашу папку GoogleMusic, что и требовалось. Еще не пробовал, но полагаю что тем же способом можно перенести файлы сервисов Google Play Videos и Google Play Books