"Ребята, прошивка здоровенная!! Здоровеннная!"
UPD: самая здоровенная прошивка моей мечты тут
Полтора года мой HTC Desire радовал буквально всем, кроме батарейки(что свойственно всем андроидам) и объёмом внутренней памяти.
Сначала я терпел, стараясь выбирать только самые нужные мне программы, чистил кеш приложений по утрам, а субботними вечерами удалял приложения, которыми не часто пользуюсь. Время шло, потребности в количестве установленных приложений стали увеличиваться(во многом из за андроид-разработки), а уже установленные приложения даже не думали худеть, напротив - разбухали с каждым апдейтом. К слову, максимально откладывал приходящие обновления.
Хватит это терпеть! (ц)
Последней каплей стала необходимость снести приложение для создания mindmap. Потом снести twitter & beyondpod, ага.
Решением проблемы могло стать использование кастомной прошивки, которая имеет app2sd++ feature. Это такая feature когда все приложения ставятся не на внутренний flash телефона, а на карту памяти. Как потом я узнал это не есть хорошо.
Терминология
Чтоб читателю было понятнее предмет разговора - нужно ввести терминологию и основные понятия.
В приложении есть 4 сущности
- apk - место, откуда достаются ресурсы
- dalvik-cache - скомпилированный байткод виртуальной машины dalvik
- lib - как поняно из названия папка с нативными либами (NDK)
- shared_prefs, databases и cache- настройки, данные и кеш приложения созданные уже после запуска приложения.
Все, кроме apk лежит в папке /data/data/some.package.name/, а apk в /data/app/some.package.name-N.apk.
По сути это и есть android application filesystem layout (незачем переводить)
Как хранятся файлы приложений?
До Android 2.1 все выглядило как я написал выше, однако, в версии 2.2 была добавленна возможность переносить apk на sd карту в монтируемый зашифрованный раздел в виде файла.
Но этого оказалось мало - не все приложения умели так "переезжать", а некоторые вдобавок теряли функциональность (не могли быть запущенны при старте системы, не могли иметь при себе виджет)
И что делать?
Многие кастомные прошивки имеют такую фишку, как app2sd++ - смысл в том, чтоб создать второй раздел ext4 на sd карте, монтировать её на место /data (где должен быть internal flash).
Отличное решение - таким образом пространство для приложений ограничивается только размером второго раздела sd карты.
В частности по совету настоящего Гика Кости я поставил ruHD - это прошивка с htc последним sense, с фунционалом app2sd++. Правда очень понравилась, но версия 3.0 тормозила и постоянно перезагружалась. ruHD 2.x - терпимо, но чтоб телефон не зависал и не перезагружался им лучше было не пользоваться.
Почему так столько глюков и мало батарейки?
Во многом из за моей карты памяти - class 2. У неё очнь ограниченная пропускная способность, время доступа к памяти, как следствие ОСь просто не ожидает что простая операция чтения скажем dalvik-cache файла займёт время раз в десять больше. Увеличивается CPU wait time (линуксоиды поймут) из за ожидания IO. Кстати это всё можно помониторить - adb shell top
С батарейкой отдельная тема. Для Андроидов нигогда не будет много батарейки. До прошивки у меня телефон при следнем использовании в лучшем случае жил день. С ruHD - часа 4-5 :) Затраты на протокол sd, на поддержку во включеном состоянии карты памяти - все это заметно сказывается на батарейке.
Здоровенная прошивка!
Я задался себе целью на1ти прошивку, которая не будет форсировать монтирование раздела /data на дополнительный раздел карты памяти (как это делал ruHD). Или как минимум, чтоб это можно было отключить (по сути это обычный скрипт в /etc/init.d).
Перечитал тысячи отзывов пацанов и "профи" на 4pda - понял что там адеквата в лучшем случае 10%. Почитал xda-developers, к своему удивлению обнаружил, что адеквата там не на много больше. То ли русские набежали с 4pda, то ли распределение фейковых гиков примерно не зависит от места проживания(всем же хочется показать что имеешь мнение). В итоге среди всего этого треша выделил несколько прошивок, которые и попробовал. Не буду утомлять - выбрал InsertCoin. Минимум изменений (судя по всему) по сравнению со стоковой htc sense 3.0. Очень порадовало, что по умолчанию прошивка помещает apk на второй раздел sd-карты, а остальные файлы оставляет на internal flash. По сути это уже встроенный app2sd.
Дальше ставится замечательная тузла link2sd - и ручками выбираются приложения, dalvik-cache который нужно слинковать на второй раздел флешки. Да, это обычный symlink.
Именно это решение мне больше всего подходит, потому что:
- я пишу под андроид - мне некогда ждать пока приложение слинкуется на карту памяти (это не большое, но время)
- я ставлю много разных приложений на котороткое время (минуты-десятки минут) - опять же для разработки нужно
- постоянный набор софта как ни странно постоянен :) я знаю чем я пользуюсь и не ищу замену - поставил и забыл. Это небольшое количество приложений можно самостоятельно слинковать
- я сам выбираю (в зависимости от частоты использования) какие приложения должны жить на внутренней памяти, а какие во внешней. Отсюда я могу управлять временем работы батарейки и загрузкой процессора.
После двух недель юзания InsertCoin могу сказать что это отличный компромис для меня - да, иногда может зависнуть и перезагружаться по кругу. Так, я проспал на Android Dev Camp, что символично :)