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

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

Разберем частный случай и начнем по порядку. Для создания кастомной прошивки андроид потребуются:

  1. Персональный или переносной компьютер, на борту которой присутствует операционная система Ubuntu и установлена Java.
  2. «Кухня» — приложение для обработки образов системных партиций.
  3. Собственно сама, подлежащая обработке прошивка Android.

Шаг 1 — установка Ubuntu

Система Ubuntu создана на базе ядра Linux и основывается на Debian, разработана компанией Canonical. Эту систему вовсе не обязательно устанавливать вместо действующей, запускать ее через эмулятор, и так далее.

Чтобы комфортно использовать все ее преимущества, достаточно воспользоваться приложением Wubi, способным установить Ubuntu под Windows. Wubi — сокраoение от Windows Ubuntu Installer.

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

Шаг 2 — установка Java

Java – разработанный в 1995 году язык программирования, его название, по всей видимости, взято из кинофильмов (смешной народец Джава из Звездных Войн).

На этой технологии базируется большая часть современного программного обеспечения самых разных видов. Некоторые сайты работают только при наличии Java на борту ПК.


Чтобы установить ее нужно:

  1. Войти в систему Ubuntu, и открыть Терминал при помощи клавиш Ctrl+Alt+T.
  2. В открывшемся окне для ввода/вывода информации в ОС Ubuntu воспользоваться командой sudo add-apt-repository “deb http://archive.canonical.com/ubuntu lucid partner” — позволяет подключить новый репозиторий, с которого можно загрузить Java. Для этого потребуется ввести пароль для получения прав Суперадминистратора, который задается при установке Ubuntu. Далее нужно воспользоваться следующими командами:
  3. sudo apt-get update для обновления списка источников.
  4. sudo apt-get install sun-java6-jre sun java6-plugin sun-java6-fonts для установки Java.

Шаг 3 — работа с «кухней» для создания прошивки

Программа «кухни» — это основное средство для работы с прошивками андроид. Их существует несколько видов, мы рассмотрим работу с kitchen от Dsixda.


  • Скачав необходимые файлы, нужно распаковать их в домашнюю папку в каталог kitchen.
  • Запустить Терминал, при помощи команды Is вывести на его экран список документов домашней папки. Синим цветом будут выделены каталоги, красным — файлы архивов, и так далее.
  • Открыть в папку Kitchen, перенести в каталог original_update файл обрабатываемой прошивки в любом формате.
  • Возвратиться в Терминал с открытой папкой Kitchen, ввести команду Is. Среди файлов появится Menu, его следует запустить командой./menu. Здесь откроется список пронумерованных команд, которые можно выполнять, вводя их номер в строку, и нажимая Enter.
  • Чтобы разобрать прошивку, следует ввести команду 1. Кухня после этого начнет выводить множество вопросов, на которые нужно отвечать клавишей Enter (нужные значения введены по умолчанию).

Эти действия приведут в начальное меню программы. Вернувшись в папку Kitchen, можно будет найти папку «WORKING_x_y», где x и y – дата и время ее создания.

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

Изменив набор базовых приложений, функций, настроек, и внеся все желаемые поправки в файлы прошивки, необходимо ее собрать.

Для этого нужно вернуться в Терминал, ввести команду 99, снова ответить клавишей Enter на все возникающие вопросы. После этого программа выбросит пользователя в начальное меню, а в папке OUTPUT_ZIP будет лежать файл новой прошивки, которую затем можно устанавливать на мобильное устройство.

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

Вот еще несколько программ, предназначенных для этого:

  • Android SDK – среда разработки, созданная специально для работы с приложениями для Android, она позволяет проверять программный код.
  • Android Kitchen – необходима для обработки образов системных партиций в прошивке.
  • JD-GUI – декомпилятор, способный к работе с программным языком Java. Его аналог – DJ Java Decompiler.
  • smali – для работы с dalvik-кодом. Предназначена для дизассемблирования кода, backsmali позволяет произвести ассемблирование dalvik-кода.
  • dex2jar – утилита, позволяющая конвертировать исполняемые файлы, составленные на dalvik-коде.

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

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

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

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

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

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

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

