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

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

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

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

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

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

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

Samsung Open Source Release Center
Sony Developer World
Lenovo Support
Huawei Центр выпуска с открытым исходным кодом
Разработчики Motorola

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

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

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

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

Начнем с настройки эмулятора Android на вашем компьютере с Linux. Независимо от того, есть ли у вас устройство Google Pixel XL или нет, всегда безопаснее всего опробовать новое ПЗУ на эмуляторе Android перед прошивкой его на свое устройство. Мне больше всего нравится Genymotion, поэтому я расскажу вам, как установить именно этот эмулятор. Однако вы также можете ознакомиться с этим руководством «Лучшие эмуляторы Android», так как большинство из них также совместимы с 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:

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

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

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

(как пользователь 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

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

$ обед aosp_marlin-userdebug
$ setpaths
$ make –j4

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

$ emulator

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

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

Следите за обновлениями, поскольку во второй части этого руководства мы расскажем о добавлении шрифтов, тем и загрузочной анимации в ваш ROM!

Источник