Skip to content

Параграф 1: Помилки збірки (SELinux, нестача пакетів, ресурсів і тд)

Список частих помилок:

  1. ccache

  2. libncurses5

  3. metalava

  4. UnicodeDecodeError

ccache

error: Failed to create directory /home/user/.ccache/tmp: Read -only file system

Фікс

  1. Створюємо директорію за шляхом /mnt/ccache командою:
bash
sudo mkdir /mnt/ccache
  1. Монтуємо cache:
bash
sudo mount --bind /home/username/.cache /mnt/ccache

WARNING

Замість "username" вписуєте свого юзера! І не помиліться в шляху, у вас він може бути злегка іншим.

  1. Після монтування прописуємо команду для стиснення нашого кешу (це опціонально, якщо ви хочете впихнути більше в дрібний обсяг як я, то пишемо):
bash
ccache -o compression=true
  1. Робимо стандартний експорт тощо:
bash
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
export CCACHE_DIR=/mnt/ccache
  1. Встановлюємо розмір нашого кешу:
bash
ccache -M 15G -F 0

TIP

15G - Розмір кешу в ГБ

Таке рішення працює до першого перезавантаження.

Для повторного виправлення (після кожного ребуту), просто прописуєте команду монтування

bash
sudo mount --bind /home/username/.cache /mnt/ccache
  1. Або додаємо наш ccache у fstab:
bash
sudo nano /etc/fstab

І додаємо рядок:

/home/username/ccache /mnt/ccache none defaults,bind,users,noauto 0 0
  1. Після чого редагуємо файл профілю:
bash
nano ~/.profile

Додавши рядок:

mount /mnt/ccache

libncurses5

error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

Фикс:

  • Ubuntu
bash
sudo apt-get install libncurses5
  • Arch
bash
yay ncurses5-compat-libs

Metalava

Симптоми: Збірка зупиняється з помилкою про брак ОЗП на етапі збірки Metalava, або надовго зависає

Android 10 (можливо застаріло)

  1. Заходимо в директорію build/soong:
bash
cd build/soong
  1. Відкриваємо на Lineage OS Gerrit потрібний нам коміт

  2. Натискаємо кнопку "DOWNLOAD" LineageOSGerritDownload

  3. Навпроти варіанту "Cherry Pick" натискаємо кнопку копіювання LineageOSGerritCherryPick

  4. Копіюємо в термінал і натискаємо Enter

  5. Повертаємося в корінь вихідних кодів:

bash
cd ../..
  1. Виконуємо всі підготовчі команди для збірки, але не запускаємо
  2. Заздалегідь і окремо збираємо по одному компоненту, який вимагає багато ОЗП:
bash
mka api-stubs-docs && mka hiddenapi-lists-docs && mka system-api-stubs-docs && mka test-api-stubs-docs
  1. Запускаємо збірку прошивки

Android 11-13

Для нього все те саме, відмінність тільки в комітеті і які компоненти збираємо заздалегідь.

bash
mka api-stubs-docs && mka module-lib-api-stubs-docs && mka system-api-stubs-docs && mka test-api-stubs-docs

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0

Фікс:

Прибрати кириличні літери в шляху. Не повинно бути на кшталт /home/coolgirl/лінейдж/...