Меню

Создание прошивки android – Как в прошивку добавить свои приложения. Как загружается система на ARM на примере android

Содержание

Разработка и модификация прошивки для Android телефонов на примере HTC Hero GSM. Часть 1

Причины по которым люди ставят модифицированные версии прошивок различны. Кому-то хочется удивить друга смешной анимацией загрузки, кому-то не хватает определенного функционала (например vpn), кто-то хочет выжать максимум производительности из своего телефона за счет разгона процессора, а кто-то пять месяцев ждет новую версию операционной системы Android для своего любимого HTC Hero.
На данный момент уже существует превеликое множество самых невообразимых сборок для самых различных телефонов на базе Android. Иногда они даже появляются в той или иной форме на Хабре.
Я же хочу Вам рассказать о процессе и особенностях создания кастомной прошивки на основе официальной. Данные знания были получены в процессе разработки одной из не многих отечественных прошивок на базе Android 2.1 для HTC Hero GSM. И более или менее успешно опробованы на себе и других подвернувшихся пользователях одного крупного российского форума.
Не смотря на то, что все нижеследующее было сделано для HTC Hero, данные правила и особенности имеют полную силу для всех телефонов, особенно тех, которые разработаны компанией HTC и используют фирменную оболочку Sense.
Для экспериментов нам понадобится:
  • Android SDK желательно последней версии
  • Утилита apktool для реинжениринга системных приложений
  • Утилиты smali/baksmali для де-оптимизации системных приложений
  • Утилита unyaffs для извлечения системных файлов из образа
  • Скрипт split_bootimg.pl для извлечения ядра и ramdisk-а
  • Утилита testsign для подписывания пакета обновления и отдельных приложений
  • установленное и настроенное JRE
  • телефон с операционной системой Android
  • права суперпользователя и модифицированная подпрограмма восстановления (recovery rom)

Все вышеперечисленное доступно в версиях как для системы Linux так и для Windows. Но в своих примерах я буду ориентироваться на использование Linux.
Конечно же ни root-права ни recovery нам не нужен для того, чтобы начать разработку, однако если мы захотим опробовать наше творение, они нам понадобятся. Для HTC Hero можно использовать RA-hero-v1.6.2.
Наверное, самое время напомнить, что использование неофициальных прошивок лишает нас гарантии, но где наша не пропадала. И несмотря на то, что большинство операций безопасно — всегда нужно четко понимать что и зачем делается, дабы не причинить необратимый вред своему андроиду

Основа

Существует несколько различных подходов к разработке прошивки.


Несмотря на то, что платформа Android вроде как и является открытой, но в реальных телефонах используются закрытые компоненты. Это и драйверы распространяющиеся в бинарном виде (wifi/gps/fm), и ключевые компоненты системы, такие как Маркет и другие сервисы Google. Также сюда нужно добавить разработки компаний в области интерфейса, такие как HTC Sense, Motoblur, TouchWiz от Sumsung. Это создает местами непреодолимые трудности по разработке прошивки из исходных кодов.
Я предлагаю остановиться на модификации готовых прошивок, предоставляемых вендорами телефонов.
Прошивки для телефонов HTC существуют в двух видах:
  • RUU. Rom Update Utility (Утилита обновления прошивки). Утилита для ОС Windows производящая обновление телефона
  • OTA. Over the Air (Обновление по «воздуху»). Пакет, скачиваемый самим телефоном через wifi/gprs сети, который устанавливается на телефон без какого-либо участия компьютера

Последнее время OTA-обновления состоят из бинарных diff-ов, что несколько осложняет использование оных в качестве основы. Так как это требует наличия конкретного телефона с определенной версией прошивки, что может быть просто невыполнимым, если мы хотим адаптировать прошивку от одного телефона для другого. Либо предполагает долгую и мучительную подтасовку идентификатора телефона с последующим скачиванием обновления без его установки. Причем, возможно, эту процедуру придется повторить несколько раз.
Будем использовать RUU обновление.

Извлечение rom.zip

1. Скачиваем подходящую версию RUU для интересующего нас телефона. Найти которую можно либо на сайте HTC, либо в других источниках. Для HTC Hero воспользуемся, вышедшей в начале июня версией Android 2.1 для оператора Chunghwa (Тайвань)
2. RUU утилита при обновлении телефона прошивает сразу несколько областей:

  • загрузчик boot (hboot)
  • ядро linux + ramdisk (boot)
  • прошивка для радио-модуля (radio)
  • подпрограмма восстановления (recovery)
  • системный раздел (/system)
  • пользовательский раздел (/data)

Однако мы не можем позволить RUU-утилите перезаписать наш любовно установленный загрузчик и recovery. Дабы иметь и далее возможность устанавливать не только официальные прошивки. Для этого нам необходимо извлечь радио/boot/system/data.
В сущности RUU является InstallShield-овским инсталлятором, который несет в себе необходимые нам образы в rom.zip.
Запускаем его и попадаем в заглавный приветственный экран. Не заходя дальше, открываем системную папку %TEMP%, в которой мы видим 2 новые папки, в одной из которых мы найдем файл rom.zip. Копируем в уединенное место и закрываем RUU отменой установки.

Распаковка образов

