Параграф 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-ну кількість репозиторіїв:
Передостаннє - дерево від Lineage OS, однак там дерево максимум для Lineage OS 16.0. Не підходить. Дивимося далі. Є дерево від Zeelog'а, у нього є дерево для Lineage OS 17.1. Чудово! Беремо. Завантажуємо за тією ж схемою, що й бібліотеки в прикладі з пристроєм LeEco.
Примітка
Гілка 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'и.
Вихідні коди готові до збірки під пристрій. Приступаємо до найдовшої і найнуднішої частини - збірки прошивки.