August 9, 2022

О сборке прошивок

Сегодня я расскажу о сборке прошивки на примере Redmi Note 8 Pro.

Соберем мы Arrow OS 12.1, вы можете собирать как на своем компьютере, так и на сервере, но имейте ввиду, вы должны иметь минимум 16 Гб оперативной памяти, 8 ядер процессора и 200 Гб свободного места на диске, а также Linux, в нашем случае используем Ubuntu 20.04.4.

Откроем терминал, для начала установим некоторые пакеты:

sudo apt update
sudo apt install unzip
sudo apt install jq 
sudo apt install git
sudo apt install snapd
sudo wget 'https://storage.googleapis.com/git-repo-downloads/repo' -P /usr/local/sbin/
sudo chmod +x /usr/local/sbin/repo

Теперь мы должны получить исходники Arrow os. Для этого переходим на GitHub по этой ссылке: https://github.com/ArrowOS/android_manifest. Все последующие команды и действия делать в папке предварительно созданной вами:

mkdir rom
repo init -u https://github.com/ArrowOS/android_manifest.git -b arrow-12.1

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

Дальше синхронизируем репозиторий:

repo sync

Теперь мы должно поместить исходники нашего устройства в исходники прошивки. Исходники устройства будем использовать от открытого:) репозитория Begonia-dev: https://github.com/begonia-dev.

Нам нужно склонировать с GitHub следующие сурсы: Device Tree, Vendor, Kernel, Ims, Sepolicy. Делаем это используя следующие команды:

git clone https://github.com/begonia-dev/android_device_redmi_begonia.git -b 12.1 device/redmi/begonia
git clone https://github.com/begonia-dev/android_vendor_redmi_begonia.git -b 12.1 vendor/redmi/begonia 
git clone https://github.com/begonia-dev/android_kernel_xiaomi_mt6785.git -b 12.1 kernel/xiaomi/mt6785 --depth=1
git clone https://github.com/begonia-dev/android_vendor_redmi_begonia-ims.git -b 12.1 vendor/redmi/begonia-ims
git clone https://github.com/begonia-dev/android_device_mediatek_sepolicy.git -b 12.1 device/mediatek/sepolicy

Теперь мы переходим в директорию с Device Tree:

cd device/redmi/begonia

Мы должны переименовать файл lineage_begonia.mk в arrow_begonia.mk

mv lineage_begonia.mk arrow_begonia.mk

Также нужно отредактировать этот файл, пишем:

nano arrow_begonia.mk

Заменяем все слова "lineage" на "arrow" и ищем строчку:

$(call inherit-product, vendor/lineage/config/common_full_phone.mk)

Изменяем её, чтобы она выглядела вот так:

$(call inherit-product, vendor/arrow/config/common.mk).

Сохраняем и закрываем редактор:

ctrl + x - Y - Enter

Теперь мы должны отредактировать файл AndroidProducts.mk и попутно позаменять "lineage" на "arrow"

nano AndroidProducts.mk

И добавляем пару строк:

COMMON_LUNCH_CHOICES := \    arrow_begonia-eng \   arrow_begonia-userdebug \    arrow_begonia-user

Чтобы в конечном итоге получилось:

Теперь возвращаемся в главную папку:

cd ..
cd ..
cd ..

В главной папке прописываем следующие команды:

. build/envsetup.sh
lunch arrow_begonia-userdebug
m bacon

И ждем окончании сборки. По окончании вы увидите:

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