Android є найбільш широко використовуваною мобільною операційною системою у світі. І найкраща частина, це повністю відкритий вихідний код, що, кажучи неспеціалістом, означає, що вихідний код, фактична програма, відкрито доступна для кожного для завантаження, налаштування та створення власних ПЗУ.
Існує багато користувальницьких дистрибутивів Android, серед яких є популярні CyanogenMod, SlimROM, Paranoid Android, AOKP, Liquid Smooth, MIUI, Xylon, Ice Cold Jelly тощо.
Для сьогоднішнього посібника ми зіберемо CyanogenMod 10.2, найпопулярніший ROM для Android. Процедура на 99% однакова для всіх користувальницьких ПЗУ, тому цей посібник можна використовувати як посилання для компіляції інших ПЗУ.
Передумови
- Телефон Android із легкодоступним ядром і джерелом пристрою, уже вкорінений та з встановленим спеціальним відновленням.
- 64-розрядний дистрибутив Linux (ми віддаємо перевагу Ubuntu).
- Принаймні 100 ГБ безкоштовно на вашому жорсткому диску.
- Знання роботи з командами терміналу Linux.
- Досить швидке підключення до Інтернету.
Зауважте: 64-розрядна ОС Linux є обов’язковою, і це має бути рідна інсталяція, а не віртуальна машина.
Налаштуйте свою машину для складання
1. Встановіть ОС Linux на ваш вибір: 64-розрядна версія, згідно з офіційними інструкціями. (Посібник буде вважати, що ми використовуємо Ubuntu 13.04). Зберігайте розділ розміром щонайменше 100 ГБ за допомогою розділу підкачки 16 ГБ.
2. Встановіть наступний список пакетів: Відкрийте програму Terminal і введіть
[html]sudo apt-get install [/html]
натисніть Enter, і вам буде запропоновано ввести пароль.
список пакетів
[html]
git-core
gnupg
flex
бізон
пітон
ЕОР
оригінальний-awk
гаук
p7zip-повний
gperf
libsdl1.2-dev
libesd0-dev
libwxgtk2.6-dev
сквош-інструменти
будувати-істотне
ZIP
витися
libncurses5-dev
zlib1g-dev
pngcrush
schedtool
libc6-dev
x11proto-core-dev
libx11-dev
libg11-mesa-dev
mingw32
тофродос
python-markdown
libxml2-утиліти
g++-multilib
lib32z1-dev
ia32-libs
lib32ncurses5-dev
lib32readline-gplv2-dev
gcc-multilib
g++-multilib
xsltproc
[/ html]
3. Встановіть Java JDK 1.6 для 64-розрядної Linux: Ім’я файлу має бути jdk-6u##-linux-x64.bin, ## – номери версій. Перемістіть завантажений пакет у свій домашній каталог. Відкрийте програму Terminal і виконайте наступний набір команд:
[html]
sudo apt-get purge openjdk-\* icedtea-\* icedtea6-\*
sudo mkdir –p /opt/java/64/
sudo cp jdk-6u##-linux-x64.bin /opt/java/64
на південь -
компакт-диск /opt/java/64
chmod a+x jdk-6u##-linux-x64.bin
./jdk-6u##-linux-x64.bin
вихід
[/ html]
Тепер ми повинні додати шлях JDK до .bashrc
[html]
sudo gedit ~ / .bashrc
[/ html]
Додайте ці рядки в кінці текстового файлу
[html]
# Шлях Java
експорт JAVA_HOME=/opt/java/64/jdk1.6.0_##
експорт PATH=$PATH:$JAVA_HOME/bin
[/ html]
4. Установіть Android SDK: Відкрийте програму Terminal
[html]
CD ~
mkdir android && cd android
mkdir sdk
[/ html]
Завантажте Android SDK з http://developer.android.com/sdk/index.html. Витягніть вміст пакета в ~/android/sdk. Ми повинні додати шлях Android SDK до .bashrc
[html]
sudo gedit ~ / .bashrc
[/ html]
Додайте ці рядки в кінці текстового файлу:
[html]
# Шлях Android SDK
експорт PATH=$PATH:~/android/sdk
експорт PATH=$PATH:~/android/sdk/platform-tools
експорт PATH=$PATH:~/android/sdk/tools
[/ html]
Тепер встановіть інструменти Android SDK, ввівши
[html]
чоловіча
[/ html]
5. Налаштуйте свій обліковий запис github і віддалене репо: Ви можете пропустити цей крок, якщо CyanogenMod офіційно підтримує ваш телефон. Перейдіть на github.com і створіть обліковий запис для себе. У цьому посібнику я розглядаю ваше ім’я користувача як «користувач».
Відвідайте «github.com/CyanogenMod/android», натисніть «Форк». Віддалений маніфест буде розділений і доступний у вашому особистому репо.
Тепер перейдіть до 'github.com/user/android'. Відкрийте файл default.xml, натисніть Редагувати. Знайдіть цей рядок:
[html]
[/ html]
І замініть це на
[html]
[/ html]
Я думаю, що джерело ядра вашого пристрою, джерело пристрою та бібліотеки постачальника для Android 4.3 будуть на
[html]
github.com/user2/kernel_source
github.com/user2/device_source
github.com/user2/device-common_source
github.com/user2/vendor
[/ html]
Я припускаю, що гілка буде називатися "jb4.3". Ви можете знайти точну назву в фактичному репо. Потім в кінці файлу додайте ці рядки, змінивши їх відповідно до вихідного коду вашого пристрою.
[html]
[/ html]
Зафіксуйте свої зміни. Ваш віддалений маніфест готовий до розгортання.
6. Установіть команду Repo: Відкрийте термінал і введіть
[html]
CD ~
mkdir ~ / bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a + x ~ / bin / repo
[/ html]
Ми повинні додати шлях до .bashrc
[html]
sudo gedit ~ / .bashrc
[/ html]
Додайте цей рядок у кінець текстового файлу
[html]
експорт PATH=$PATH:~/bin
[/ html]
7. Отримайте вихідний код ПЗУ: Відкрийте термінал і введіть
[html]
mkdir ~/android/cm
cd ~/android/cm
[/ html]
Якщо вам потрібен крок 5, введіть
[html]
repo init –u git://github.com/user/android.git –b cm-10.2
[/ html]
Якщо ваш пристрій офіційно підтримує CyanogenMod 10.2, введіть
[html]
repo init –u git://github.com/CyanogenMod/android.git –b cm-10.2
[/ html]
Біжи
[html]
синхронізація репо –j16
[/ html]
Іди випий кави чи поїсти, це займе багато часу. Розмір вихідного коду значно перевищує 10 ГБ, тому це займе досить багато часу.

