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

Самое верхнее - дерево от 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, то система при инициализации должна подтянуть необходимые исходники. Но так как автор любит все делать ручками, не везде такое работает и в принципе мы учимся, поэтому открываем этот файл и смотрим:

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'ы.

Исходники готовы к сборке под устройство. Приступаем к самой долгой и нудной части - сборке прошивки.