Посредством этой консоли можно выполнить практически полную настройку или перенастройку нашей железки. Например, чтобы загрузить читый Linux, нам как минимум необходимо будет перенастроить строку параметров передаваемых ядру при загрузке (при умолчальной настройке на загрузку android). Так же там можно полностью работать и с разделами нанда - стирать, разбивать, изменять, защищать от записи и наоборот и т.д. и т.п. (дабы избежать дополнительных вопросов об изменении разделов нанда). Еще в консоли можно загружать и выполнять некоторый софт. Все настройки, выполненные в этой консоли, могут быть сохранены и использоваться как настройки по умолчанию при загрузке устройства.

Сделаем небольшое отступление. Кроме NOR-flash для размещения загрузчика, в ряде случаев, может быть использован NAND-flash или даже SD-card. Кроме того, возможно использование комбинаций этих типов флеш памяти в устройстве. Например загрузчик может быть размещен в NOR, а в качестве внутреннего накопителя (для размещения OS) NAND или SD и т.п.

Итак, мы включили железку. Она загрузила загрузчик. Загрузчик проинициализировал оборудование. По окончанию этой инициализации загрузчик выполняет следующую процедуру:

1 - считывание и размещение в оперативной памяти образа ядра и рамдиска - оба по строго определенным адресам (может быть настроено в командной строке u-boot).

2 - запуск ядра с правильной точки входа, с указанием ему, где брать внешний рамдиск (initrd) с корневой файловой системой и что использовать в качестве init.

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

Дальнейшая загрузка мало отличается от загрузки Linux на обычном компьютере. Загрузившись, ядро выполняет указанный ему init (это просто еще одна программа). Настройка init осуществляется в файле init.rc, который расположен в рамдиске. В нем производится настройка переменных среды, монтирование дисковых устройств, запуск необходимых служб и т.д и т.п. По окончанию выполнения инструкций предзапуска из init.rc запускается собственно сам андроид. Вид запуска андроида обусловен параметром запуска ядра androidboot. Стандартный запуск андроид выполняется в целом посредством передачи параметров использования нужного рамдиска (в ramdisk.img) и параметра androidboot.normal. Для запуска режима восстановления, как правило, используется другой рамдиск, содержащий программу recovery (в recovery.img) и параметр ядра androidboot.recovery.

Как вариация ядра Linux для андроида могут быть собраны не с поддержкой initrd (корневая система на рамдиске), а с т.н. initramfs. В этом случае вся корневая файловая система будет расположена просто внутри ядра. В этом случае для режима восстановления нужно, как правило, второе ядро с корневой файловой системой содержащей программу recovery. И настройка загрузчика просто на загрузку и выполнение recovery ядра.

И как итог, простая схема:

Запуск процессора -> запуск загрузчика -> инициализация железа -> считывание из нанда ядра и рамдиска -> запуск ядра с использованием этого рамдиска -> выполнение программы init -> запуск собственно android.

Подробно о u-boot и его командах можно прочитать например на этом вики _http://www.denx.de/wiki/view/DULG/Manual.

Если вам мало этой информации, то подробнее про параметры запуска ядра Linux можно прочитать в Documentation/kernel-parameters.txt из архива его исходных кодов. Или найти этот файл в интернете для нужной вам версии ядра. Но не забывайте учитывать упомянутую выше специфику Android.

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

Введение

Существует три способа создания собственной прошивки для Android-коммуникатора: 1. Допиливание и компиляция операционной системы из исходников, публикуемых компанией Google или командой CyanogenMod. 2. Модификация стоковой прошивки коммуникатора. 3. Модификация сторонней прошивки, созданной с помощью первого или второго способа.

Первый способ является наиболее правильным и гибким, однако он зачастую требует достаточно глубоких знаний об особенностях Android и умения редактировать исходники системы так, чтобы они после этого работали на устройстве. Эта тема выходит за рамки нашей статьи, поэтому сборку исходников Android мы рассматривать не будем, а остановимся на двух других способах, точнее на третьем.

Сторонние прошивки (так называемые моды) существуют практически для любого Android-устройства, с момента выхода которого на рынок прошла хотя бы неделя. Обычно они уже включают в себя все необходимые модификации, необходимые для корректной работы прошивки на коммуникаторе, а потому представляют собой отличную площадку для экспериментов над системой. Их можно модифицировать практически до неузнаваемости, включать в состав ОС любое ПО, изменять ее внешний облик, создавать множество низкоуровневых настроек с помощью простого текстового редактора и файлового менеджера. Эти действия не требуют глубоких знаний ОС и могут быть выполнены любым читателем журнала.