Распаковав полученный архив и удалив не интересные для нас образы, мы увидим:

  1. $ ls -1 rom
  2. boot.img
  3. Radio_Signed_HERO_63.18.55.06O_6.35.15.01.img
  4. system.img
  5. userdata.img
Телефон несет в себе 512Мб NAND Flash, которые разбиты на следующие логические блоки 
  1. $ adb shell cat /proc/mtd
  2. dev:    size   erasesize  name
  3. mtd0: 00040000 00020000 "misc"
  4. mtd1: 00500000 00020000 "recovery"
  5. mtd2: 00280000 00020000 "boot"
  6. mtd3: 0aa00000 00020000 "system"
  7. mtd4: 08200000 00020000 "cache"
  8. mtd5: 0a5c0000 00020000 "userdata"
Как мы видим, данные области памяти непосредственно связаны с полученными нами образами. RUU производит запись образов as-is, но мы хотим ведь изменить наполнение системы, поэтому нам необходимо распаковать их.
В качестве файловой системы для NAND в android используется yaffs2
  1. $ adb shell mount | grep yaffs
  2. /dev/block/mtdblock3 on /system type yaffs2 (ro)
  3. /dev/block/mtdblock5 on /data type yaffs2 (rw,nosuid,nodev)
  4. /dev/block/mtdblock4 on /cache type yaffs2 (rw,nosuid,nodev)
Распакуем system и data (/cache остается пустым)
  1. $
    mkdir
    system && cd system && unyaffs ../../../rom/system.img
  2. $ mkdir ../data && cd ../data && unyaffs ../../../rom/userdata.img
В результате мы получили полноценное корневое дерево, пригодное для прошивки в телефон, которое содержит системные библиотеки, framework, системные приложения, файлы конфигурации и пр.

Стоит учитывать, что в распакованном архиве содержатся символические ссылки, которые будут утеряны на файловых системах не поддерживающих оные (fat/ntfs). Которые мы можем восстановить через скрипт обновления, о чем будет рассказано в другой статье.

Ядро

Также нам понадобиться boot-раздел, который по сути является linux ядром (для выбранной прошивки это 2.6.29 armv6l) с ramdisk-ом и имеет следующий формат:

** +-----------------+
** | boot header     | 1 page
** +-----------------+
** | kernel          | n pages
** +-----------------+
** | ramdisk         | m pages
** +-----------------+
** | second stage    | o pages
** +-----------------+
**
** n = (kernel_size + page_size - 1) / page_size
** m = (ramdisk_size + page_size - 1) / page_size
** o = (second_size + page_size - 1) / page_size

Если мы захотим заменить ядро, либо модифицировать скрипты инициализации, нам необходимо их извлечь из boot-образа. Для этого нам понадобиться замечательный perl-скрипт split_bootimg.pl за авторством William Enck.
  1. $ split_bootimg.pl ../rom/boot.img
  2. $ ls
  3. boot.img-kernel boot.img-ramdisk.gz  data  system

С самим ядром мы ничего не можем сделать, кроме как заменить его другим, а рамдиск можно распаковать для последующего изменения и настройки:
  1. $ mkdir ramdisk && cd ramdisk &&
    gzip
    -dc ../boot.img-ramdisk.gz | cpio -i
  2. $ ls
  3. data  default.prop  dev  init  init.goldfish.rc  init.hero.rc  init.rc  logo.rle  proc  sbin  sys  system
В данной статье мы не хотим ничего делать ни с ядром ни с ramdisk-ом, а потому запакуем все обратно (либо вернемся на шаг назад и вообще не будем трогать boot)
  1. find . | cpio --quiet -o -H newc | gzip > ../new-ramdisk.gz
  2. $ cd .. && mkbootimg --kernel boot.img-kernel --ramdisk new-ramdisk.gz --cmdline "no_console_suspend=1 console=null" -o newboot --base 0x19200000
Для других телефонов настроки базового смещения могут отличаться. Коммандлайн мы получаем из split_bootimg при распаковке.

Скрипт обновления

Для обновления будем использовать update-скрипт, который пишется на специальном скриптовом языке edify

, о синтаксисе которого можно прочитать в исходниках android. Скрипт /META-INF/com/google/android/update-script может быть таким:
  1. show_progress 0.1 0
  2. format CACHE:
  3. format SYSTEM:
  4. copy_dir PACKAGE:system SYSTEM:
  5.  
  6. set_perm_recursive 0 0 0755 0644 SYSTEM:
  7. set_perm_recursive 0 2000 0755 0755 SYSTEM:bin
  8. set_perm 0 3003 02755 SYSTEM:bin/netcfg
  9. set_perm 0 3004 02755 SYSTEM:bin/ping
  10. set_perm_recursive 1002 1002 0755 0440 SYSTEM:etc/bluez
  11. set_perm 0 0 0755 SYSTEM:etc/bluez
  12. set_perm 1002 1002 0440 SYSTEM:etc/dbus.conf
  13. set_perm 1014 2000 0550 SYSTEM:etc/dhcpcd/dhcpcd-run-hooks
  14. set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh
  15. set_perm_recursive 0 0 0755 0555 SYSTEM:etc/ppp
  16. set_perm 0 0 04755 SYSTEM:etc/ppp/ip-up-vpn
  17. show_progress 0.1 10
  18.  
  19. show_progress 0.2 0
  20. copy_dir PACKAGE:data DATA:
  21. show_progress 0.2 10
  22.  
  23. show_progress 0.3 0
  24. format BOOT:
  25. write_raw_image PACKAGE:boot.img BOOT:
  26. show_progress 0.3 10
