HTC Desire: прошивка моей мечты

“Ребята, прошивка здоровенная!! Здоровеннная!”

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, что символично :)