Выбираем подопытного

Итак, предположим, что наш коммуникатор уже зарутован и в загрузочную область записана консоль восстановления ClockworkMod, позволяющая устанавливать на аппарат любые прошивки без всяких ограничений (о том, как это сделать, мы писали в статье «Тотальное подчинение», опубликованной в октябрьском номере ][). Теперь мы хотим установить на устройство другую прошивку, да не абы какую, а с собственными модификациями, настройками и набором ПО. Поэтому нам нужен каркас, а именно чужая прошивка, стабильно работающая на нашем устройстве. Где ее взять?

Главное место обитания всех ромоделов - это, конечно же, форумы xda-developers.com. Там можно найти все что угодно для коммуникаторов, работающих под управлением iOS, Windows Mobile, Windows Phone и Android. Открываем сайт в браузере, жмем на раздел Forums и ищем в списках форумов свой коммуникатор. Далее заходим в соответствующий раздел Android Development и внимательно просматриваем список тем, содержащих в названии слово «». Лучше найти какую-нибудь чистую прошивку с названием вроде «Pure Android 2.3 Rom» или порт CyanogenMod, хотя, в сущности, подойдет и любая другая (правда, возможно, придется отменять авторские изменения). Открываем тему, проматываем первый пост, находим где-то в конце ссылку на скачивание и загружаем ROM на свой комп.

Теперь файл прошивки нужно вскрыть. Делается это с помощью самого обычного unzip:

$ mkdir ~/rom; cd ~/rom $ unzip ../путь/до/прошивки.zip

Общая структура каталогов и важные файлы

Набор файлов и каталогов, образовавшийся в результате выполнения предыдущей команды, и есть, в сущности, операционная система Android, причем ровно в том виде, в каком она будет размещена в NAND-памяти устройства. В зависимости от версии Android и фантазии автора, она может содержать разные наборы каталогов и файлов, однако в ней всегда присутствуют три обязательных объекта: META-INF, файл boot.img и директория system.

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

Файл boot.img содержит загрузочный образ, который включает в себя ядро Linux и образ initrd. Его можно распаковать, однако для нас он не несет особой пользы, так как почти любые системные параметры можно изменить с помощью файлов настроек и файловой системы /proc. Если же тебе требуется ядро, собранное с особыми параметрами, например с активированным планировщиком BFS или поддержкой NFS, то почти наверняка его можно найти на том же xda-developers и прошить с помощью ClockworkMod.



Наконец, каталог system - это то, ради чего все и затевалось. Содержимое этого каталога и представляет собой операционную систему Android без ядра Linux. Он содержит все, что нужно для работы ОС, а потому знать его структуру просто необходимо. Выглядит она так:

  • app - предустановленные приложения: телефон, калькулятор, календарь и т. д.
  • bin -аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы. Например, именно здесь лежит виртуальная машина dalvikvm.
  • etc - файлы настроек. Полный аналог /etc в Linux, используемый, однако, только системными компонентами. Приложения Android хранят настройки в каталоге /data/data.
  • fonts - шрифты. По умолчанию содержит только фирменные шрифты Droid (или Roboto в Android 4.0).
  • framework - наборы Java-классов, используемые системой и Android-софтом. Тут же лежит файл framework-res.apk, содержащий полное описание интерфейса операционной системы, включая все графические файлы.
  • lib - Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включает такие стандартные библиотеки, как libc (правда, Android использует собственную Bionic вместо Glibc), libz (gzip-шифрование), libssl и другие.
  • media - медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и файлы анимации загрузки ОС.
  • tts - файлы, необходимые для работы синтезатора речи.
  • usr - необязательный каталог, который обычно содержит файлы, необходимые для работы софтин из каталога bin. По сути, аналог /usr/share.
  • vendor - файлы, поставляемые производителем аппарата. Обычно содержит бинарную firmware для различных «железных» компонентов, например модуля Wi-Fi.
  • xbin - необязательный каталог, который содержит все, что не вошло в bin. Как правило, используется для хранения полезных утилит, тем не менее необязательных для работы системы (top, текстовый редактор). CyanogenMod использует его для хранения инструментов администрирования: bash, ssh, powertop, busybox и т. д.
  • build.prop - файл, содержащий информацию о сборке, а также различные низкоуровневые настройки.