Пока этот скрипт очень примитивен и единственное что он делает — подготавливает соответствующие разделы.

Подпись пакета обновления

Для того, чтобы мы смогли прошить нашу прошивку, нам необходимо подписать пакет обновления. Этот процесс аналогичен процессу подписывания jar-пакетов. К пакету добавляется ваш (либо тестовый) сертификат и сохраняются контрольные суммы для файлов внутри него.

  1. $ zip -r habrarom.zip .
  2. $ java -classpath ../../bin/testsign.jar testsign habrarom.zip habrarom-signed.zip

Прошивка радио модуля

Это самая простая часть в плане создания пакета обновления, но и самая опасная в плане последствий при неудачном обновлении.
Пакет обновления создается абсолютно идентично предыдущему, только содержать он будет бинарный блоб с радио, который мы извлекли из RUU и скрипт для его записи в соответствующий раздел памяти.
Простенький скрипт:

  1. show_progress 0.1 0
  2. write_radio_image PACKAGE:Radio_Signed_HERO_63.18.55.06O_6.35.15.01.img
  3. show_progress 0.1 10
Не многое, что будет включено в данный пакет обновления.
  1. $ ls -1
  2. META-INF
  3. Radio_Signed_HERO_63.18.55.06O_6.35.15.01.img

Всё это упаковывается и подписывается как делалось ранее.

Прошивка

Не смотря на то, что в полученную прошивку мы не добавили пока никакого нового функционала, мы бы хотили попробовать прошить и загрузиться в нее.
Для этого 

  1. Копируем в корень карты наш пакет обновления
  2. Загружаемся в recovery
  3. Делаем nanroid backup
  4. Делаем wipe
  5. Прошиваем
  6. Перегружаемся

Радуемся тому, что наш больной пережил сложную операцию.

В данный обзор не вошли следующие важные вопросы, которые затрагивают уже непосредственно модификацию подготовленной базовой прошивки. Вопросы с которыми сталкивается любой создатель кастомов, и столкнулся непосредственно я при создании русской версии прошивки 2.1 для HTC Hero GSM

  • Добавление root, busybox
  • Де-оптимизация (deodexing) пакетов. Использование smali/baksmali. Разрешение odex-зависимостей
  • удаленная odex-оптимизация приложений
  • Модификация системных пакетов. Подпись пакетов: когда нужна, и когда можно пренебречь. Упаковка приложений. Обновление ресурсов приложений без пересборки
  • Локализация системы, как пример масштабной модификации системы.
  • Декомпиляция и сборка ресурсов/байткода системных приложений. Исправление ошибок системных приложений
  • zip-align, png оптимизация
  • Подписывание приложений и проблема круговой поруки при использовании shared uid
  • Использование скриптов инициализации на примере переноса данных из одного раздела в другой (dalvik-cache2cache, app2sd)

А тем временем ждем с нетерпением, когда за обновлением FOTA клиента последует обновление самой системы до версии 2.1-update1.

В предыдущих и будущих сериях

  1. Часть 1. Создание прошивки в формате update.zip на основе RUU. Распаковка/запаковка boot. Скрипт обновления. Подпись пакета обновления и приложений.
  2. Часть 2. Добавление busybox. Добавление root. Монтирование на запись. Скрипт инициализации. Редактирование ramdisk.

Как в прошивку добавить свои приложения. Как загружается система на ARM на примере android

Практически у каждого пользователя android смартфона появлялось желание создать или отредактировать прошивку под свои нужды и желания. В данной статье мы и рассмотрим принцип редактирования прошивки для CWM (в zip формате).

Подготовка:

В первую очередь необходимо определиться какую прошивку будем брать за основу. Лучше использовать офф. прошивку в зипе. Почти для каждого распространённого девайса существует чистая прошивка + root.
Когда прошивка выбрана её необходимо скачать в любое удобное вам место на ПК (распаковывать не стоит).
Также нам потребуется архиватор, советую использовать 7zip и лучший в своём роде текстовый редактор Notepad++ .

Структура прошивки:

Открывая архив с прошивкой вы видите следующее:
META-INF — в папке хранятся скрипты установки прошивки.
system — папка со всеми файлами прошивки (приложения, твики, скрипты и т.д.).
boot.img — ядро системы.

Практически все манипуляции проводятся в папке system , её структура:
app — системные приложения.
bin — ресурсы самой системы.
etc — Скрипты, твики, конфиги, профили и настройки системы.
fonts — Системные шрифты.
framework — здесь хранятся главные файлы системы (графика, настройки текста анимации и т.д).
lib — библиотеки системы.
media — файлы мультимедиа (мелодии уведомлений, анимация загрузки, обои и т.д).
usr — настройки не изменяемые в дальнейшем системой (работают в режиме «только чтение»).
xbin — опять же системные конфиги и прочие твики.
build.prop — инфа о системе, настройки локали и производительности системы.

Приложения:

