Android - самая широко используемая мобильная операционная система в мире. И что самое приятное, это полностью открытый исходный код, что с точки зрения непрофессионала означает, что исходный код, фактическая программа, доступна для всех, чтобы загрузить, настроить и создать свои собственные ПЗУ.
Доступно множество пользовательских дистрибутивов Android, самыми популярными из которых являются CyanogenMod, SlimROM, Paranoid Android, AOKP, Liquid Smooth, MIUI, Xylon, Ice Cold Jelly и т. Д.
В рамках сегодняшнего руководства мы скомпилируем CyanogenMod 10.2, самую популярную прошивку для вторичного рынка Android. Процедура на 99% одинакова для всех пользовательских ПЗУ, поэтому это руководство можно использовать в качестве справочника и для компиляции других ПЗУ.
Предварительные условия
- Телефон Android с легкодоступным ядром и источником устройства, уже внедренным и с установленным пользовательским восстановлением.
- 64-битный дистрибутив Linux (мы предпочитаем Ubuntu).
- По крайней мере, 100 ГБ свободного места на жестком диске.
- Практическое знание команд терминала Linux.
- Достаточно быстрое интернет-соединение.
Обратите внимание: 64-битная ОС Linux является обязательной, и это должна быть собственная установка, а не виртуальная машина.
Настройте свою сборочную машину
1. Установите ОС Linux по вашему выбору: 64 битная версия, согласно официальной инструкции. (В руководстве предполагается, что мы работаем с Ubuntu 13.04). Сохраните раздел размером не менее 100 ГБ с разделом подкачки 16 ГБ.
2. Установите следующий список пакетов: Откройте приложение "Терминал" и введите
[html] sudo apt-get install [/ html]
нажмите Enter, и вам будет предложено ввести пароль.
Список пакетов
[HTML]
git-ядро
GnuPG
сгибать
бизон
питон
редкий
оригинал-awk
простофиля
p7zip-полный
gperf
libsdl1.2-dev
libesd0-dev
libwxgtk2.6-dev
squashfs-инструменты
строительный
застежка-молния
виться
libncurses5-dev
zlib1g-dev
Pngcrush
инструмент планирования
libc6-dev
x11proto-core-dev
libx11-dev
libg11-mesa-dev
mingw32
тофродос
Python-уценка
libxml2-утилиты
g ++ - мультибиблиотечный
lib32z1-dev
ia32-библиотеки
lib32ncurses5-dev
lib32readline-gplv2-dev
gcc-Multilib
g ++ - мультибиблиотечный
xsltproc
[/ Html]
3. Установите Java JDK 1.6 для 64-разрядной версии Linux: Имя файла должно быть jdk-6u ## - linux-x64.bin, ## - номера версий. Переместите загруженный пакет в свой домашний каталог. Откройте приложение Терминал и выполните следующий набор команд:
[HTML]
sudo apt-get purge openjdk - \ * icedtea - \ * icedtea6 - \ *
sudo mkdir –p / opt / java / 64 /
sudo cp jdk-6u ## - linux-x64.bin / opt / java / 64
на юг -
cd / opt / java / 64
chmod a + x jdk-6u ## - linux-x64.bin
./jdk-6u##-линукс-x64.bin
выход
[/ Html]
Теперь мы должны добавить JDK Path в .bashrc
[HTML]
sudo gedit ~ / .bashrc
[/ Html]
Добавьте эти строки в конец текстового файла
[HTML]
# Путь к Java
экспорт JAVA_HOME = / opt / java / 64 / jdk1.6.0 _ ##
экспорт ПУТЬ = $ ПУТЬ: $ JAVA_HOME / bin
[/ Html]
4. Установите Android SDK: Открыть приложение "Терминал"
[HTML]
CD ~
mkdir android && cd android
мкдир сдк
[/ 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 Tools, набрав
[HTML]
android
[/ Html]
5. Настройте учетную запись github и удаленное репо: Вы можете пропустить этот шаг, если CyanogenMod официально поддерживает ваш телефон. Зайдите на github.com и создайте аккаунт. В этом руководстве я рассматриваю ваше имя пользователя как «пользователь».
Посетите github.com/CyanogenMod/android, нажмите Fork. Удаленный манифест будет разветвлен и доступен в вашем личном репо.
Теперь перейдите на github.com/user/android. Откройте файл default.xml, нажмите Edit. Найдите эту строку:
[HTML]
[/ Html]
И замените это на
[HTML]
[/ Html]
Я считаю, что исходный код вашего устройства, исходный код устройства и библиотеки поставщиков для Android 4.3 находятся на
[HTML]
github.com/user2/kernel_source
github.com/user2/источник_устройства
github.com/user2/device-common_source
github.com/user2/вендор
[/ Html]
Я предполагаю, что ветка будет называться jb4.3. Вы можете найти точное название в реальном репо. Затем в конце файла добавьте эти строки, изменив их в соответствии с исходным кодом вашего устройства.
[HTML]
[/ Html]
Зафиксируйте свои изменения. Ваш удаленный манифест готов к развертыванию.
6. Установите команду репо: Откройте Терминал и введите
[HTML]
CD ~
mkdir ~ / bin
завиток https://dl-ssl.google.com/dl/googlesource/git-repo/repo> ~ / bin / repo
chmod a + x ~ / bin / репо
[/ Html]
Мы должны добавить путь репо в .bashrc
[HTML]
sudo gedit ~ / .bashrc
[/ Html]
Добавьте эту строку в конец текстового файла
[HTML]
экспорт ПУТЬ = $ ПУТЬ: ~ / bin
[/ Html]
7. Загрузите исходный код ПЗУ: Откройте Терминал и введите
[HTML]
mkdir ~ / android / см
cd ~ / android / см
[/ Html]
Если вам нужен шаг 5, введите
[HTML]
repo init –u git: //github.com/user/android.git –b cm-10.2
[/ Html]
Если ваше устройство официально поддерживает CyanogenMod 10.2, введите
[HTML]
репо init –u git: //github.com/CyanogenMod/android.git –b cm-10.2
[/ Html]
Теперь запустите
[HTML]
синхронизация репо –j16
[/ Html]
Сходи выпей кофе или перекуси, это займет много времени. Размер исходного кода превышает 10 ГБ, так что это займет некоторое время.

8. Настройте параметры устройства: Если ваше устройство официально поддерживает CyanogenMod 10.2, откройте Терминал и введите
[HTML]
cd ~ / android / см
. build / envsetup.sh && завтрак
[/ Html]
Это займет некоторое время, размер исходника устройства около 3Гб. Затем вам необходимо установить на свой телефон официальный CM10.2, подключить его к компьютеру в режиме отладки по USB и выполнить следующие команды:
[HTML]
корень adb
компакт-диск ~ / android / см / устройство / / /
./extract-files.sh
[/ Html]
Если ваше устройство официально не поддерживает CyanogenMod 10.2, то на этом шаге вам нечего делать, источники уже ждут вас.
9. Загрузите Prebuilt Stuff и настройте Toolchain: Откройте Терминал и введите
[HTML]
cd ~ / android / cm / vendor / cm
sh ./get-предварительные сборки
[/ Html]
Теперь мы должны добавить ПУТЬ Toolchain в ./bashrc
[HTML]
cd ~ / android / см
sudo gedit ~ / .bashrc
[/ Html]
Добавьте эти строки в конец текстового файла
[HTML]
# Набор инструментов для Android
экспорт 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 / см
. build / envsetup.sh
поздний завтрак
[/ Html]
Пора вздремнуть. На создание ПЗУ на обычном компьютере уйдет миллион лет. Что ж, это было преувеличением, но на моем домашнем ПК (Core i5 2-го поколения с 8 ГБ ОЗУ) сборка с нуля занимает более 3 часов. Надеюсь, ошибок не будет, и сборка завершится нормально. Вы получите выходной пакет в
[HTML]
~ / android / cm / out / target / product / /cm-10.2-something- НЕОФИЦИАЛЬНО- .zip
[/ Html]
Пришло время установить ваш недавно скомпилированный ROM на ваш телефон. Загрузите пакет Google Apps с www.goo.im/gapps для соответствующей версии Android. Поместите оба этих пакета в свой телефон и прошейте их в режиме восстановления. Вуаля, ваше собственное скомпилированное ПЗУ теперь работает на вашем устройстве.
Итак, вы научились составлять ROM. Что теперь?
Обновите исходное ПЗУ
Чтобы получить новые обновления исходного кода для локально загруженного исходного кода, откройте Терминал и введите
[HTML]
cd ~ / android / см
синхронизация репо –j16
[/ Html]
Чтобы собрать ПЗУ, после обновления исходного кода откройте терминал и введите
[HTML]
cd ~ / android / см
сделать installclean
найти ./out/ -name 'build.prop' | xargs rm
найти ./out/ -name 'cm_ -target_files-eng. *. zip '| xargs rm
. build / envsetup.sh
поздний завтрак
[/ Html]
Поскольку вы не перестраиваете с нуля, а перестраиваете как есть, это займет значительно меньше времени, всего около 15-30 минут в большинстве случаев. Вы должны синхронизировать свой локальный источник каждую неделю или около того, чтобы ваш локальный источник оставался свежим.
Очистите свой рабочий каталог
Чтобы полностью очистить рабочий каталог (читайте: вернуть исходную папку в исходное состояние), откройте Терминал и введите следующие команды.
[HTML]
cd ~ / android / см
сделать installclean
сделать треп
[/ Html]
Имейте в виду, что после выполнения этих команд все ваши выходные данные будут удалены, поэтому следующая сборка снова займет 3-4 часа, так как все создается заново с нуля. Если у вас небольшой раздел жесткого диска, скажем, около 100 ГБ, вам следует очищать рабочий каталог примерно раз в 4 сборки, иначе у вас закончится место на жестком диске.
Ускорьте сборку с помощью CCACHE
Сборка ПЗУ занимает много времени. Но время можно сократить примерно на 30-45% с помощью CCACHE. CCACHE означает кеш компилятора, он кэширует выходные данные компиляции из ваших более ранних сборок, чтобы их можно было повторно использовать в более поздних сборках.
Обратите внимание, что CCACHE требует много места на вашем жестком диске для кэширования содержимого, поэтому рекомендуется, если и только если ваш раздел жесткого диска находится где-то в районе 200 ГБ или выше. Чтобы настроить CCACHE, откройте Терминал и введите:
[HTML]
cd ~ / android / см
экспорт USE_CCACHE = 1
экспорт CACHE_DIR = ~ / .ccache
prebuilts / misc / linux-x86 / ccache / ccache –M 50 ГБ
[/ Html]
Вы можете изменить выделение максимального размера для CCACHE с 50 ГБ на любое, но для хороших результатов следует использовать минимум около 30 ГБ.
Получение коммитов из других ПЗУ
Вы можете выбрать функции из исходного кода других ПЗУ. Скажем, например, я хочу выбрать функцию A с идентификатором фиксации «12345» из репозитория «github.com/user/reporepo».
Вы переходите к пакету в локальном исходном коде и запускаете его в Терминале.
[HTML]
cd ~ /
git выборка https://github.com/user/reporepo
git вишневый выбор 12345
[/ Html]
Ссылки на исходный код известных дистрибутивов пользовательских прошивок Android
CyanogenMod - https://github.com/CyanogenMod
SlimROM - https://github.com/SlimRoms
ParanoidAndroid - https://github.com/ParanoidAndroid
AOKP - https://github.com/AOKP
ЖидкостьГладкая - https://github.com/liquidsmooth
ПЗУ Xylon –
Ледяное желе - https://github.com/IceColdJelly
Итак, вот и все, простое и понятное руководство по компиляции практически любого ПЗУ на базе Android AOSP за 10 простых шагов. Хотя мое руководство посвящено CyanogenMod, вы можете скомпилировать практически любое ПЗУ AOSP, просто изменив ссылки на репозиторий. Или вы можете просто выбрать функции, зафиксировать их, изменить материал и создать свое собственное персонализированное ПЗУ, может быть, также поделиться своим ПЗУ в Интернете?
вишваст
привет, спасибо за эту статью сегодня этот мир Android распространяется как эпидемия, так что хорошая статья
Жюри Рейлс
Впечатляющие работы! Я действительно хочу создать свой собственный код для своих приложений!
Джессика
Мне очень нравится видеть этот код, но некоторые части этого кода я не могу понять.
Шьянтан Деб
привет Шаунак,
Android действительно широко распространен во всем мире. и спасибо за этот замечательный пост
Сьюзи Лэмпман
Большой. Если бы я только мог понять эти термины. Затем я могу скомпилировать ROM Android