Skip to content

Параграф 4: Вихідні коди пристрою

Що ж, приступаємо до найцікавішого. Нам потрібно завантажити вихідні коди пристрою. Розглянемо два випадки: пристрій офіційно підтримується командою Lineage OS і пристрій не підтримується офіційно командою Lineage OS.

Примітка

У попередньому параграфі ми трохи торкнулися локального маніфесту

Пристрій офіційно підтримується

Тут найбанальніше. Треба тільки завантажити пропрієтарні бібліотеки з репозиторію github.com/TheMuppets, де бібліотеки розкидані за виробниками. Скажімо, у нас смартфон виробництва LeEco. У пошуку вбиваємо leeco. Відкриваємо репозиторій, копіюємо посилання. Очевидно воно матиме такий вигляд:

https://github.com/TheMuppets/proprietary_vendor_leeco

Оскільки ми збираємо Lineage OS 17.1, то нам потрібно завантажити гілку lineage-17.1. Що ж, давайте зробимо це! Вводимо таку команду в корені вихідних кодів прошивки:

bash
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-ну кількість репозиторіїв:

GitHub_mido

Передостаннє - дерево від 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, то система під час ініціалізації має підтягнути необхідні вихідні коди. Але оскільки автор любить все робити ручками, не скрізь таке працює і в принципі ми вчимося, тому відкриваємо цей файл і дивимося:

json
[
  {
    "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'и.

Вихідні коди готові до збірки під пристрій. Приступаємо до найдовшої і найнуднішої частини - збірки прошивки.