
Внимание! Эта инструкция не позволит вам создать полнофункциональную прошивку сразу, но даст вам возможность начать работать над ней.
Исходники занимают примерно 6Gb. Вам нужно около 25Gb свободного места чтобы скомпилировать 1 билд и до 80Gb (или больше) для полного комплекта сборки.
Перед началом компиляции Jelly Bean на Ubuntu необходимо пройти несколько шагов по настройке компьютера, чтобы получить готовый инструмент.
Инструкция
Вам необходимо следующее:
JDK 6, если вы хотите скомпилировать Jelly bean. Вы можете скачать его с java.sun.com или:
1 2 3 |
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo apt-get update sudo apt-get install sun-java6-jdk |
Python 2.4 - 2.7, который можно загрузить из python.org или:
1 |
sudo apt-get install python |
Git 1.7 или новее. Вы можете найти его в git-scm.com или:
1 |
sudo apt-get install git-core |
Установите необходимые пакеты. 64-bit (рекомендуется):
1 |
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 возможно потребуется выполнить следующие действия:
1 |
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so |
В Ubuntu 12.04 в настоящее время есть только экспериментальная поддержка и не гарантируется работа по другим веткам отличным от master.
1 2 |
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 |
Теперь настроим USB:
1 |
sudo gedit /etc/udev/rules.d/51-android.rules |
Вставьте это внутрь пустого текстового файла
1 |
#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" |
Сохраните файл и закройте его, а затем выполните следующую команду:
1 |
sudo chmod a+r /etc/udev/rules.d/51-android.rules |
Установите repo:
1 2 3 4 |
mkdir ~/bin PATH=~/bin:$PATH curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repo |
Запустите repo:
1 2 3 |
mkdir WORKING_DIRECTORY cd WORKING_DIRECTORY repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r1 |
Для людей у которых уже есть готовый repo:
1 2 3 |
cd WORKING_DIRECTORY repo init -b android-4.1.1_r1 repo sync |
Если потребуется, введите ваше имя и адрес электронной почты.
Соберите файлы:
1 |
repo sync |
Скомпилируйте:
1 |
source build/envsetup.sh |
или
1 |
. build/envsetup.sh |
Запуск:
1 |
lunch |
Выберите свое устройство.
Теперь выполните команду:
1 |
make -j# |
Где решётка (#) - это число ядер процессора + 1, например у меня есть 2-ядерный процессор, то я пишу "make -j3".
Как добавить устройство в список
Найдите на GitHub устройства, которые вы хотите добавить (для меня это HTC Evo 3D-CDMA). Теперь перейдите в папку куда вы собираетесь клонировать дерево устройства:
1 2 |
cd WORKING_DIRECTORY/device mkdir htc |
Клонируйте с GitHub дерева устройства с удаленного на локальный (удостоверьтесь, что папка будет называться так же, как стандартное имя для вашего устройства, например: Nexus One [passion], Nexus S [crespo] Motorola Droid [sholes], HTC Incredible [inc] и т.д.):
1 |
git clone git://github.com/CyanogenMod/android_device_htc_shooter.git shooter |
Теперь перейдите в папку:
1 |
cd shooter |
Подключите телефон к компьютеру и убедитесь, что отладка для USB включена и adb работает должным образом. Извлеките собственные файлы устройства:
1 |
./extract-files.sh |
Вернитесь в свой домашний каталог
1 |
cd ~/WORKING_DIRECTORY |
Подготовьтесь к компиляции:
1 |
source build/envsetup.sh |
или
1 |
. build/envsetup.sh |
Получите список ваших устройств:
1 |
lunch |
Выберите свое устройство, затем компилируйте:
1 |
make -j# |
Или для создания zip архива для прошивки:
1 |
make -j# otapackage |
В итоге получаем скомпилированный Jelly Bean под определенное устройство. Теперь можно попробовать запустить его на вашем устройстве, посмотреть что работает, а что нет, затем заняться оптимизацией новой версии Android, сделать свою прошивку на базе AOSP и т.д.