Kоманда setprop

Приведенные в статье настройки build.prop можно применить и в уже работающей системе с помощью команды setprop:

# setprop debug.sf.nobootanimation 1

Собственный набор ПО

Каталог /system/app содержит все предустановленное в прошивку ПО. Удаляя и добавляя пакеты в этот каталог, мы можем изменить набор приложений, доступных «из коробки». Например, ни для кого не секрет, что стандартный ланчер Android (да и ADWLauncher в CyanogenMod) тормозит и имеет многочисленные недостатки. ОK, заменим его на LauncherPro :

$ rm system/app/Launcher.apk $ wget goo.gl/U9c54 -o system/app/LauncherPro.apk

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

Полезно поместить в прошивку одно из приложений для поиска утерянного смартфона (например, prey), тогда даже в случае сброса до заводских настроек оно останется в ОС и будет работать. Также можно заменить некоторое системное ПО, например добавить Dialer One вместо стандартного Phone.apk или Go SMS вместо sms.apk.

Как насчет системных Linux-приложений, например ssh-сервера или mc? Здесь тоже все просто. Собрать софтину для Android и процессора ARM можно с помощью комплекта NDK от Google, но большинство нужных приложений уже собрано до нас. Например, мы хотим предустановить mc в свою прошивку. Идем на xda-developers и выполняем поиск по запросу Midnight Commander. На первой же странице находим apk-пакет с установщиком и распаковываем его с помощью все того же unzip:

$ cd /tmp; unzip ~/NativnuxInstaller_1.1.apk

Видим в списке распакованных файлов assets/kits/mc-4.7.5.4-arm.tar.jet. Это архив tar.gz, который распаковывается в корень системы после установки apk-пакета (а точнее, после установки apk, запуска приложения и нажатия кнопки Install). Мы можем сразу распаковать его в нашу прошивку и получить предустановленный mc:

$ cd ~/rom $ tar -xzf /tmp/assets/kits/mc-4.7.5.4-arm.tar.jet

Теперь для запуска файлового менеджера на устройстве достаточно открыть терминал и набрать mc. Другие приложения могут распространяться в zip-архивах для прошивки с помощью ClockworkMod Recovery. Поместить их в свой мод еще проще, для этого достаточно перейти в корень прошивки (в данном случае ~/rom) и распаковать архив с помощью unzip.



Внешний облик

Собственную прошивку чаще всего создают для того, чтобы изменить внешний облик Android по своему вкусу. Проделать эту операцию в Android, опять же, очень просто. Все настройки графического интерфейса Android хранятся в файле framework/framework-res.apk. Его можно распаковать с помощью утилиты apktool:

$ cd ~; wget goo.gl/hxz5l $ tar -xjf apktool1.4.1.tar.bz2 $ cd ~/rom/system/framework $ java -jar ~/apktool.jar d framework-res.apk

В результате в текущем каталоге должен появиться каталог framework-res, содержащий все файлы пакета. Наиболее интересные подкаталоги внутри него - это res/drawable-* и res/layout-*. Первый содержит все графические элементы в виде png-файлов для разных разрешений и положений экрана. Например, drawable-land-mdpi - это каталог с графическими ресурсами для экранов среднего разрешения, находящихся в горизонтальном положении (во время поворота экрана ОС переключается на использование других файлов). Разумеется, любой файл можно отредактировать или заменить другим.



Каталоги layout содержат описания графических элементов в формате XML (на самом деле они хранятся в бинарном формате AXML, но apktool преобразовал их в обычный XML). Формат описания достаточно прост и понятен, но с наскоку с ним разобраться трудно, особенно если не знать, где что находится. Поэтому мы снова обратимся к услугам обитателей форума xda-developers, которые уже успели придумать массу различных модификаций для графического интерфейса Android. Их легко найти с помощью поискового запроса «framework-res mod имя_устройства».

Обычно такие моды распространяются в виде готового файла framework-res.apk, который можно просто положить в свою прошивку. Если же ты хочешь найти конкретные отличия в содержимом, то мод можно распаковать и сравнить с твоим framework-res с помощью diff:

$ diff -R ~/framework-res \ ~/rom/system/framework/framework-res

К сожалению, в рамках одной статьи мы не можем рассмотреть хотя бы часть внутреннего устройства framework-res, поэтому за более подробной информацией обращайся к соответствующей теме форума 4PDA .

После внесения модификаций можно собрать framework-res.apk с помощью все того же apktool. Однако для этой операции требуется утилита aapt из комплекта Android SDK, которую apktool использует для окончательной упаковки apk-файла. Ее можно получить и отдельно:

$ cd ~/bin; wget goo.gl/tC7k8

Теперь можно собрать файл:

$ cd ~/rom/system/framework $ java -jar ~/apktool.jar b framework-res $ cp framwork-res/dist/framework-res.apk . $ rm -rf framework-res

Следующий этап - это изменение анимации загрузки. Она хранится в виде обычных png-файлов, упакованных в архив system/media/bootanimation.zip. Распакуем его:

$ cd /tmp $ mkdir bootanimation; cd bootanimation $ unzip ~/rom/system/media/bootanimation.zip

Внутри находится файл desc.txt, описывающий анимацию в следующем формате:

Ширина Высота FPS p Порядок Пауза Каталог...

Стандартный вид этого файла:

480 800 30 p 1 0 part0 p 0 0 part1

Это значит, что изображение имеет размер 480 x 800, а скорость смены изображений (FPS) составляет 30 штук/с. Далее идет описание первой части анимации, файлы которой находятся в каталоге part0. Она проигрывается один раз (цифра 1 после p). Следующая часть (part1) проигрывается бесконечное число раз, пока аппарат не загрузится. Обычно каталог part0 содержит изображения, соответствующие первой части анимации, а part0 - все остальные изображения, которые проигрываются в цикле. Сами изображения должны быть одинакового размера, а их названия должны содержать числа в возрастающем порядке, например 0001.png, 0002.png и т. д.

Так как анимация загрузки имеет очень простой формат, ее довольно легко сделать. Достаточно преобразовать видеоролик в png-изображения с помощью mencoder (в desc.txt необходимо выставить значение FPS 24):

$ mplayer -nosound -vo png:z=9 video.avi

Но и это будет лишним. Участники форума xda-developers наделали столько анимаций, что необходимость работы руками отпадает вовсе. Ссылки на интересные анимации приведены в конце статьи.

Низкоуровневые настройки

Последнее, о чем я хотел бы рассказать в статье, - это редактирование низкоуровневых настроек. В Android для этого есть файл system/build.prop, который хранит информацию о сборке прошивки и настройки для конкретных устройств. Добавив в этот файл те или иные строки, можно изменить функционирование Android, ускорить его работу или уменьшить расход батареи. Ниже приведены наиболее интересные настройки.



  1. Запрет выгрузки рабочего стола из памяти: ro.HOME_APP_ADJ=1

    Опция позволяет сделать работу с устройством более удобной за счет мгновенного доступа к рабочему столу в любое время. Не рекомендуется использовать для устройств с малым объемом памяти.

  2. Повышение качества сохраняемых JPG-файлов: ro.media.enc.jpeg.quality=100

    Позволяет сделать снимки камеры более четкими, но существенно повышает нагрузку на ЦП.

  3. Отключение анимации загрузки для ускорения загрузки операционной системы: debug.sf.nobootanimation=1
  4. Возложение части работы по отрисовке интерфейса на GPU: debug.sf.hw=1

    Позволяет сделать интерфейс более быстрым и плавным.

  5. Блокировка извещения об активном режиме отладки (при подключении к компу с помощью USB): persist.adb.notify=0
  6. Устранение проблемы с возникновением черного экрана после завершения звонка: ro.lge.proximity.delay=25 mot.proximity.delay=25
  7. Включение подсветки клавиш управления сразу после включения экрана: ro.mot.buttonlight.timeout=0

Помимо всего этого, многие пользователи также рекомендуют применять следующие комбинации флагов:

  1. Уменьшение времени отклика сенсорного экрана: debug.performance.tuning=1 video.accelerate.hw=1 windowsmgr.max_events_per_sec=150
  2. Увеличение времени жизни батареи: wifi.supplicant_scan_interval=180 pm.sleep_mode=1 ro.ril.disable.power.collapse=0
  3. Твики 3G-модуля: ro.ril.hsxpa=2 ro.ril.gprsclass=10 ro.ril.hep=1 ro.ril.enable.dtm=1 ro.ril.hsdpa.category=10 ro.ril.enable.a53=1 ro.ril.enable.3g.prefix=1 ro.ril.htcmaskw1.bitmask=4294967295 ro.ril.htcmaskw1=14449 ro.ril.hsupa.category=5
  4. Улучшение производительности сети: net.tcp.buffersize.default=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.wifi=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.umts=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.gprs=4096,87380,256960,4096,16384,256960 net.tcp.buffersize.edge=4096,87380,256960,4096,16384,256960

