Инструкция по компиляции Android 4.1 «Jelly Bean» на Ubuntu

Автор оригинала: dastin1015
  • Перевод
Внимание (!) эта инструкция не позволит вам создать полнофункциональную прошивку сразу, но даст вам возможность начать работать над ней.
Примечание: исходники занимают примерно 6 Гб. Вам нужно около 25 ГБ свободного места чтобы скомпилировать 1 билд и до 80 Гб (или больше) для полного комплекта сборки.

Перед началом компиляции Jelly Bean на Ubuntu необходимо пройти несколько шагов по настройке компьютера, чтобы получить готовый инструмент.


Инструкция:
1) Вам необходимо следующее:
-JDK 6, если вы хотите скомпилировать Jelly bean. Вы можете скачать его с java.sun.com или:

$ sudo add-apt-repository "deb archive.canonical.com lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk


-Python 2.4 — 2.7, который можно загрузить из python.org или:

$ sudo apt-get install python

-Git 1.7 или новее. Вы можете найти его в Git-scm.com или:

$ sudo apt-get install git-core

2) Установить необходимые пакеты. 64-bit (рекомендуется)

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils


В новых версиях Ubuntu, таких как 11.10 возможно потребуется выполнить следующие действия:

$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

В Ubuntu 12.04 в настоящее время есть только экспериментальная поддержка и не гарантируется работа по другим веткам отличным от master.

$ 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-glx:i386 \
libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so


3) Настроить USB

$ gksudo gedit /etc/udev/rules.d/51-android.rules

Вставьте это внутрь пустого текстового файла

#Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666"

#ASUS
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666"

#Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666"

#Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666"

#Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091E", MODE="0666"

#Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666"

#HTC
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666"

#Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666"

#K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666"

#KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666"

#Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666"

#Lenevo
SUBSYSTEM=="usb", ATTR{idVendor}=="17EF", MODE="0666"

#LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666"

#Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666"

#NEC
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666"

#Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666"

#Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666"

#OTGV
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666"

#Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10A9", MODE="0666"

#Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666"

#PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666"

#Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666"

#SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666"

#Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666"

#Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666"

#Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666"

#Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666"

#ZTE
SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"


4) Сохраните файл и закройте его, а затем выполните следующую команду:

$ sudo chmod a+r /etc/udev/rules.d/51-android.rules

5) Установите repo:

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo


6) Запустите repo:

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u android.googlesource.com/platform/manifest -b android-4.1.1_r1


6.1) Для людей у которых уже есть готовый repo:

$ cd WORKING_DIRECTORY
$ repo init -b android-4.1.1_r1
$ repo sync


7) Если потребуется, введите ваше имя и адрес электронной почты.
8) Соберите файлы:

$ repo sync

9) Скомпилируйте:

$ source build/envsetup.sh

или

$ . build/envsetup.sh

10) Запуск:

$ lunch

11) Выберите свое устройство
12) Теперь вопрос ('#' Это число ядер процессора плюс 1, например у меня есть 2хядерный процессор, то я пишу 'make -j3')

$ make -j#

~ Как добавитьустройство в список ~
1) Найти на GitHub устройства которые вы хотите добавить. (Для меня это HTC Evo 3D-CDMA)
2) Теперь перейдите в папку куда вы собираетесь клонировать дерево устройства:

$ cd WORKING_DIRECTORY/device
$ mkdir htc


3) Клонирование с GitHub дерева устройства с удаленного на локальный:
(Удостоверьтесь, что папка будет называться так же как стандартное имя для вашего устройства, например: Nexus One [passion], Nexus S [crespo] Motorola Droid [sholes], HTC Incredible [inc] и т.д.)

$ git clone git://github.com/CyanogenMod/android_device_htc_shooter.git shooter

4) Теперь перейдите в папку:

$ cd shooter

5) Подключите телефон к компьютеру и убедитесь, что отладка для USB включена и adb работает должным образом.
6) Извлеките собственные файлы устройства:

$ ./extract-files.sh

7) Вернитесь в свой домашний каталог

$ cd ~/WORKING_DIRECTORY

8) Подготовьтесь к компиляции:

$ source build/envsetup.sh

или

$ . build/envsetup.sh

9) Получите список ваших устройств:

$ lunch

10) Выберите свое устройство
11) Компилируйте:

$ make -j#

или для создания zip архива для прошивки:

$ make -j# otapackage

В итоге получаем скомпилированный JB под определенное устройство, теперь можно попробовать запустить его на вашем устройстве, посмотреть что работает, а что нет, затем заняться оптимизацией новой версии Android, сделать свою прошивку на базе AOSP и т.д.
Поделиться публикацией

Похожие публикации

Комментарии 15

    0
    Так и не понял, что в конце-концов мы получаем?
      0
      Скомпилированный JB под определенное устройство, т.е. после компиляции можно начинать работать над оптимизацией новой версии Android под свое устройство, делать свою прошивку и т.д.
        +1
        Для этого еще нужны свежие драйвера под конкретные устройства. А производители девайсов, к сожалению, их выкладывать не спешат.
    +1
    80 гб нужно для сборки прошивки, размером в полгигабайта?
    кошмар
      0
      Она сначала сама себе tool-chain собирает. Ну и то что объектные модули занимают не мало тоже никто не отменял.
        0
        А что такое? Сколько по-вашему места занимает исходки, файлы сборки и тулчейны для любой другой ОСи и приличного набора софта под нее?
          +1
          я когда-то gentoo собирал на сервере с 5 гб жесткого диска
        0
        Ну убунте обязательно столкнешься с недоступностью sun-java6-jdk, проблема решаема, но через гугл. В Debian Wheezy достаточно non-free от Squeeze добавить. А в целом инструкция практически полностью совпадает под Debian.
          0
          Если проблема при скачке с репов, кто мешает скачать и установить с оф. сайта?
            0
            А еще из сорцов можно по make && make install софт ставить. Я надеюсь не нужно разъяснять чем это чревато?
              0
              Развернуть архив в /opt, обновить java-alternatives и ссылку на браузерный плагин (если нужен) — вполне штатный механизм. 5 минут от силы займет. Ничего никуда не нужно ставить и тем более собирать.
              В конце концов можно вообще локально настроить для конкретного home окружения, если это сильно критично.
                +1
                Против добавить одну строчку в sources.list.

                Я говорю с простой позиции, я попробовал создать окружение для сборки Android на основе Ubuntu и Debian. Во втором случае телодвижений оказалось меньше.
                +1
                Никто не отменяет сборку deb пакета из джава архива, для этого даже есть спец. тулза в репах (в debain точно есть) java-package. С ней система не превращается в слаку. Достаточно сделать несколько команд:
                1. aptitude install java-package
                2. Слить с оф. сайта oracle нужный архив с джавой в tar.gz формате;
                3. собрать deb пакет:
                fakeroot make-jpkg jdk-bla-bla.tar.gz;
                4. установить:
                dpkg -i jdk-bla-bla.deb;
                5. Обновить alternatives:
                update-alternatives --config java
                update-alternatives --config javac
                Все. В системе нормально стоит новая версия и заменить ее в случяае выхода еще более новой не составит труда.
            0
            Скажите, а можно как-то скомпилировать только один отдельный пакет? В частности, меня очень интересует LatinIME.apk, хочется немного подправить клавиатуру.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое