Как создать собственное ПЗУ из проекта Android с открытым исходным кодом —

Если вы знакомы с рутированием вашего телефона Android или загрузкой пользовательских ПЗУ, таких как очень популярный CyanogenMod или его преемник Lineage OS, вы, возможно, задаетесь вопросом — как люди создают эти ПЗУ? Сколько именно работы уходит на разработку кастомного ПЗУ?

Это руководство познакомит вас с основами разработки собственных пользовательских ROM для Android. Следует отметить, что это масштабное мероприятие — если у вас нет нулевого опыта в программировании или дурачке в терминалах Linux, вы, возможно, захотите получить некоторые знания, прежде чем погрузиться в этот глубокий конец. Но если у вас есть хотя бы базовое представление об этих вещах, я постараюсь объяснить вещи настолько просто, насколько это возможно, чтобы вы могли следовать за ними.

По сути, мы делаем загрузку исходного кода Android (AOSP) и модифицируем его по своему вкусу. Поскольку существует множество источников на выбор для различных устройств, в этом руководстве просто будет мастер источник известный как AOSP (Android Open Source Project).

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

Если вы разрабатываете для телефона под маркой Google (Pixel, Nexus и т. Д.), Вы можете найти двоичные файлы аппаратного обеспечения непосредственно от Google, и это руководство поможет вам получить и встроить их в свой ROM. Однако, если вы разрабатываете ПЗУ для фирменного телефона (Sony, Samsung и т. Д.)… Ну, благословите ваше сердце, потому что вас ждет поездка.

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

Samsung Open Source Центр выпуска
Мир разработчиков Sony
Поддержка Lenovo
Центр выпуска открытого исходного кода Huawei
Разработчики Motorola

С учетом этого давайте продолжим в предположении, что мы создаем ПЗУ для самого простого, ванильного Android-устройства, для устройства Google Pixel. Имея эти знания под рукой, вы сможете самостоятельно расширяться и приступить к разработке индивидуальных версий ПЗУ конкретного производителя.

Требования к этому руководству:

  • Android-проект с открытым исходным кодом
  • Телефон Pixel XL или же эмулятор Android для Linux
  • 64-битная операционная система Linux — Ubuntu или Linux Mint являются наиболее дружественными для новичков дистрибутивами, тогда как BBQLinux был разработан специально для разработчиков Android.
  • питон
  • Мускулистый компьютер (компиляция кода занимает много памяти и места!)

Настройка вашей среды сборки

Начнем с настройки эмулятора Android на вашем компьютере с Linux. Независимо от того, есть ли у вас устройство Google Pixel XL, всегда безопаснее попробовать новое ПЗУ на эмуляторе Android, прежде чем прошивать его на свое устройство. Мой личный фаворит — Genymotion, поэтому я покажу вам, как установить именно этот эмулятор. Однако вы также можете ознакомиться с этим руководством «Лучшие эмуляторы Android для Windows в 2017 году», так как большинство из них также совместимы с Linux.

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

Теперь откройте терминал Linux и введите:

Chmod + x genymotion-xxxxx.bin (замените xxxx номером версии в имени файла)
./genymotion-xxxxxx.bin

Нажмите Y создать каталог Genymotion. Теперь введите в терминале:

CD Genymotion ./genymotion

Теперь он попросит вас начать процесс установки, поэтому просто нажимайте кнопку Далее, пока не перейдете в окно «Добавить виртуальные устройства». Выберите «Pixel XL» в разделе «Модель устройства», а затем завершите установку. Вы можете протестировать виртуальное устройство, если хотите, это будет похоже на использование телефона Pixel XL на рабочем столе.

Давайте теперь настроим Python:

$ apt-get install python

Теперь нам нужно настроить Java Development Kit на вашем Linux-компьютере. Откройте терминал Linux и введите следующие команды:

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

Теперь вам нужно настроить систему Linux, чтобы разрешить доступ к USB-устройству. Запустите следующий код в терминале Linux:

Это загрузит необходимый файл 51-android.txt, который разрешает доступ к вышеупомянутому USB-устройству. Откройте файл .txt и измените его, указав имя пользователя Linux, затем поместите файл .txt в следующую папку: (как пользователь root). Теперь подключите ваше устройство к компьютеру через USB, чтобы новые правила вступили в силу автоматически.

Загрузка исходного кода Android

AOSP находится на Git, поэтому мы будем использовать инструмент под названием Repo для связи с Git.

Сначала нам нужно настроить папку / bin в вашем домашнем каталоге. Введите следующие команды в терминал Linux:

$ mkdir ~ / bin
$ PATH = ~ / bin: $ PATH

Теперь мы загрузим инструмент Repo, поэтому введите в терминал Linux:

$ curl https://storage.googleapis.com/git-repo-downloads/repo> ~ / bin / repo
$ chmod a + x ~ / bin / repo

После установки Repo мы должны создать пустой каталог для хранения ваших рабочих файлов. Поэтому введите это в терминал Linux:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

Теперь мы настроим Git с вашим именем и адресом электронной почты — использовать адрес Gmail, который вы регулярно проверяете, в противном случае вы не сможете использовать инструмент пересмотра кода Gerrit.

$ git config –global user.name «Ваше имя»
$ git config –global user.email you@gmail.com

Теперь мы расскажем Repo, чтобы он извлек последнюю версию манифеста AOSP из Git:

$ repo init -u https://android.googlesource.com/platform/manifest

Если все сделано успешно, вы получите сообщение о том, что Repo был инициализирован в вашем рабочем каталоге. Вы также найдете каталог «.repo» внутри каталога клиента. Итак, теперь мы загрузим дерево исходников Android с:

$ repo sync

Сборка Android-источника

Именно здесь вступают в игру двоичные файлы оборудования, упомянутые в начале данного руководства. Давайте перейдем на страницу драйверов AOSP и загрузим двоичные файлы Pixel XL для Android 7.1.0 (NDE63P). Вы хотите загрузить как образ поставщика, так и компоненты оборудования. Они представляют собой сжатые архивы, поэтому распакуйте их на рабочий стол и запустите самораспаковывающийся скрипт из корневой папки. Выберите установку двоичных файлов в корневой каталог WORKING_DIRECTORY, который мы создали ранее.

Теперь введите в свой терминал Linux:

$ make clobber
$ source build / envsetup.sh

Теперь мы выберем цель для построения, поэтому введите:

$ lunch aosp_marlin-userdebug
$ setpaths
$ make –j4

Там мы теперь «создали» Android ROM из исходного кода. Итак, давайте проверим это в эмуляторе, набрав в терминале:

$ эмулятор

Так что поиграйтесь в эмуляторе немного. Как видите, опыт работы с Android совершенно ванильный — минимальный, и поэтому производители настраивают AOSP под свои нужды. Так что вы можете прошить это ПЗУ, которое мы только что создали, на ваше устройство, если хотите, но без добавления каких-либо улучшений, чисто ванильный Android-опыт был бы очень скучным.

То, что производители обычно делают с AOSP, это разветвляют его, добавляют свои собственные проприетарные двоичные файлы, настраивают пользовательский интерфейс, добавляют загрузочный логотип и т. Д. В основном, производитель просто закрашивает стандартное ПЗУ Android, и это будет вашей следующей целью. ,

Следите за обновлениями, так как вторая часть этого руководства будет посвящена добавлению шрифтов, тем и загрузочной анимации в ваш ПЗУ!

Ссылка на основную публикацию