Все эти строки необходимо просто поместить в файл system/build.prop и сохранить.

Сборка

ОК, мы внесли необходимые изменения, внедрили свои приложения, твикнули систему и теперь должны создать готовый к прошивке образ ОС. В этом нам поможет утилита testsign. Сначала следует запаковать прошивку с помощью zip:

$ cd ~/rom; zip -r my-rom.zip *

Теперь необходимо подписать архив, чтобы Recovery смог его установить:

$ wget goo.gl/OyBBk $ java -classpath testsign.jar testsign \ my-rom.zip my-rom-signed.zip

После этого закидываем архив my-rom-signed.zip на карту памяти устройства и выключаем аппарат. Чтобы попасть в Recovery, включаем аппарат с зажатой клавишей уменьшения громкости (для некоторых устройств процедура может отличаться).

Теперь переходим в пункт «Install zip from sdcard», а затем в «Choose zip from sdcard», находим my-rom-sign.zip на SD-карте и выбираем Yes. После завершения установки выбираем «Reboot system now».

Выводы

Android - гибкая платформа, и в этой статье описаны далеко не все возможности по ее модификации. Более глубокая модификация может включать в себя замещение ядра, изменение экрана блокировки и стандартных приложений, активацию таких возможностей, как автоматическая установка приложений на карту памяти, внедрение механизма загрузочных скриптов (/etc/init.d), и многое другое. Обо всем этом мы поговорим в следующих статьях.

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

На данный вопрос ищут ответы и те владельцы, у которых мобильное устройство заразилось различными вирусами. Конечно, производственная прошивка лучше тем, что она проверена и точно будет работать. Но если она устарела или не устраивает по каким-либо причинам, хочется все же ее обновить. Как же правильно и самостоятельно сделать прошивку, не нарушив в дальнейшем работу устройства? Можно ли создать прошивки для тех, кому недостаточно стандартного набора?

Инструкция по обновлению прошивки

Мобильных агрегатов, функционирующих на основе программного обеспечения Андроид, существует огромное количество, а версий различных прошивок для них — еще больше. Есть официальные предложения, а имеются те, что были собраны владельцами и почитателями того или иного гаджета. Пошаговая инструкция универсальной прошивки Android:

  1. Мобильное устройство в первую очередь необходимо зарядить на 100% и подключить к WI-FI. Полный заряд позволит осуществить полноценно, без прерывания и повторов, прошивку Android.
  2. Заходите в папку «Настройки», после чего выбираете поле «Информация об устройстве». Иногда в меню название может быть другим, к примеру, «О системе».
  3. Активируйте соответствующее действие «Автоматическое обновление системы», чтобы в дальнейшем при появлении обновленных версий новая прошивка устанавливалась на ваш гаджет.
  4. Обновление можно перепроверить вручную. Проблем с поисками такой функции в настройках не должно возникнуть.
  5. После обнаружения устройством обновления поступит предложение установки. Для ее выполнения нет необходимости подключаться к компьютеру, достаточно будет использовать WI-FI.
  6. Мобильный агрегат после установки следует перезагрузить, после чего в вашем распоряжении будет уже новая версия прошивки.

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

Создание собственной прошивки

Рассмотрим, как создать прошивку на Андроид, которая будет соответствовать вашим личным требованиям. Этот способ отлично подойдет для неопытных, но старательных и вдохновленных пользователей. Чтобы получить желаемые изменения, не потребуется углубленных познаний в программировании, ведь иногда вполне достаточно внести несколько дополнительных функций или преобразить внешний вид. В этом поможет специальный сайт 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.

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

Надоела стандартная официальная прошивка и хочешь удивить друзей чем-то необычным на твоем смартфоне? Или, возможно, тебе, как пользователю, не совсем нравится результат использования кастомных версий? Узнай, как сделать прошивку на Андроид самому и настроить ее под себя.

Подготовка компьютера