Перед тем как добавлять/удалять софт в систему, необходимо проверить деодексирована ли ваша прошивка (то есть проверить наличие файлов.odex в папке app. Если файлы есть, то необходимо от них избавиться вот по этой инструкции .
Добавляем софт в прошивку:
Прежде всего необходимо установить себе в смарт те программы которые вы хотите добавить в сборку. После установки достаём их из системы при помощи Root Exporer и его аналогов, находятся они по пути data/app , так же нам понадобятся их либы (если они конечно есть) они находятся по пути data/data . Находятся они в одноимённой приложению папке и имеют расширение .so . Затем изъятые .apk файлы кладем в архив по пути system/app и файлы с расширением .so (lib»ы) по пути system/lib .
Удаляем софт из прошивки:
Тут всё просто, заходим в папку app — определяемся что нам не нужно и удаляем весь ненужный софт (систему лучше не трогать).

Язык и версия прошивки:

Копируем файл build.prop на рабочий стол. Открываем его блокнотом и находим строчки:

ro.product.locale.language=en
ro.product.locale.region=US

для русского языка необходимо сделать так:

ro.product.locale.language=ru
ro.product.locale.region=RU

название своего мода вписываем в строку

в том же build.prop

Графика:

Вся графическая часть прошивки хранится в двух файлах framework-res.apk путь к файлу systemframework и SystemUI.apk по пути systemapp . А графическая часть приложения настройки хранится естественно в приложении Settings.apk .

Скрипты и твики (ускорение и оптимизация системы):

Большая часть настроек проводится в файле build.prop , по этому поводу можно прочитать . Так же если ваше ядро поддерживает

Начнем с простого упоминания, о том, что чип выполненный по архитектуре ARM — это система на чипе (SoC). То есть это полный компьютер, реализован- ный на одной микросхеме. На процессорах данной архитектуры изготавли- вается множество устройств (рутеры, свичи, встроенные компьютеры в телевизорах, игровые портативные консоли и т.д. и т.п.).

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

Точная адресация устройств не является целью этой обзорной статьи. Я просто хочу познакомить потенциальных мододелов с основными принципами, которые дадут более полное понимание что же делается на их устройстве.

Итак, перейдем непосредственно к описанию загрузки данного типа устройств. Практически каждый ARM процессор имеет встроенную на чип flash-память, в которую помещается т.н. загрузчик. В случае отсутствия на чипе такой памяти, или неиспользования ее в качестве пространства для размещения загрузчика, чип обычно обращается для запуска этого загрузчика к NOR-flash по строго определенному адресу.

Самих загрузчиков существует несколько. Ряд из них — коммерческие. Но есть и загрузчик с открытым исходным кодом — u-boot. К сожалению, при открытости кода он содержит процессоро-зависимый код, поэтому без спецификаций процессора не может быть просто портирован (адаптирован) на процессор, который не имеет открытой документации.

Теперь опишем, что же обычно делает загрузчик после его запуска. Довольно прямая аналогия может быть проведена с BIOS компьютеров на базе процессоров х86 (те с основной массой персоналок). Загрузчик ARM при запуске точно так же выполняет рад низкоуровневых инициализаций аппаратной части устройства (оперативная память, хранилища данных, сетевой адаптер и т.д. и т.п.). После инициализации последовательного порта (обычно в формате RS232, но с уровнями 3.2 вольт) появляется возможность работы с ним через консоль инициализированной на этом порту.

Выглядит это так

Посредством этой консоли можно выполн

Android Kitchen — готовим прошивку самостоятельно

Бывало ли с вами так, что поставил свежую новую кастомную прошивку. И вроде бы со всех сторон она просто идеальна. Шустрая, с последней версией системы, красивая до ужаса. Но вдруг товарищ хвастается, что тоже вчера обновился, и ты понимаешь, что чужая штука красивее, быстрее, вкуснее, желаннее. Что делать?

Ответ прост — можно взять и перекроить свою прошивку так, как это необходимо. Заменить в ней различные элементы, добавить какие-то свои анимации или прочие вещи. К примеру, хотите ли анимацию ожидания, индикатор заряда или прогресс-бар, как на скриншоте, да с возможностью изменить цвета и формы под себя? Тогда под катом я расскажу, как это можно сделать.

Для изменений своей прошивки первым делом нужно перейти на сайт кухни http://uot.dakra.lt/kitchen/. Там-то и будет проходить весь процесс. На самом деле с нуля прошивку собрать не получится. За основу придётся уже взять чьё-то творение, а вот приправить его собственными специями — запросто.

Перешли по ссылке, а дальше всё просто. Выбираем, что нам хочется поменять: индикатор батареи, системные иконки и смайлики, статус-бар, внешний вид попапов, анимацию ожидания, glow-эффект при прокрутке списков, диалог изменения громкости, разделители в списках, прогресс-бар, локскрин, анимацию перехода между окнами, шрифты, бутанимацию и т.д.

Причём, выбирая какие-то опции на кухне, есть возможность создавать real-time превью изменений, чтобы видеть, что получится на выходе.

После выбора необходимых вам изменений нужно отправиться на закладку file upload. Там из настроек не стоит менять ничего без крайней необходимости. Только лишь в разделе «Select your rom from kitchen’s list, or upload your own files» выберите опцию «Kitchen’s list». Появится выпадающий список, в котором нужно будет указать используемую прошивку. Если вы укажите не свою, то есть большая вероятность, что сгенерированный патч не применится или ещё хуже — придётся делать перепрошивку, потому что система не сможет загрузиться.

После всех этих манипуляций переходим на вкладку «Summary», проверяем список изменений, которые запланировали и давим кнопку «Submit Work to kitchen».

Далее отправляемся на страницу http://uot.dakra.lt/pickup/, где ждём своей очереди. Как только она наступит — сайт отдаст вам .zip-архив со свежеприготовленным патчем для прошивки, который необходимо прошить через рекавери.

Внимание, перед прошивкой не забудьте сделать бекап системы!

Удачных кастомизаций!

Если вам интересны новости мира ИТ также сильно, как нам, подписывайтесь на наш Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, вам удобнее «Вконтакте» или Twitter? Мы есть также в Яндекс.Дзене и даже Facebook.

Читайте нас где удобно
Ещё на эту тему было

Android, мод прошивка своими руками


android-bas


Практически у каждого пользователя android смартфона появлялось желание создать или отредактировать прошивку под свои нужды и желания. В данной статье мы и рассмотрим принцип редактирования прошивки для CWM (в zip формате).

Подготовка:

В первую очередь необходимо определиться какую прошивку будем брать за основу. Лучше использовать офф. прошивку в зипе. Почти для каждого распространённого девайса существует чистая прошивка + root.
Когда прошивка выбрана её необходимо скачать в любое удобное вам место на ПК (распаковывать не стоит).
Также нам потребуется архиватор, советую использовать 7zip и лучший в своём роде текстовый редактор Notepad++.

Структура прошивки:

Открывая архив с прошивкой вы видите следующее:
META-INF — в папке хранятся скрипты установки прошивки.
system — папка со всеми файлами прошивки (приложения, твики, скрипты и т.д.).
boot.img — ядро системы.

Практически все манипуляции проводятся в папке system, её структура:
app — системные приложения.
bin — ресурсы самой системы.
etc — Скрипты, твики, конфиги, профили и настройки системы.
fonts — Системные шрифты.
framework — здесь хранятся главные файлы системы (графика, настройки текста анимации и т.д).
lib — библиотеки системы.
media — файлы мультимедиа (мелодии уведомлений, анимация загрузки, обои и т.д).
usr — настройки не изменяемые в дальнейшем системой (работают в режиме «только чтение»).
xbin — опять же системные конфиги и прочие твики.
build.prop — инфа о системе, настройки локали и производительности системы.

Приложения:

Перед тем как добавлять/удалять софт в систему, необходимо проверить деодексирована ли ваша прошивка (то есть проверить наличие файлов .odex в папке app. Если файлы есть, то необходимо от них избавиться вот по этой инструкции .
Добавляем софт в прошивку:
Прежде всего необходимо установить себе в смарт те программы которые вы хотите добавить в сборку. После установки достаём их из системы при помощи Root Exporer и его аналогов, находятся они по пути data/app, так же нам понадобятся их либы (если они конечно есть) они находятся по пути data/data. Находятся они в одноимённой приложению папке и имеют расширение .so . Затем изъятые .apk файлы кладем в архив по пути system/app и файлы с расширением .so (lib’ы) по пути system/lib.
Удаляем софт из прошивки:
Тут всё просто, заходим в папку app — определяемся что нам не нужно и удаляем весь ненужный софт (систему лучше не трогать).

Язык и версия прошивки:

Копируем файл build.prop на рабочий стол. Открываем его блокнотом и находим строчки:

ro.product.locale.language=en
ro.product.locale.region=US

для русского языка необходимо сделать так:

ro.product.locale.language=ru
ro.product.locale.region=RU

название своего мода вписываем в строку

ro.modversion=

в том же build.prop

Графика:

Вся графическая часть прошивки хранится в двух файлах framework-res.apk путь к файлу systemframework и SystemUI.apk по пути systemapp. А графическая часть приложения настройки хранится естественно в приложении Settings.apk.

Скрипты и твики (ускорение и оптимизация системы):

Большая часть настроек проводится в файле build.prop, по этому поводу можно прочитать здесь. Так же если ваше ядро поддерживает init.d есть ряд скриптов для оптимизации системы, один из них описан в этой статье (оптимизация оперативной памяти) и в данной статье Скрипты-твики для init.d

Замена шрифтов системы:

Как выше излагалось все шрифты содержаться в папке fonts, основные шрифты это: DroidSans.ttf и DroidSans-Bold.ttf их можно заменить любыми шрифтами переименовав их аналогично вышеуказанным и переместить с заменой в архив с прошивкой в папку fonts.

Ядро:

Теоретически достаточно заменить boot.img своим, но в некоторых случаях Ядра сопровождаются дополнительными скриптами. По этому советую ничего не делать если есть какие либо сомнения.



 

Как самостоятельно создать прошивку

Одной из самых популярных, если не сказать популярнейшей операционной системой для мобильных устройств, будь то смартфоны, планшеты или другие девайсы, несомненно, является Android. Мобильных гаджетов работающего на основе данного программного обеспечения существует великое множество, и еще больше – версий прошивок, как официальных от производителя, так и неофициальных, собранных любителями или поклонниками того или иного устройства. Но бывает, случается так, что та или иная прошивка не устраивает. Причины могут быть самыми разными, от быстродействия до интерфейса, и много других мелких нюансов. Что же делать в таком случае? Создать прошивку самостоятельно!

Прошивку собственного устройства можно перекроить как угодно по желанию, изменить многие элементы, анимации, иконки, настройки быстродействия и энергосбережения и так далее. Простор для фантазии неоспоримо велик, и невозможно предугадать, что покажется идеальным выбором для того или иного человека. Ведь все стремятся настроить всё именно под себя.

 Создать Андроид прошивку

Мы разберем способ создания собственной прошивки, который отлично подходит для не самых опытных пользователей, но которые заряжены энтузиазмом по полной программе. Не всегда нужно вдаваться в низкоуровневое программирование, чтобы достичь желаемых изменений, очень часто нужные функции или внешний вид можно изменить намного проще. Достаточно посетить специализированный сайт Android Kitchen. На этой «кухне» и будет происходить процесс «варки» новой версии программного обеспечения. Единственная оговорка – за основу новой прошивки придется взять уже существующую версию, созданную кем-то другим, но вот приправить её всяческими улучшениями, изменениями и прочими «специями» особого труда не составит.

После посещения Android Kitchen можно выбрать, что нужно поменять – индикатор батареи, системные иконки, строку состояния, различные анимации, диалоговое окно изменения громкости, разделители и полосу прогресса, экран блокировки, шрифты. Выбирая те или иные функции на «кухне», можно сразу же, в реальном времени провести предварительный просмотр сделанных изменений, чтобы оценить их. После того, как все нужные изменения были произведены, переходим на вкладку File Upload. Здесь доступны некоторые настройки, однако по умолчанию они подобраны оптимально – не меняйте их, если не уверены, что вы делаете. В разделе «Select your ROM from Kitchen`s list or upload your own files», выбираем опцию «Kitchen`s list». Из выпадающего списка выбираем используемую прошивку. Будьте внимательны – если указать не ту версию программного обеспечения, высока вероятность ошибки, после которой в лучшем случае патч не применится вообще, а в худшем – система перестанет загружаться и придется полностью перепрошивать устройство.

После проделанных манипуляций переходим на вкладку «Summary», еще раз проверяем список внесенных изменений и нажимаем кнопку «Submit Work to Kitchen». Теперь осталось дождаться своей очереди – ресурс достаточно популярный, и много кто пользуется его услугами по внесению изменений в операционную систему. Как только очередь дойдет до вас, то сайт предоставит вам ссылку на готовый .zip-архив с приготовленным вами на «кухне» патчем для вашей прошивки. Теперь данный патч следует прошить через Recovery.

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

Оцените статью: Поделитесь с друзьями!

Мануал по работе с dsixda в Android Kitchen

Многие более опытные пользователи Android-девайсов желают создавать свои собственные прошивки для своих мобильных устройств, однако создание кастомной прошивки полностью с нуля это зачастую весьма трудоёмкий процесс, который требует немало терпения и времени. Тогда на помощь приходят различные программы, вроде Android Kitchen.

Android Kitchen – не совсем полноценный инструмент для работы с прошивками. Неполноценный он в том плане, что для создания кастома используется уже существующая база, то есть другой ROM. В данном руководстве мы поможем вам разобраться с основными функциями данной весьма полезной утилиты. Android Kitchen поддерживает большинство доступных на рынке мобильных устройств, в том числе от таких мировых брендов, как HTC, Samsung, Motorola, LG, Huawei, ZTE и других. Напомним, что любые действия с программным обеспечением вашего Android-гаджета вы проделываете на свой собственный страх и риск, а также перед любой модификацией или изменением прошивки настоятельно рекомендуем создавать резервные копии.

Android Kitchen требуется среда Linux для корректной работы, потому в первую очередь «кухня» ориентирована на работу в семействе операционных систем Linux. Разберемся с установкой Android Kitchen на примере Ubuntu (популярного дистрибутива Linux). Для начала, устанавливаем «Центр приложений Ubuntu». В последний версиях дистрибутивов Ubuntu он уже встроен заранее, но на случай если у вас более старая версия – в терминале вводим следующую команду:

sudo apt-get install software-center

(sudo apt-get install ia32-libs – команда, необходимая для 64-битных операционных систем). Запускаем установленный центр приложений вручную или через терминал командой «software-center», в поисковом окне вводим «Java», среди результатов выбираем «OpenJDK Java 6 Runtime» и устанавливаем его.

Но если на вашем компьютере установлена операционная система Windows – не беда, можно запустить Android Kitchen через виртуальную машину. Разберем такой вариант сначала на примере Cygwin (это UNIX-среда для систем Windows). Сначала устанавливаем Java JDK для Windows (32-битную версию, и, что более важно – нельзя устанавливать сам Cygwin (совместимая с «кухней» версия находится по ссылке — перед установкой JDK). Далее скачиваем и распаковываем сам Cygwin, следуем инструкциям в текстовом файле «Установка.txt». Второй способ заключается в использовании Virtual Box. Устанавливаем в виртуальную машину Linux, и оттуда уже запускаем сам Android Kitchen. Не забываем при этом расшарить директории между операционной системой Windows и Linux на виртуальной машине.

Также возможна работа «кухни» из-под Mac OS X, однако стопроцентная работоспособность данного метода не гарантируется. Итак, создаем .dmg-образ диска «кухни». Устанавливаем Java JDK, GNU версии sed (Mac OS X в sed не совместим с Android Kitchen), компилятор GCC (если он уже не установлен по умолчанию) – для проверки можно ввести «GCC», он входит в программный пакет XcodeTools установочного DVD-диска. После всего этого устанавливаем wget.

Перед самим запуском, папку из архива с «кухней» распаковываем в директорию C:/cygwin/home/username/, если используется Cygwin или в file-system/home/username/, если используется Linux, при этом username нужно заменить на имя пользователя. Переименовываем распакованную папку в kitchen.

Для запуска нужно либо пользоваться Cygwin, либо ввести команды в терминал:

cd kitchen

./menu

Если в процессе установки изменили путь, то, соответственно, будет отличаться первая команда – то есть переход в директорию с «кухней». Также, для корректной работы имя пользователя должно состоять только из латинских букв, и вообще – это золотое правило всегда и везде.

Для того, чтобы импортировать нужный ROM прошивки в Android Kitchen, копируем его в папку «original_update folder». «Кухня» умеет работать с такими форматами прошивок: .zip-файлы, system.img, boot.img и подобные, и .exe-файлы прошивки. ROM, соответственно, берем из стоковой или кастомной прошивки в зависимости от того, какую хотим использовать базу для своей создаваемой версии.

После импорта ROM`а, можно приступить к работе с ней. Запускаем её, как говорилось немного выше, и, если всё было сделано правильно, появится меню:

======================================

Android Kitchen — by dsixda (xda-developers.com)

======================================

1. Set up working folder from ROM

2. Add root permissions

3. Add BusyBox

4. Disable boot screen sounds

5. Add wireless tethering

6. Zipalign all *.apk files to optimize RAM usage

7. Change wipe status of ROM

8. Change name of ROM

9. Check update-script for errors

10. Show working folder information

 

0. Advanced Options

99. Build ROM from working folder

 

00. About/Update kitchen

0. Exit

 

Зайдя в пункт 0 («Advanced Options») видно следующие пункты:

11 — Deodex files in your ROM

12 — Add task killer tweak for speed (stock ROM only)

13 — Add /data/app functionality

14 — Add Nano text editor + sysro/sysrw

15 — Add Bash (command shell)

16 — Add Apps2SD

17 — Add /etc/init.d scripts support (busybox run-parts)

18 — Add custom boot animation functionality

19 — Porting tools (experimental)

20 — Tools for boot image (unpack/re-pack/etc.)

21 — Unpack data.img

22 — Sign APK or ZIP file(s)

23 — Convert update-script or updater-script

24 — Miscellaneous optins / Plugin scripts

0 — Back to main menu

Для простоты использования данной утилиты мы приведем полный перевод всех пунктов:

1 – создание рабочей папки из ROM`а прошивки.

2 – добавить Root-доступ в прошивку.

3 – добавить в прошивку BusyBox.

4 – отключить звуки на загрузочном экране.

5 – включить функцию работы устройства как Wi-Fi-точки доступа.

6 – Zipalign все файлы .apk, то есть сжать (для экономии оперативной памяти).

7 – сменить статус wipe ROM’а.

8 – сменить имя ROM`а.

9 – проверить update-script на наличие ошибок.

10 – показать информацию о рабочей папке.

0 – дополнительные опции.

99 – собрать ROM прошивки из рабочей папки.

00 – о программе/обновить «кухню».

0 – выход.

11 – выполнить деодексирование (deodex) системы.

12 – добавить улучшение работы Task Killer’а для повышения производительности (актуально только для стандартных стоковых версий прошивок).

13 – добавить функционал папке «/data/app».

14 – добавить текстовый редактор Nano text editor + sysro/sysrw

15 – добавить в прошивку Bash (командную строку).

16 – добавить в прошивку Apps2SD (перенос приложений на карту памяти).

17 – добавить в ROM поддержку скриптов «/etc/init.d» (для работоспособности необходим установленный busybox).

18 – добавить кастомную анимацию загрузки.

19 – инструменты для портирования (эксперементальный пункт).

20 – инструменты для загрузочного образа (распаковка/перепаковка/и т.п.).

21 – распаковка образа data.img.

22 – подписать .apk или .zip файл (файлы).

23 – конвертировать update-script или updater-script.

24 – разнообразные опции (запуск плагинов или скриптов).

0 – возврат в главное меню.

Примерная последовательность действий для работы с Android Kitchen:

Импортируем ROM прошивки.

Запускаем Android Kitchen.

Создаем из ROM`a рабочую папку.

Добавляем в прошивку Root-доступ и Busybox.

Выполняем деодексирование.

Модифицируем, добавляем и удаляем всё по желанию.

Собираем ROM в рабочей папке.

После выполнения сборки готовый к прошивке .zip-файл будет помещен в директорию OUTPUT_ZIP.

Теперь несколько слов о замене ядра (Kernel) в создаваемой прошивке. Во-первых, сразу оговоримся, что Kernel – это файл в образе boot.img, но boot.img – это не само ядро, помимо Kernel’а тут содержатся файлы для инициализации во время загрузки. Итак, чтобы заменить ядро, можно пойти несколькими путями. Если нужное ядро закрыто в .img-файле, то переименовываем его в boot.img, заменяем текущим boot.img, который находится в «кухне» и заменяем модули, если они есть.

Если же нужно скопировать Kernel из одного образа boot.img в другой, то в «Advanced options» выбираем «unpack boot.img» из папки «any folder» (то есть, любой). Новый boot.img копируем в эту папку, извлекаем сам Kernel (zImage). Выбираем опцию «unpack a boot.img from your working folder». Будет создана папку BOOT-EXTRACTED. Копируем zImage из нового boot.img в данную папку (BOOT-EXTRACTED). Выбираем опцию «Re-pack the boot.img». Теперь boot.img, который находится в рабочей папке, имеет новое ядро. Не забываем перенести модульные файлы, если они также входят в «упаковку».

Если новое ядро само по себе, а не находится внутри boot.img (то есть Kernel в виде zImage или boot.img), то делаем следующее. В меню «Advanced options» выбираем пункт «unpack the boot.img» из рабочей директории. Копируем файл Kernel в созданную папку BOOT-EXTRACTED, переименовываем его в zImage. Выбираем пункт в «кухне» «re-pack the boot.img». Теперь boot.img в рабочей папке имеет новый Kernel. Если ядро идет в комплекте с другими файлами, вроде .ko-файлов для папки /system, то их также нужно скопировать в соответствующую директорию.

В создаваемую прошивку можно добавить свои собственные приложения по желанию. Для этого можно скопировать их по пути рабочая директория/system/app, разумеется, с заменой. Или же, устанавливаем их в папку data. Для этого в «Advanced options» выбираем пункт «Add /data/app functionality», после чего будет создана папка «рабочая директория/data/app», куда и копируем нужные нам приложения. Отметим, что не все программы одинаково хорошо «вшиваются» в ROM, например Dr.Web просто отказывается запускаться после прошивки устройства.

Оцените статью: Поделитесь с друзьями!

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer


Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer. Хотите попробовать себя в создание, редактирование прошивок на Android, тогда программа Samsung Root Firmware Replacer поможет в создание прошивок!

Коротко о программе Samsung Root Firmware Replacer и ее возможностях

С помощью данной программы Вы сможете:

  • Распаковывать прошивки Samsung
  • Одексировать прошивку
  • В автоматическом режиме встроить Root права
  • Автоматически наполнять прошивку своими файлами
  • Заморозить проект, а потом продолжить над ним работу
  • Упаковать прошивку

Необходимые компоненты и условия работы Samsung Root Firmware Replacer

1. Скачать программу Samsung Root Firmware Replacer

2. Наличие установленной ОС UBUNTU, либо VirtualBOX c той же UBUNTU

3. Рекомендуется установить пакет nautilus-open-terminal (в терминале sudo apt-get install nautilus-open-terminal)

4. Если у вас Ubuntu x64 битная то также установить пакет sudo apt-get install ia32-libs

5. Прошивка или смартфон, планшет с которой будут происходить редактирование

6. Включенная Отладка USB

Обзор и описание функций Samsung Root Firmware Replacer старт программы

1. Перейдите в папку с программой Samsung Root Firmware Replacer, правый клик открыть в терминале

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

2. В терминале введите команду

./menu

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

3. Перед Вами откроется интерфейс программы

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

4. Если запустили программу первый раз то выполните — Конфигурация настроек

Работа в программе Samsung Root Firmware Replacer

Пункт  Распаковать прошивку *.tar.md5 — распаковывает прошивку, для этого переместите файл в папку unpack_tar_md5, после чего все файлы извлекутся, а файл factoryfs или system переместяться в input_img

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

пункт Создание *.img с вашего Android (нужен Android) — позволяет создать прошивку с вашего текущего состояния Android. Для работы данного пункта необходимо иметь Android подключенный к ПК с включенной отладкой USB.

Данный пункт имеет подменю

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

Пункт Создание *.img с оригинальной прошивки позволяет изменять готовые прошивки, для этого перенести любой IMG файл в папку input_img.

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

Данный пункт также имеет свое подменю

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

Пример использования программы Samsung Root Firmware Replacer

В данном примере идет создание прошивки с текущего состояния Android

1. Подключить Android к ПК

2. Запустить программу

3. Выбрать пункт Создание *.img с вашего Android (нужен Android)

4. Выбрать Снять образ c Android и распаковать img

5. Выбор раздела с которого будет сниматься образ

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

6. Подождите 6-7 минут пока снимется образ и  переместится на ПК.

Важно! На смартфоне или планшете,  а также ПК, должно быть достаточно памяти чтобы снять образ. Размер образа может занимать от 2МБ до 2ГБ

7. После того как сняли образ, можно его модифировать, если это нужно (встроить Root), можете его обратно упаковать, для этого

8. Выбрать пункт Упаковка  проекта в img

9. Укажите размер и название прошивки.

  • Размер раздела указывать таким образом, от размера блока поделить на 1024 и результату дописать букву M.

Редактирование прошивок Андроид с помощью Samsung Root Firmware Replacer

  • Название должно соответствовать названию, который вы использовали для изменения

11. Также не забудьте скопировать ядро с вашего Android, для этого воспользуйтесь пунктом —  Снять образ c Android — boot.img или zImage

12. После всех манипуляций необходимо собрать прошивку в TAR.MD5

13 В главном меню выбрать пункт Запаковать прошивку *.tar.md5

14 Прошивка в программе Samsung Root Firmware Replacer приготовлена, можете шиться через Odin


 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *