Pull to refresh

Русификации читалки Nook: что получилось (техническая сторона)

Reading time 3 min
Views 5.8K
image

В общем, купил я себе читалку Nook, читал-читал несколько недель, а потом мне захотелось написать что-нибудь под нее и это начинание перешло в русифицированную прошивку, сделанную вместе с хабраюзером nilov и при помощи разных людей с nookdevs.org, включая JesusFreke и poutine.



Отмазки


  • Лично я все делал под линуксом, но ничего особенного, чего нельзя (как мне кажется) сделать под виндой (а под нее были написаны первые версии скриптов) или под маком.
  • Я новичок в написании скриптов, так что был бы рад, если бы их кто-то привел в порядок или поправил бы меня.
  • И да, я не несу никакой ответственности за то, что вы сделаете со своим нуком.
  • Отчасти эта статья будет пособием для тех, кто тоже захочет присоединиться к нам

Необходимое ПО




Описание всех утилит и сборка своей прошивки


ВНИМАНИЕ: Я очень Вас прошу — не создавайте тысячи вариантов прошивок! Давайте делать это все более-централизованно!

Получение приложений прямо с устройства: утилиты download/download-all


Эти утилиты позволяют скачать приложения с вашего нука в папку downloaded, а так же полностью распаковывает их в папку extracted (она нам потребуется для получения исходных ресурсов и кода).

Первая на вход получает названия системного приложения, а вторая ничего не получает и скачивает все приложения, указанные в rus_res/index

Выглядят они очень просто — это последовательное выполнение утилит adb и apktool:
adb pull /system/app/$1.apk downloaded/$1.apk
java -jar apktool.jar d -f downloaded/$1.apk extracted/$1/


После выполнения download-all мы получаем все необходимые нам ресурсы и теперь мы можем приступить к модификации и замене ресурсов.

Модификация приложений


Тут есть некоторые сложности. Безболезненно Вы можете менять лишь ресурсы, а код не получится поменять, видимо, из-за кеша dalvik-машины или еще чего подобного.

Ресурсы

Вот в замене ресурсов нет ничего сложного — мы просто распаковываем из папки downloads во временную папку work/%appname%, заменяем там файлы и запаковываем обратно, а затем выполняем adb push (не adb install) и загружаем приложение на устройство. Данный метод очень удобен для отладки нового дизайна, отладки шрифтов и css-ок в ридерах нечто упрощенное этого метода и использовал мой знакомый с mynook.ru при подборе шрифтов и т.д. =)

Код

Тут все абсолютно так же, как и с ресурсами, но есть одно но. У нас не выйдет поставить приложение на устройство. При попытке открыть новое приложение нук просто напросто повиснет, а нормальный adb install не прокатит, т.к. мы меняем системные приложения. В чем выход? Выход в том, что бы собирать уже непосредственно прошивки с измененным кодом и их уже ставить на устройство и смотреть как работают. Да, сложно, но кардинальных изменений нам и не требуется все равно.

Скрипты для модификаций: process/process-all


Полный код process

Здесь кратко опишу что и куда он копирует и выполняет (все файлы берутся из rus_res/%appname%/)

  1. Для Home и Library распаковываем с декомпиляцией кода, для остального — только ресурсы — здесь надо править, если в других приложениях вы будете менять код
  2. strings.xm -> values/strings.xml
  3. styles.xm -> values/styles.xml
  4. strings.xm -> values/arrays.xml
  5. colors.xm -> values/colors.xml
  6. values/* -> values/*
  7. xml/* -> xml/*
  8. assets/* -> assets/*
  9. выполняет script
  10. layouts/* -> res/layout/*
  11. drawable/* -> res/drawable/*
  12. Пакует
  13. Подписывает нашим ключом


Русификация большинства текстов: папка sasha и скрипт copy-sasha


В папке sasha (так просто зовут дизайнера с mynook, кстати, огрооомное ему спасибо за это. без него не было бы у меня энтузиазма как минимум =)) лежат разрезанные xmlки с текстами, которые склеивываются и копируются в необходимые места в папке rus_res.

Загрузка на устройство: upload/upload-all


Напомню, что это только для приложений с измененными ресурсами и с оригинальным кодом.

Код тоже крайне прост:
adb push %appname%.apk /system/app/%appname%.apk

Создание прошивки: build-firmware


Тут тоже все очень несложно =) Мы будем использовать стандартную софтрутовскую прошивку и менять ее.

На IRC-канале nookdevs.com мне люди дали специальный (не сложный) скрипт для запаковки/распаковки образов и мы его так же будем использовать.

С помощью всего этого мы можем максимально упростить весь ход создания прошивки: распаковка, изменение, запаковка.

Перечислю, что мы изменяем в прошивке на данный момент:

  • Заменяем необходимые системные приложения нашими русифицированными приложениям из папки output (полученные на предыдущих шагах через скрипт process).
  • Копируем init.rc — нужно для FBReader'а
  • Копируем наши приложения — менеджер приложений и наш модифицированный wifi locker с nookdevs.com
  • Копируем FBReader и связанные с ним хаки — к примеру, sqlite3root с SUID, а так же заменяем загрузочные скрипты, которые правят права на sqlite3root, копируем нативные библиотеки фбридера.
  • Копируем русифицированные UI шрифты.
  • Копируем обои =)


Теперь у нас есть прошивка и мы можем ее запустить на нашем рутованном нуке!

PS:
там может потребоваться создание вручную некоторых папок, не помню где уже я в скриптах налажал.
Tags:
Hubs:
+43
Comments 30
Comments Comments 30

Articles