Параграф 4: Исходники устройства
Что ж, приступаем к самому интересному. Нам требуется скачать исходники устройства. Рассмотрим два случая: устройство официально поддерживается командой Lineage OS и устройство не поддерживается официально командой Lineage OS.
Примечание.
В предыдушем параграфе мы немного затронули про локальный манифест
Устройство официально поддерживается
Тут самое банальное. Надо только скачать проприетарные библиотеки из репозитория github.com/TheMuppets, где библиотеки раскиданы по производителям. Скажем, у нас смартфон производства LeEco. В поиске вбиваем leeco. Открываем репозиторий, копируем ссылку. Очевидно она будет выглядить так:
https://github.com/TheMuppets/proprietary_vendor_leeco
Так как мы собираем Lineage OS 17.1, то нам нужно скачать ветку lineage-17.1. Что ж, давайте сделаем это! Вводим следующую команду в корне исходников прошивки:
git clone https://github.com/TheMuppets/proprietary_vendor_leeco -b lineage-17.1 vendor/leeco
Давайте разберемся, что мы ввели:
git clone
- команда на скачивание репозиторияhttps://github.com/TheMuppets/proprietary_vendor_leeco
- ссылка на репозиторий-b lineage-17.1
- указываем ветку, которую требуется скачатьvendor/leeco
- путь, куда требуется скачать репозиторий
Внимание
Если Ваше устройство производства Xiaomi, то скачать проприетарные библиотеки можно из gitlab.com/the-muppets.
Устройство официально не поддерживается
И так, самая первая прошивка, которую собирают на новое устройство, это Lineage OS. Во всяком случае, обычно. Будем полагаться на удачу. Так что открываем github.com и в поиск вбиваем
device производитель кодовое-имя
К примеру, давайте найдем исходники Xiaomi Redmi Note 4X - mido. Вводим device_xiaomi_mido
, видим n-ое количество репозиториев:
Самое верхнее - дерево от ZeeLog, там есть дерево для Lineage OS 17.1, это нам подходит. Скачиваем по той же схеме, что и библиотеки в примере с устройством LeEco. А второе дерево - дерево от Lineage OS, однако там дерево максимум для Lineage OS 16.0, оно не подходит под наши цели.
Примечание
Ветка lineage-17.1-4.9 предназначена для сборки Lineage OS 17.1 с ядром 4.9. Ветка lineage-17.1 предназначена для сборки Lineage OS 17.1 с ядром 3.18. (Это в случае с mido!)
Так-с, specific дерево скачали. По идее, если есть lineage.dependencies
, то система при инициализации должна подтянуть необходимые исходники. Но так как автор любит все делать ручками, не везде такое работает и в принципе мы учимся, поэтому открываем этот файл и смотрим:
[
{
"repository": "android_kernel_xiaomi_mido",
"target_path": "kernel/xiaomi/mido"
}
]
В случае mido здесь мы видим только ядро. Искать его не надо, открываем профиль Zeelog'а и в поиск вбиваем android_kernel_xiaomi_mido
. Уже по налаженной схеме клонируем его. Куда клонировать? Можно посмотреть в lineage.dependencies
. Хотя Вы наверняка заметили некоторую тенденцию в названии репозиториев и куда они были клонированы. Вернемся к тому же ядру, android_kernel_xiaomi_mido - kernel/xiaomi/mido. Думаю, вопросы излишни.
Теперь надо скачать проприетарные библиотеки. К сожалению, в lineage.dependencies
они не прописаны. Открываем профиль Zeelog'а снова и ищем что-то типа vendor_xiaomi
. Нашли? Отлично, клонируем в соответствующую папку из нужной ветки. Однако если Вы работаете с другим устройством, у вас может быть иначе, к примеру, репозиторий называется proprietary_vendor_lenovo_A6020
, очевидно, что клонируем в vendor/lenovo/A6020
. И если в lineage.dependencies
есть еще что-то, то тоже клонируем в соответствующие папки.
Вообще, если есть возможность, то лучше поспрашивать у других сборщиков под ВАШЕ устройство что и откуда скачать для сборки прошивки. В некоторых случаях нужно и вовсе патчить исходники прошивки. К примеру, для моего Asus Zenfone 2 Laser ZE500KL (Z00ED) требуется модифицировать HAL'ы.
Исходники готовы к сборке под устройство. Приступаем к самой долгой и нудной части - сборке прошивки.