Давно мечтали собрать сами своими руками прошивку Android из исходного кода, но ни как получалось из за отсутствия внятного материала? подготовил вам подробную интересную статью!

Предисловие

И так перед тем как начать повествовать статью, немного слов для кого она написана: вы уже знаете что такое Linux и установить Ubuntu, Mint, Fedora, OpenSuSe, по крайней мере устанавливали хотя бы один раз из этих ОС, уже знаете что такое командная строка или терминал, команда cd , ls , sh знакома и не вводит в ступор. Отлично, тогда продолжаем изучать статью. Статья Только для устройств Nexus!

Задача научить подготовить систему для компилирования вашей первой Android прошивки, а не научить устанавливать Linux, изучить команды итп.

Необходимое для создания Android прошивки из исходного код

  1. Компьютер или мощный ноутбук
  2. LTS версия ОС UBUNTU 64-разрядная (12.04 или 14.04)
  3. Количество свободного места в разделе /home не менее 100 GB

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

Подготовка

1. Перейдите в параметры системы UBUNTU

2. Раздел «Программы и обновления»

3. Вкладка «Программное обеспечение UBUNTU» установить Загрузить с: Основной сервер

4. Вкладка «Другое ПО», установить галочки на Партнеры Canonical иПартнеры Canonical (исходный код)

5. Нажать внизу кнопку Закрыть и после Обновить

6. Запустить программу «Обновление приложений» и обновить систему и перезагрузить компьютер

7. Запустите терминал (горячими кнопками CTRL+ALT+T)

Для Ubuntu 16.04:

sudo apt - get install openjdk - 8 - jdk

Для Ubuntu 14.04:

Вместо android-5.0.2_r1 указывать необходимую версию Android

Загружаем исходный код на компьютер:

Данная процедура будет длится долго (не менее 3 часов) и будет загружено около 30 GB

Сборка проекта

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

source build/envsetup.sh

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

26. Запускаем сборку Android прошивки

make -j2 otapackage

Вместо j2 стоит указать количество ядер процессора и потоков, если процессор 2 ядреный и включена технология hyper threading (если она доступна), то у вас будет 4 потока (j4 ), если процессор 4 ядерный и выключена технология hyper threading, то также 4 потока (j4 ), а если включена то 8 (j8 ).

В зависимости от мощности и количества ядер участвующих в процессе сборки прошивки зависит и время сборки прошивки, от 20 минут до 24 суток.

Установка

27. После сборки вы обнаружите пакет в папке AOSP/out/target/product/кодовое_имя_nexus/ архив ZIP

28. Переместите данный архив ZIP на устройство NEXUS

31. Установите архив ZIP и после сделайте обязательно wipe

Вот и все! Ничего сложного нет! Статья подошла к концу, подписывайтесь социальные группы и оставайтесь вместе с сайтом !

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

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

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

  • ОС 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 будет обязательно:

  • meta-inf – вся информация о прошивке, в которую входят сертификаты, контрольные суммы и скрипты;
  • boot.img – образ загрузки;
  • папка system – ОС без ядра с предустановленными приложениями, файлами настроек и прочим.

Установка ПО

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

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

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

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

  • res/drawable-* — элементы графики с разрешением.png;
  • res/layout-* — элементы графики с разрешением.xml.

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

Для изменения анимации при загрузке устройства нужно сделать следующее:

  • распаковать архив с файлами этой анимации;
  • заменить имеющиеся изображения на нужные;
  • запаковать обратно.

Дополнительные настройки

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

  • 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.

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

Что нужно сделать, перед тем как перепрошить андроид

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

  1. Прежде чем начать обновление операционной системы убедитесь, что устройство полностью заряжено. Важно исключить вероятностью отключения. Можете подключить гаджет к зарядному устройству во время процедуры. Если планшет или смартфон отключится во время обновления прошивки, произойдет потеря системы и данных.
  2. Уточните версию операционной системы android, которая актуальна для вашего устройства, а также выясните, какая прошивка установлена в настоящий момент. Уточнить эту информация можно в настройках устройства в разделе «О телефоне». Обратите внимание на версию Аndroid, версию ядра и номер сборки.
  3. Теперь на основании этих данных нужно найти и скачать новую прошивку, которая будет полностью соответствовать вашей модели смартфона или планшетного компьютера.

Как прошить Андроид с помощью компьютера

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

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

  1. Samsung - Odin
  2. Lenovo - Flash Tool
  3. HTC - Fastboot
  4. LG - KDZ Updater
  5. Sony - Flashboot
  6. Nexus - Fastboot.

