Loading...

Сборка Android из исходников [Инструкция]
Долго собирался написать эту инструкцию, в первую очередь для себя, так как часто переустанавливаю операционку на компьютере. Делаю всё на примере Ubuntu 19.10, которая находится у меня на Google Cloud. Итак, перейдём сразу к делу.
    1. Мы установили Ubuntu, теперь обновим уже имеющиеся пакеты в системе:
    sudo apt-get update && sudo apt-get dist-upgrade
2. Теперь поставим нужные нам пакеты, которых нет по умолчанию в системе:
    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip bc ccache git imagemagick lib32readline-dev lib32z1-dev liblz4-tool pngquant libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 lzop pngcrush rsync schedtool squashfs-tools openjdk-8-jdk p7zip-full meld brotli qt5-qmake android-tools-adb android-tools-fastboot texinfo maven swapspace
3. Прописываем кэш:
    ccache -M 50G
4. Открываем bashrc для выполнения некоторых команд при запуске
    sudo nano ~/.bashrc
Добавляем в конец:
    export USE_CCACHE=1 export PATH=~/bin:$PATH
Закрываем клавишами ctrl+x и ctrl+y, прописываем в терминале
    source ~/.bashrc
5. Ставим repo:
    mkdir ~/bin && PATH=~/bin:$PATH && curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod a+x ~/bin/repo
6. Зарегистрируемся в git:
    git config --global user.name "name" && git config --global user.email "email@mail.com"
    name - Логин, ник на гите
    email@mail.com - тут всё понятно, почта аккаунта на гите
7. Создаём папку, где будем делать прошивку. Название может быть любое, я буду собирать Evolution X, и название сделаю в честь этой прошивки - evo
    mkdir evo && cd evo
8. Скачиваем исходники. У каждой прошивки свои исходники, ссылка на них (в манифесте) соответственно тоже. У EvoX:
    repo init -u https://github.com/Evolution-X/manifest -b ten
9. Синхронизируем исходники
    repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
10. Загрузка конфигов для устройства
    Тут мы ищем деревья для устройств на github и gitlab, кладём их по местам. Обычно деревья device называются device_производитель_кодовоеимя. Должно быть расположено по пути device/производитель/кодовоеимя. Также с vendor'ом. Чаще всего такой способ применяется и к ядру, но бывает надо смотреть BoardConfig.mk для того, чтобы узнать расположения ядра и его defconfig. У меня, например, device - device_xiaomi_violet, расположен в device/xiaomi/violet. Vendor также, а вот ядро kernel_xiaomi_sm6150, расположено в kernel/xiaomi/sm6150. Если всё готово, тогда продолжаем.
11. Начинаем сборку:
    . build/envsetup.sh
    Даём знать об устройстве:
    lunch aosp_device-userdebug
    device - кодовое имя вашего устройства.
    userdebug - тип сборки. Также может быть eng и user.
    И начинаем сборку:
    mka bacon -jX
    X - кол-во ядер. У меня 16.
Исправляем ошибки при сборке, если они есть. Процесс компиляции сборки долгий, времени много уйдёт на него.
Kotya Agapkin (TheKotya / KotyaTheCat)
May 10, 2020