Учебники (How-To & F.A.Q)
   7498

Сборка Android (AOSP) из исходников в Manjaro Linux.

Хочу поделиться небольшими практическими наработками для настройки локального окружения для сборки Android Open Source Project в Manjaro Linux.

Все ниже описанное применимо для сборки Android версий 4.x.x.
1. Для начала нам понадобится утилита управления компиляцией она же make версии 3.82
wget http://ftp.gnu.org/gnu/make/make-3.82.tar.gz
tar -xvf make-3.82.tar.gz
cd make-3.82
./configure
./build.sh

В домашнем каталоге создаем директорию bin, если она еще не была создана и копируем туда скомпилированный бинарник make.
mkdir ~/bin
cp make ~/bin/make3.8

2. Создадим симлинки для python2
ln -s /usr/bin/python2.7 ~/bin/python

3. Дальше необходимо скачать Java Development Kit v.6.
Получить его можно по этой ссылке. Качать в архиве или же просто .bin, решать вам. В итоге у нас должен получится распакованный jdk6, для удобства я его скопировал в /opt/java/jdk6.
4. Осталось совсем немного, добавляем в .bashrc необходимые алиасы и экспорты переменных окружения.
export USE_CCACHE=1
alias make='/home/$USER/bin/make3.8'
JAVA_HOME=/opt/java/jdk6/bin
JRE_HOME=/opt/java/jdk6/jre
export PATH=~/bin:$JAVA_HOME:$JRE_HOME:$PATH

5. Доустанавливаем необходимые зависимости, в моей системе не хватало gperf и perl-switch, если чего-то не будет хватать, всегда можно доустановить.
yaourt -S gperf perl-switch

На этом все, можно приступать к сборке AOSP.

P.S. В качестве shell-а я использую ZSH, поэтому спокойно доавил алиасы и перемнные для JAVA в .bashrc, если кто-то пользуется самим bash-ем и нужна будет версия jdk отличная от 6, то думаю нужно будет придумать более хитрое решение.

10 комментариев

avatar
Прошу прощения, возможно, за нубский вопрос: а не проще ли джаву из АУР поставить? В Кубунте я из репозитория Оракла ставил…
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
0
avatar
Просто если ставить из АУРа, то он установится по дефолту в системк, а иногда нужно чтобы версия была выше чем 6, поэтому так и использую.
Последний раз редактировалось
0
avatar
т.е. у тебя в системе две версии джавы как минимум? В Manjaro я пока этим не баловался, а вот в кубунту ставил 8-ю Джаву из репозиториев и все работало (это про Android Studio)… Может ддля старых версий это и нужно, но как по мне, то это лишний гемор…
З.Ы. в компиляции Андрюши и программировании под него полный нуб, так что кидаться тапками НУЖНО
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
0
avatar
Да, две версии, как раз для Android Studio использую 8, а вот при сборке именно самого Андройда 4.х ему нужна 6, какая нужна для Лоллипопа не знаю, пока до него руки не дошли.
+1
avatar
теперь понял)
?
СкаженЭ КотЭ в кедах =(^_^)=
KDE-Minimal Setting-Up
+1
avatar
Возможно мануал и подходит для Андроид 4.х.х., однако ему уже лет так несколько и не решает он по моему мнению проблем с более новыми версиями Андроид 6.х, когда в сборке нужны рекомендации из самого правильного мануала, начиная с питона, необходимых пакетов ( 64-bit systems only: gcc-multilib lib32-zlib lib32-ncurses lib32-readline

AUR Packages: libtinfoAUR

To build Android 6+, you need to install these additional packages:

32-bit and 64-bit systems: rsync

Note: You must now also install lib32-ncurses5-compat-libsAUR & ncurses5-compat-libsAUR since ncurses was updated to ncurses6 and android's prebuilt clang still )
Проблему я так и не решил. Ошибка с пакетами из AUR, если не применять то они требуются, либо проблема с libtinfo после установки нижеописанных. Пока на промежуточной стадии, но раздражает что это в корне исключено к примеру это в Минт 17.3, Убунту, Дебиан и т.д., нет проблем все нужное установить и пользоваться. Что за проблема, когда приходится тратить столько времени на простое, установку нужных пакетов для компиляции прошивки Андроид.
Мануал для ARCH в принципе вполне понятный wiki.archlinux.org/index.php/Android
P.S. Может кто-то сможет дать пару советов?
Последний раз редактировалось
0
avatar
Небольшое дополнение
Устанавливаем
yaourt -S gcc git gnupg flex bison gperf sdl wxgtk squashfs-tools curl ncurses zlib schedtool perl-switch zip unzip libxslt python2-virtualenv bc  libtinfo lib32-zlib lib32-ncurses lib32-readline lib32-ncurses5-compat-libs ncurses5-compat-libs 

Выдаст ошибку при сборке ncurses5-compat-libs
После нужно установить ключь для ncurses5-compat-libs
sudo gpg --keyserver hkp://pgp.mit.edu/ --recv-keys 0x702353e0f7e48edb 

и далее ставим
yaourt -S ncurses5-compat-libs 

yaourt -S gcc-multilib 

Ставим
sudo pacman -S rsync 
-> далее

$ export PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir ~/android
$ cd ~/android
$ repo init -u https://android.googlesource.com/platform/manifest -b master
-> далее 
$ git config --global user.email "адрес почты"
$ git config --global user.name "логин"
$ repo sync -j4
 

Далее
$ source build/envsetup.sh
$ lunch full-eng
$ make -j4 

выдаст ошибку такого рода

1) libtinfo.so.5: cannot open shared object file: No such file or directory
2) make3.8: *** [ninja_wrapper] Error 1 

Далее делаем символическую ссылку
sudo ln -s /usr/lib/libncurses.so.5 /usr/lib/libtinfo.so.5 

и далее опять
$ make -j4 
Последний раз редактировалось
?
Всё возможно, пока не сделан выбор !
0
avatar
И еще ставим
yaourt -S jdk7-openjdk

если нету
clang

нужно установить
yaourt -S clang
Последний раз редактировалось
?
Всё возможно, пока не сделан выбор !
0
avatar
Все решения по сборке Android 6.x были решены сомостоятельно. Все собиралось без проблем. Ваши бы рекомендации в нужное время. Детали не могу выложить, так как отказался от сборки в ARCH. Слишком часты обновления, после которых что-то нужно переделывать.
0
avatar
Я сейчас собираю Resurrection Remix ROM для HTC One (M8) Dual SIM
?
Всё возможно, пока не сделан выбор !
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.