Если вы знакомы с рутированием вашего телефона 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, и это будет вашей следующей целью. ,
Следите за обновлениями, так как вторая часть этого руководства будет посвящена добавлению шрифтов, тем и загрузочной анимации в ваш ПЗУ!