Прежде всего нужно скачать данное приложение. С поиском Fastboot проблем не возникнет, достаточно уметь пользоваться поисковыми системами, а это сегодня под силу каждому. Скачайте программу и распакуйте в корень диска С, чтобы путь к файлу выглядел следующим образом: C:\Android.


В папке «Tools» находятся нужные утилиты, a в директории «Driver» – драйвера. Теперь нужно подключить к компьютеру устройство, которое планируется перепрошить и выполнить установку драйвера. Как правило, девайс автоматически находит нужные драйвера, однако иногда этого не происходит. В таком случае необходимо открыть сайт производителя вашего смартфона или планшета и скачать программное обеспечение. Обратите внимание на то, чтобы прошивка, которую планируется скачать подходила для вашей модели гаджета. Прошивку нужно скачать в формате.zip и закинуть в папку Tools, которая находится здесь: C:\Android.

Перед тем, как прошить андроид необходимо разблокировать бутлоадер на своем устройстве. Процесс разблокировки bootloader будет отличаться в зависимости от конкретной модели гаджета. Откройте на компьютере меню «Пуск», в поисковой строке введите значение «cmd» и выберите программу cmd.exe.


В окне командной строки введите cd C:\Android\Tools. Подтвердите команду посредством нажатия на клавишу Enter, после чего вы окажетесь в директории «Tools».


Теперь необходимо ввести команду команду следующего вида: fastboot devices.


Если вам был выдан код устройства, то fastboot определил ваш смартфон или планшет и можно начинать перепрошивку андроид. Если в окне появилась надпись «waiting for device», нужно выключить гаджет и выполнить установку драйверов. Теперь нужно ввести команду для прошивки: fastboot update название_файла_прошивки.zip После этого начнется перепрошивка. Не забудьте перезагрузить устройство после окончания обновления операционной системы.

Как перепрошить андроид через recovery

Еще один способ как перепрошить Андроид — это использовать стандартные recovery или кастомные (TWRP\CWM). Что собой представляют кастоные recovery подробнее мы объясним ниже. Говоря кратко — это неофициальные прошивки. Итак, найдите в интернете подходящую вам прошивку, скачайте ее и сохраните в корень файловой системы вашего девайса.

Перезагрузите устройство в режим рекавери. Процесс входа в этот режим может отличаться в зависимости от конкретной модели планшета или смартфона. Чаще всего это делается сочетанием кнопок питания и клавиши громкости «Вниз». После входа в режим recovery с помощью клавиш «вверх» и «вниз» вам нужно открыть раздел установки прошивок и патчей и указать файл ранее загруженной с интернета прошивки. Как правило, данный пункт имеет следующее название: «apply update from externel storage», в TWRP – Install ZIP, в CWM – «apply update from sdcard».

Следуя приведенной выше инструкции вы запустите перепрошивку, по окончании которой нужно перезагрузить гаджет и сбросить заводские настройки. Чтобы вернуться к заводским настройкам зайдите в настройки вашего устройства и перейдите в раздел «Конфиденциальность», после чего нажмите на «Сбросить настройки». После этого можете проверять функциональность только что установленной прошивки.

Как прошить Андроид через ROM Manager

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

ROM Manager не будет работать, если у вас нет root прав. Подобные права можно получить с помощью специальных программ, например, прекрасно подойдут следующие приложения: Kingo Android ROOT , Unlock Root, Framaroot или Vroot (подробная инструкция здесь). Помимо этого должно быть установлено кастомное рекавери. Кстати, по сути при помощи ROM Manager вы прошиваете устройство через recovery, но в отличие от предыдущего варианта этот предполагает работу с куда более удобным и понятным интерфейсом.

Итак, находим и загружаем программу ROM Manager. Теперь нужно скачать подходящую для вашего девайса прошивку. Откройте утилиту ROM Manager и выполните следующие действия:

1. Поместите.zip архив прошивки в памяти вашего Андроид гаджета.

2. В меню ROM Manager откройте раздел «Установить ROM с SD карты».


3. Найдите архив с прошивкой и нажмите на него.


4. Далее выберите пункт «Перезагрузка и установка». Чтобы в дальнейшем иметь возможность восстановить операционную систему при возникновении такой необходимости, нужно поставить галочку напротив «Сохранить текущий ROM».


5. В следующем окне нажмите «ОК», после чего смартфон или планшет перейдет в режим Recovery и начнется перепрошивка устройства.


Что такое кастомная прошивка Андроид?

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

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

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

  • Samsung - Odin
  • Lenovo - Flash Tool
  • HTC - Fastboot
  • LG - KDZ Updater
  • Sony - Flashboot
  • Nexus - Fastboot.

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

Любой пользователь 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), и многое другое. Обо всем этом мы поговорим в следующих статьях.



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png