Сначала желательно удостовериться в том, что система компьютера настроена должным образом. Оптимальные требования к ней такие:

  • ОС Linux (в идеале должна быть UBUNTU);
  • для Андроид 2.3 и выше нужна 64-разрядная система;
  • минимальный объем свободного пространства – 10 Гб, а в идеале – 15 Гб (это нужно для хранения исходников и дальнейших изменений с ними).

Если эти требования выполнены, нужно заняться установкой пакетов (на примере Cyanogenmod 9):

  1. Проходим авторизацию в UBUNTU.
  2. Запускаем терминал.
  3. Устанавливаем язык программирования Java.
  4. В терминале устанавливаем пакеты.
  5. На компьютере создаем папки: mkdir -p ~/bin (прописать точно также) и mkdir -p ~/android/*** (вместо *** можно прописать любое название латиницей).
  6. Устанавливаем сервер-хранилище, куда будем загружать исходники.
  7. Перегружаем ПК.

Установка пакетов

Сервер-хранилище

После того, как компьютер перезагрузится, можно загружать исходники:

  1. Сначала переходим в папку, которая была создана ранее для их хранения: cd ~/android/***/.
  2. Загружаем исходники.

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

Сборка

Рассмотрим ситуацию, в которой cyanogenmod-м поддерживается устройством на официальном уровне. В этом случае действия следующие:

  1. Хотя прошивка и представляет собой полный «нуль» в самом начале, некоторые библиотеки не выйдет прошить, т.к. разработчиками не были поставлены исходники. Потому для копирования проприетарных файлов (являющихся чьей-то собственностью) нужно подключить гаджет к компьютеру при помощи кабеля и в терминале прописать команду cd ~/android/system/device/марка/модель/ ./extract-files.sh.
  2. Теперь следует загрузить RomManager (данное программное обеспечение загружается собранным), для чего надо прописать ~/android/system/vendor/cm/get-prebuilts.
  3. После этого остается только сам процесс: . build/envsetup.sh && brunch модель.


В том случае, когда cyanogenmod-м не поддерживается на официальном уровне, первым действием нужно будет создать «дерево файлов», после чего выполнить вышеуказанные действия.

Изменение уже готового файла

Выбор основы

Чтобы создать собственную прошивку из уже готовой, нужно сначала ее найти. Для этого необходимо найти в сети файл, в названии которого будет указано, что прошивка чистая (например, «Pure Android 3.0 ROM»). Она может быть любой, но в таком случае появится необходимость отменять изменения, совершенные автором.

После того, как файл скачан, его нужно распаковать.

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

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

Установка ПО

Добавление нужной утилиты

Открытие архива с системным приложением

Чтобы изменить уже имеющийся набор программ, нужно зайти в /system/app. И теперь в ней можно делать следующее:

  • просто удалить папку с ненужной программой;
  • вставить нужный софт;
  • установить системные приложения Linux, например, Midnight Commander, которые нужно будет сначала распаковать.

Визуализация

Но самая частая причина, по которой пользователю хочется создать собственную прошивку, это желание изменить внешний вид оболочки. Настройки графики хранятся в одном файле framework/framework-res.apk. Его нужно распаковать, после чего появится одноименная папка, в которой понадобятся 2 подпапки:

  • ro.media.enc.jpeg.quality=100 – при этом качество загружаемых изображений в формате.jpeg будет повышено;
  • debug.sf.nobootanimation=1 – при загрузке устройства будет отключена анимация;
  • ro.mot.buttonlight.timeout=0 – после включения экрана сразу будут подсвечиваться кнопки управления.

Эти и многие другие строки размещаются в system/build.prop.

Процесс сборки

После всех манипуляций манипуляции с будущей прошивкой, ее нужно превратить обратно в архив, для чего прописываем $ cd ~/rom; zip -r my-rom.zip *.

Распаковка архива с прошивкой

Подписывание полученного архива

Следующим шагом будет указание названия архиву. Затем нужно переместить на флэшку, а само устройство отключить, что необходимо для входа в Recovery и заливки новой прошивки.

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

Android Kitchen

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

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



В продолжение темы:
Windows

Часть вторая : "Важнейшие характеристики каждого семейства процессоров Intel Core i3/i5/i7. Какие из этих чипов представляют особый интерес" Введение Сначала мы приведём...

Новые статьи
/
Популярные