8. Налаштуйте параметри пристрою: Якщо ваш пристрій офіційно підтримує CyanogenMod 10.2, відкрийте термінал і введіть
[html]
cd ~/android/cm
. build/envsetup.sh && сніданок
[/ html]
Це займе деякий час, джерело пристрою має розмір близько 3 Гб. Потім вам потрібно встановити офіційний CM10.2 на вашому телефоні, підключити його до комп’ютера в режимі USB Debugging і виконати такі команди:
[html]
корінь adb
cd ~/android/cm/device/ / /
./extract-files.sh
[/ html]
Якщо ваш пристрій офіційно не підтримує CyanogenMod 10.2, то вам нічого робити на цьому кроці, джерела вже чекають на вас.
9. Завантажте готові матеріали та налаштуйте Toolchain: Відкрийте термінал і введіть
[html]
cd ~/android/cm/vendor/cm
sh ./get-prebuilts
[/ html]
Тепер ми повинні додати шлях до ланцюга інструментів до ./bashrc
[html]
cd ~/android/cm
sudo gedit ~ / .bashrc
[/ html]
Додайте ці рядки в кінець текстового файлу
[html]
# Android Toolchain
експорт ARCH=рука
експорт CCOMPILE=$CROSS_COMPILE
експорт CROSS_COMPILE=arm-eabi-
експорт PATH=$PATH:~/android/cm/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
[/ html]
10. Створіть свій ROM: Отже, все в порядку і готово. Настав час створити ПЗУ. Відкрийте термінал і введіть
[html]
cd ~/android/cm
. build/envsetup.sh
бранч
[/ html]
Час подрімати. Щоб створити ПЗУ на середньому комп’ютері, знадобиться мільйон років. Що ж, це було перебільшенням, але на моєму домашньому ПК (Core i5 2-го покоління з 8 ГБ оперативної пам’яті) для створення з нуля потрібно більше 3 годин. Сподіваюся, помилок не буде, і збірка завершиться нормально. Ви отримаєте вихідний пакет
[html]
~/android/cm/out/target/product/ /см-10.2-щось-НЕОФІЦІЙНО- .zip
[/ html]
Настав час встановити на телефон нещодавно скомпільований ROM. Завантажте пакет Google Apps із «www.goo.im/gapps» для відповідної версії Android. Помістіть обидва ці пакунки в телефон і прошіть їх у режимі відновлення. Вуаля, ваш власний скомпільований ROM тепер працює на вашому пристрої.
Отже, ви навчилися скомпілювати ROM. Ну і що тепер?
Оновіть вихідний ПЗУ
Щоб отримати нові оновлення вихідного коду вашого локально завантаженого вихідного коду, відкрийте термінал і введіть
[html]
cd ~/android/cm
синхронізація репо –j16
[/ html]
Щоб створити ROM, після оновлення вихідного коду відкрийте термінал і введіть
[html]
cd ~/android/cm
зробити установку чистою
знайти ./out/ -name 'build.prop' | xargs rm
знайти ./out/ -name 'cm_ -target_files-eng.*.zip' | xargs rm
. build/envsetup.sh
бранч
[/ html]
Оскільки ви збираєтеся не з нуля, а перебудовуєте як є, це займе значно менше часу, лише приблизно 15-30 хвилин у більшості випадків. Ви повинні синхронізувати своє локальне джерело щотижня або близько того, щоб локальне джерело залишалося свіжим.
Очистіть свій робочий каталог
Щоб повністю очистити робочий каталог (прочитайте: повернути вихідну папку до вихідного стану), відкрийте термінал і введіть наступні команди.
[html]
cd ~/android/cm
зробити установку чистою
зробити клоббер
[/ html]
Майте на увазі, що після виконання цих команд усі ваші вихідні дані будуть видалені, тому наступна збірка знову займе 3-4 години, оскільки все буде перебудовано з нуля. Якщо ваш розділ жорсткого диска невеликий, скажімо, близько 100 ГБ, вам слід очищати робочий каталог приблизно раз на 4 збірки, інакше у вас закінчиться місце на жорсткому диску.
Прискоріть збірку за допомогою CCACHE
Створення ПЗУ займає багато часу. Але за допомогою CCACHE час можна скоротити приблизно на 30-45%. CCACHE означає кеш компілятора, він кешує вихідні дані компіляції з ваших попередніх збірок, щоб його можна було повторно використовувати в наступних збірках.
Зауважте, що CCACHE потребує багато місця на вашому жорсткому диску для кешування вмісту, тому його рекомендується використовувати тільки тоді, коли ваш розділ жорсткого диска знаходиться десь близько 200 ГБ або більше. Щоб налаштувати CCACHE, відкрийте термінал і введіть:
[html]
cd ~/android/cm
експорт USE_CCACHE=1
експорт CACHE_DIR=~/.ccache
prebuilts/misc/linux-x86/ccache/ccache –M 50G
[/ html]
Ви можете змінити максимальний розмір розподілу для CCACHE з 50 ГБ на будь-який, який забажаєте, але для хороших результатів слід використовувати мінімум близько 30 ГБ.
Отримати коміти з інших ROM
Ви можете вибрати функції з вихідного коду інших ПЗУ. Скажімо, наприклад, я хочу вибрати функцію A з ідентифікатором фіксації «12345» із репозиторію «github.com/user/reporepo».
Ви переходите до пакета у вашому локальному вихідному коді та запускаєте їх у терміналі.
[html]
CD ~/
git отримати https://github.com/user/reporepo
git cherry-pick 12345
[/ html]
Посилання на вихідний код відомих дистрибутивів користувацького ПЗУ Android
CyanogenMod – https://github.com/CyanogenMod
SlimROM – https://github.com/SlimRoms
ПараноїдАндроїд – https://github.com/ParanoidAndroid
АОКП – https://github.com/AOKP
LiquidSmooth – https://github.com/liquidsmooth
Xylon ROM -
Крижане желе – https://github.com/IceColdJelly
Отже, хлопці, простий і зрозумілий посібник зі складання практично будь-якого ПЗУ на базі Android AOSP за 10 простих кроків. Хоча мій посібник зосереджується на CyanogenMod, ви можете зібрати майже кожен AOSP ROM, просто змінивши посилання на репозиторій. Або ви можете просто вибрати функції, зафіксувати їх, змінити речі та створити власний персоналізований ROM, можливо, також поділитися своїм ROM онлайн?
привіт, дякую за цю статтю, сьогодні цей світ Android поширюється як епідемія, тому гарна стаття
Вражаючі роботи! Я дійсно хочу створити власний код для своїх програм!
Мені дуже подобається бачити цей код, але якусь частину цього коду я не можу зрозуміти.
привіт Шонак,
Android дійсно широко поширений у всьому світі. і дякую за цей чудовий пост
Чудово. Тепер, якби я міг зрозуміти ці терміни. Тоді я можу скомпілювати ROM Android