Сборка Android прошивки из исходников
Когда у нас есть сервер и установлены все нужные пакеты пора качать исходники.
Для начала перейдём на диск, где будем собирать прошивку и создадим папку
mkdir «название папки»
cd «название папки»
Теперь найдем нужную нам прошивку на GitHub’e
И перейдём в стартовый репозиторий, который обычно называется android или manifest. Внизу мы сможем найти команду для загрузки исходников. Например я буду объяснять на примере Evolution X.
Команда для загрузки исходников: repo init -u https://github.com/Evolution-X/platform_manifest -b pie
Когда мы ввели эту команду мы инициализировали исходников нашей прошивки и для начала загрузки нужно написать команду: repo sync
После этого пойдет загрузка исходников которая будет длиться 30-60мин.
Адаптация исходников под устройство:
Для сборки прошивки нужно иметь дерево которое используется для адаптации прошивки под устройство.
Если имеется готовое дерево, то рекомендую использовать его, но его нужно адаптировать под саму прошивку. Этот процесс я распишу в следующий раз.
Когда есть готовое дерево адаптированное под прошивку то нужно его загрузить в папку в исходниках device/производитель/кодовое_имя_устройства
Также нужен вендор который нужно загрузить в папку vendor/производитель/кодовое_имя_устройства
И ещё нужно ядро которое нужно загрузить в папку kernel/производитель/кодовое_имя_устройства
После переходим обратно в корень папки и начинаем сборку. Для этого пишем команды:
lunch специальное_название_прошивки_кодовое_имя_устройства_eng(или userdebug)
В моём случае команда выглядит так:
lunch aosp_onclite-eng(или как я ранее говорил userdebug)
Про eng и userdebug:
eng используется для тестовых сборок
userdebug используется для стабильных сборок для пользования ими.
Также существует просто user, но его я не рекомендую использовать т.к. нужно больше заморачиваться с настройкой.
Когда вы прописали эти две команды остаётся написать одну последнюю:
Эта команда начнёт сборку, но нужно разобраться с именем сборки. Имя сборки обычно написано вместе с этой командой внизу стартового репозитория прошивки
Например в моём случае команда выглядит так: mka bacon
Когда эта команда будет выполнена начнётся сборка прошивки которая бывает от полтора часа до двух с половиной часов и более. Во время сборки могут появляться разные ошибки которые могут быть как в дереве так и в исходниках. Если вы не знаете как исправить ошибку, то копируете ошибку начиная от слова FAILED: и до конца, и вставляете ошибку на сайт del.dog после сохраняете и копируете ссылку, а потом отправляете любому знающему человеку, который может помочь. Когда сборка будет окончена, то в папке out/target/product/кодовое_название_устройства/
Появится прошивка в zip архиве которую нужно выгрузить с сервера через терминал или если вы с android устройства, то можно скачать программу termux и через неё будет тоже самое
Выгрузка прошивки с сервера
В терминале или термуксе пишете команду sftp логин_сервера@хост_или_айпи_адрес_сервера и отправляете команду. Обычно после этого нужно писать yes, а потом пароль. Пароль не будет отображаться, но не думайте, что ничего не пишется, а продолжайте писать. Потом когда таким образом зашли на сервер переходите в ту директорию где прошивка в zip архиве и пишите команду get название_архива_с_прошивкой
Может написать когда вы будете заходить на сервер, что нет такой команды sftp. Тогда если в терминале, то пишите команду sudo apt-get install openssh, а если в термуксе, то pkg install openssh
Всё теперь можете прошивать прошивку и проверять работает или нет.
Записки одного холерика
— загружаем исходники
Набираемся терпения, загрузка исходников дело длительное. Лично у меня при наличии 80 Мбит/с на «внешний мир» загрузка исходников длится порядка 4 часов.
ВАЖНО! Если во время загрузки произошел обрыв сессии, не расстраиваемся и снова выполняем команду загрузки — загрузка продолжится с места обрыва:
repo sync -j16
5. Далее возможны два варианта развития наших действий:
а) девайс для которого мы собираем прошивку официально поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для HTC Wildfire);
б) девайc для которого мы собираем прошивку официально НЕ поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для Huawei U8100/8110/8120).
Вариант а.
1) Копируем проприетарные файлы.Дело в том, что хотя мы и собираем прошивку «с нуля», но есть библиотеки, которые нельзя собрать из исходников, по причине того, что поставщик данного «железа» не предоставил их (=)). Для этого подключаем рабочий девайс HTC Wilfire с последней официальной прошивкой «на борту» к ПК при помощи usb-шнура и выполняем в терминале:
cd ~/android/system/device/htc/buzz/ ./extract-files.sh
2) Загружаем RomManager.Часть ПО, используемая в прошивках СМ, не собирается из исходников, а загружается в уже собранном виде. Именно таким ПО является RomManager. Для загрузки данного ПО:
~/android/system/vendor/cyanogen/get-rommanager
3) Собираем прошивку. Финальный этап.Для этого в терминале выполняем:
. build/envsetup.sh && brunch buzz
— вместо buzz используется другое название, в случае сборки прошивки для другого девайса.
Вариант б.
1) Загружаем «дерево устройства» для нашего девайса. «Дерево устройства» это набор конфигурационных файлов с настройками для определенного девайса. Если девайс официально поддерживается, то данное «дерево устройства» уже есть в ранее загруженных нами исходниках. Если нет, то его необходимо загрузить из стороннего источника. Самый оптимальный вариант, это GitHub — самый большой веб-сервис для хостинга проектов и их совместной разработки. Получить готовое дерево можно двумя путями:
Скачать готовое дерево с GitHub-а. В данном примере, поскольку мы создаем прошивку для huawei u81хх, то качаем дерево устройства тут. Полученный архив распаковываем в ранее скачанные нами исходники, по пути: ~android/system/device/huawei/u8120
(папку huawei создаем самостоятельно, в нее распаковываем наше «дерево устройства» и переименовываем в u8120).
Создать новое дерево самостоятельно. Для этого заходим в ранее скачанных исходниках по пути device/huawei (я выбрал huawei так как собираю прошивку для телефона этого производителя. Если вы портируете прошивку для другого устройства, найдите в папке device наиболее подходящее по железу устройство) и копируем папку, например, u8150 — данный аппарат на текущий момент официально поддерживается. Скопированную папку переименовываем в u8120 (ну, или имя вашего аппарата), и во всех файлах внутри заменяем аккуратно слово u8150 на u8120 (ну, или имя вашего аппарата). Обязательно правим файлы device_u8110.mk и BoardConfig.mk — они фактически являются конфиг-файлами для сборки прошивки. Например, по умолчанию в файле BoardConfig.mk есть строка: BOARD_WLAN_DEVICE := ar6000 — где ar6000 имя модуля Wi-Fi, но значение ar6000 может быть разным для разных устройств. Тут нужно немного подумать и погуглить. После некоторых манипуляций получаем готовое дерево для нашего аппарата.
2) Копируем проприетарные файлы. О них более детально я рассказывал выше. Подключаем девай Huawei u8120 к ПК при помощи usb-шнура и выполняем в терминале
cd ~/android/system/device/huawei/u8120/ ./extract-files.sh
Кроме того, возможен вариант извлечения проприетарных файлов из архива прошивки, а не с рабочего девайса. Это возможно при помощи скрипта unzip-files.sh (если таковой имеется в «дереве файлов»), но об этом подробнее в случае необходимости (=)).
3) Загружаем готовое ПО для прошивки (RomManager, подробнее в п. а.2). Выполняем в терминале:
~/android/system/vendor/cyanogen/get-rommanager
4) Подготавливаем исходники. Поскольку мы занимаемся в этом примере портированием, а версия исходников 7,х не понимает без предварительных манипуляций, что новая папка с деревом устройства и есть портированием, то нам необходимо исходники немного поправить.
— редактируем файл vendor/cyanogen/vendorsetup.sh добавив в него строку add_lunch_combo cyanogen_u8120-eng — копируем файл, как наиболее подходящий
cp vendor/cyanogen/products/cyanogen_u8150.mk vendor/cyanogen/products/cyanogen_u8120.mk
открываем его и во всех случаях заменяем u8150 на u8120.
— редактируем файл vendor/cyanogen/products/AndroidProducts.mk добавив строку $(LOCAL_DIR)/cyanogen_u8120.mk
5) Собираем прошивку: Переходим в папку с исходниками и выполняем команды:
. build/envsetup.sh breakfast
появится список устройств и предложение указать наше устройство. Ищем наш девайс и указываем его номер по порядку. После ввода номера нажимаем «Ввод». Выполняем
brunch u8120
6. В лучшем случае, сборка прошивки по времени занимает порядка 4-6 часов, в зависимости от ПК. На моем новом ноуте с процессором i5 (4 ядра) и 4-мя гигами оперативки, на сборку прошивки уходит ровно 42 минуты.
Как собрать прошивку android из исходников
Как я делал кастомное ОТА для PixelExperience, на 10 андроиде.

Итак если вы уже читали на сайте как сделать кастомное ота в, этой статье, значит вы уже будете понимать, что да как, но в 9 андроиде процесс создания был немного проще, сейчас же считаются другие хеш суммы архива и нужен их генератор.
Полный процесс с проверкой у меня занял пару вечеров и несколько экспериментов днем, но ОТА стала работать как на официальной PixelExperience.

- waiser
- Инструкции / Сборка андроид из исходников
- 2020-02-04
- 5 280

Как сделать свое ОТА для кастомной прошивки

Добрый день сегодня хочу рассказать как сделать свое ОТА на примере прошивки PixelExperiance, в других примерно так-же, по аналогии.

- waiser
- Инструкции / Сборка андроид из исходников
- 2019-08-29
- 10 416

Активация и настройка среды на cloud.google.com процесс сборки прошивки на готовых дереве, ядре, вендоре.

Всем привет, пишу статью о том как собрать прошивку на андроид 9 используя cloud.google.com.
Начнем с того, что не все мы имеем высокопроизводительные компы, а собрать свою сборку и научиться то хочется, выход: cloud.google.com

- waiser
- Инструкции / Сборка андроид из исходников
- 2019-04-08
- 63 131
Записки одного холерика
Для начала определимся, что для этого нужно, дабы не вводить в заблуждение читателей:
- Нужен ПК с 64-битной Ubuntu (ну или любой другой Linux ОС). Изначально когда я увидел подобное заявление в сети, мне показалось, что это все … Почитав же немного форумов, оказалось, что для сборки 4-й версии Androida (и любой другой модификации данной версии, например, CM9) необходима установка дополнительных библиотек, которые существуют только для 64-битных систем.
- Нужен высокоскоростной интернет. Для сборки прошивки из исходников — необходимы сами исходники, а это порядка 10 ГБайт информации (и это в сжатом виде, после распаковки 12-14 ГБайт места на ПК).
- Много терпения и самое главное ЖЕЛАНИЕ! Лично у меня рабочую прошивку получилось собрать через месяц после первой попытки. Идем далее.
Инструкция по сборке прошивки Android Cyanogenmod 9 из исходников.
1. Логинимся под Ubuntu, открываем терминал и устанавливаем необходимы библиотеки:
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev:i386 g++-multilib mingw32 openjdk-6-jdk pngcrush schedtool tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
2. Создаем необходимые директории на ПК:
mkdir -p ~/bin
— название не менять (!)
mkdir -p ~/android/system
— тут можно создать любую директорию, лично для вашего удобства, например, не system, а cyanogenmod
3. Устанавливаем репозиторий, для загрузки исходников прошивки:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo
ВАЖНО! Для вступления изменений в силу перезагружаем ПК.
4. Загружаем исходники cyanogenmod 9:
cd ~/android/system/
— переходим в ранее созданную папку для исходников
repo init -u git://github.com/CyanogenMod/android.git -b ics
repo sync -j16
Набираемся терпения, загрузка исходников дело длительное. Лично у меня при наличии 80 Мбит/с на «внешний мир» загрузка исходников длится порядка 4 часов.
ВАЖНО! Если во время загрузки произошел обрыв сессии, не расстраиваемся и снова выполняем команду загрузки — загрузка продолжится с места обрыва:
repo sync -j16
5. Далее возможны два варианта развития наших действий:
а) девайс для которого мы собираем прошивку официально поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для Samsung Galaxy S II);
б) девайc для которого мы собираем прошивку официально НЕ поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для Huawei U8100/8110/8120).
а.1) Копируем проприетарные файлы. Дело в том, что хотя мы и собираем прошивку «с нуля», но есть библиотеки, которые нельзя собрать из исходников, по причине того, что поставщик данного «железа» не предоставил их (=)). Для этого подключаем рабочий девайс Samsung Galaxy S II с последней официальной прошивкой «на борту» к ПК при помощи usb-шнура и выполняем в терминале:
cd ~/android/system/device/samsung/galaxys2/ ./extract-files.sh
а.2) Загружаем RomManager. Часть ПО, используемая в прошивках СМ, не собирается из исходников, а загружается в уже собранном виде. Именно таким ПО является RomManager и Terminal Emulator. Для загрузки данного ПО:
~/android/system/vendor/cm/get-prebuilts
а.3) Собираем прошивку. Финальный этап. Для этого в терминале выполняем:
. build/envsetup.sh && brunch galaxys2
— вместо galaxys2 используется другое название, в случае сборки прошивки для другого девайса.
б.1) Загружаем «дерево устройства» для нашего девайса. «Дерево устройства» это набор конфигурационных файлов с настройками для определенного девайса. Если девайс официально поддерживается, то данное «дерево устройства» уже есть в ранее загруженных нами исходниках. Если нет, то его необходимо загрузить из стороннего источника. Самый оптимальный вариант, это GitHub — самый большой веб-сервис для хостинга проектов и их совместной разработки. В данном примере, поскольку мы создаем прошивку для huawei u81хх, то качаем дерево устройства тут. Полученный архив распаковываем в ранее скачанные нами исходники, по пути:
~android/system/device/huawei/u8120
(папку huawei создаем самостоятельно, в нее распаковываем наше «дерево устройства» и переименовываем в u8120).
б.2) Кроме «дерева устройства» нам необходимы исходники ядра для прошивки (если же в «дереве устройства» уже есть ядро, данный пункт можно пропустить). Детально о сборке ядра, можно прочитать в статье «Как собрать ядро Android«. Кроме того, готовые исходники ядра можно поискать на GitHub-е. Далее, смотрим в файле BoardConfig.mk «дерева файлов» строчку # Kernel (ну или что-то подобное со словом Kernel). Опция TARGET_KERNEL_SOURCE чуть ниже строки # Kernel указывает на путь к исходникам ядра. Путь kernel/u8120_kernel указывает на то, что исходники ядра лежат в папке kernel/u8120_kernel, ранее загруженных исходников CM9. Кроме исходников ядра, нам нужен config файл для сборки ядра. config файл должен располагаться по пути arch/arm/config исходников ядра, и называться как указано в строке TARGET_KERNEL_CONFIG файла BoardConfig.mk «дерева файлов».
б.3) Копируем проприетарные файлы. О них более детально я рассказывал выше. Подключаем девайc Huawei u8120 к ПК при помощи usb-шнура и выполняем в терминале
cd ~/android/system/device/huawei/u8120/ ./extract-files.sh
Кроме того, возможен вариант извлечения проприетарных файлов из архива прошивки, а не с рабочего девайса. Это возможно при помощи скрипта unzip-files.sh (если таковой имеется в «дереве файлов»), но об этом подробнее в случае необходимости (=)).
б.4) Загружаем готовое ПО для прошивки (RomManager и Terminal Emulator, подробнее в п. а.2). Выполняем в терминале:
~/android/system/vendor/cm/get-prebuilts
б.5) Собираем прошивку:
. build/envsetup.sh && brunch u8120
— u8120 — название папки «дерева файлов».
6. В лучшем случае, сборка прошивки по времени занимает порядка 4-6 часов, в зависимости от ПК. Лично на моем 2-х ядернике, с ядром по 1,6 ГГц и 2 гигами оперативки трачу на данный процесс 4-5 часов.
