October 14, 2019

Сборка Android прошивки из исходников

Когда у нас есть сервер и установлены все нужные пакеты пора качать исходники.

Для начала перейдём на диск, где будем собирать прошивку и создадим папку

mkdir "название папки"

cd "название папки"

Теперь найдем нужную нам прошивку на GitHub'e

И перейдём в стартовый репозиторий, который обычно называется android или manifest. Внизу мы сможем найти команду для загрузки исходников. Например я буду объяснять на примере Evolution X.

Стартовый репозиторий этой прошивки: https://github.com/Evolution-X/platform_manifest

Команда для загрузки исходников: repo init -u https://github.com/Evolution-X/platform_manifest -b pie

Когда мы ввели эту команду мы инициализировали исходников нашей прошивки и для начала загрузки нужно написать команду: repo sync

После этого пойдет загрузка исходников которая будет длиться 30-60мин.

Адаптация исходников под устройство:

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

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

Когда есть готовое дерево адаптированное под прошивку то нужно его загрузить в папку в исходниках device/производитель/кодовое_имя_устройства

Также нужен вендор который нужно загрузить в папку vendor/производитель/кодовое_имя_устройства

И ещё нужно ядро которое нужно загрузить в папку kernel/производитель/кодовое_имя_устройства

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

. build/envsetup.sh

После пишем:

lunch специальное_название_прошивки_кодовое_имя_устройства_eng(или userdebug)

В моём случае команда выглядит так:

lunch aosp_onclite-eng(или как я ранее говорил userdebug)

Про eng и userdebug:

eng используется для тестовых сборок

userdebug используется для стабильных сборок для пользования ими.

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

Когда вы прописали эти две команды остаётся написать одну последнюю:

mka <имя_сборки>

Эта команда начнёт сборку, но нужно разобраться с именем сборки. Имя сборки обычно написано вместе с этой командой внизу стартового репозитория прошивки

Например в моём случае команда выглядит так: mka bacon

Когда эта команда будет выполнена начнётся сборка прошивки которая бывает от полтора часа до двух с половиной часов и более. Во время сборки могут появляться разные ошибки которые могут быть как в дереве так и в исходниках. Если вы не знаете как исправить ошибку, то копируете ошибку начиная от слова FAILED: и до конца, и вставляете ошибку на сайт del.dog после сохраняете и копируете ссылку, а потом отправляете любому знающему человеку, который может помочь. Когда сборка будет окончена, то в папке out/target/product/кодовое_название_устройства/

Появится прошивка в zip архиве которую нужно выгрузить с сервера через терминал или если вы с android устройства, то можно скачать программу termux и через неё будет тоже самое

Выгрузка прошивки с сервера

В терминале или термуксе пишете команду sftp логин_сервера@хост_или_айпи_адрес_сервера и отправляете команду. Обычно после этого нужно писать yes, а потом пароль. Пароль не будет отображаться, но не думайте, что ничего не пишется, а продолжайте писать. Потом когда таким образом зашли на сервер переходите в ту директорию где прошивка в zip архиве и пишите команду get название_архива_с_прошивкой

Может написать когда вы будете заходить на сервер, что нет такой команды sftp. Тогда если в терминале, то пишите команду sudo apt-get install openssh, а если в термуксе, то pkg install openssh

Всё теперь можете прошивать прошивку и проверять работает или нет.