Создание прошивки для android

 

Одной из ключевых особенностей Android является то, что он с открытым исходным кодом. Исходный код для всей операционной системы, включая ядро, пользовательский интерфейс, библиотеки и ключевые приложения, доступен бесплатно. Это означает, что любой (с нужными техническими навыками) может собрать Android из исходного кода и прошить его на совместимое устройство. Эта гибкость позволила различным группам, некоторым коммерческим и любителям, разрабатывать альтернативные дистрибутивы Android. Они обычно упоминаются как «пользовательские ПЗУ», однако более подходящее название будет «пользовательская прошивка».

Поскольку все необходимые строительные блоки доступны, возможно, вы задались вопросом, насколько сложно создать собственное ПЗУ, свою персональную версию Android! Это действительно возможно, читайте дальше, чтобы узнать больше.

Предупреждение

Прежде чем мы погрузимся в мрачный мир создания пользовательских версий Android, нам нужно сделать паузу и оценить масштабность предстоящей задачи, сохраняя при этом наши ожидания под контролем. Если у вас абсолютно нет опыта программирования, нет опыта использования командной строки (в Linux или macOS) или вы не знаете, что такое «Makefile», тогда это не для вас.

Android – это полноценная операционная система. Он сложен и содержит много разных подсистем. Создание такой сложной и полезной операционной системы, как Android, не произошло за одну ночь. Это означает, что любая настройка, которую вы хотите выполнить, должна начинаться с малого. Чтобы создать альтернативный дистрибутив Android, который радикально отличается, потребуется много, много часов тяжелой работы и преданности делу.

Было сказано, что. Если вы знакомы с написанием кода, если вы немного знакомы с Makefiles и компиляторами, то создание собственной версии Android может быть полезным!

Предпосылки

1

Теоретически было бы возможно создать специальную прошивку Android для любого вычислительного устройства, способного работать под управлением современной операционной системы. Однако, чтобы упростить жизнь, мы ограничимся сборкой Android для устройств с поддержкой «из коробки», а именно для устройств Nexus. Для моей демонстрации я использовал Nexus 5X.

Для сборки Android вам понадобится доступ (и знакомство) с Linux-машиной или Mac. В обоих случаях вы будете часто использовать терминал, и вам нужно быть уверенным в командах оболочки. Я сделал свою первую сборку с использованием виртуальной машины Linux, однако она не распознала Nexus 5X в режиме загрузчика, поэтому я не смог прошить новую прошивку на устройстве. Тогда я переключился на Mac, и он работал без особых проблем.

Вам понадобится 130 ГБ дискового пространства и, вероятно, около 8 ГБ ОЗУ. Я попытался собрать Android с 4 ГБ ОЗУ и столкнулся с множеством проблем. Я также столкнулся с подобными проблемами с 8 ГБ ОЗУ, однако, используя некоторые приемы (см. Ниже), я смог создать успешную сборку.

Учись терпению. Создание Android не быстро. На синхронизацию исходного репозитория с моей локальной машиной ушло почти 24 часа! Кроме того, полная чистая сборка займет несколько часов. Даже после внесения незначительных изменений вам может потребоваться от 10 до 20 минут для сборки. Все зависит от вашего аппаратного обеспечения, однако не ожидайте, что ваша новая версия Android будет запущена через несколько минут.

Версия Android с открытым исходным кодом Android не содержит сервисов Google. Так что такие вещи, как Google Play, YouTube, Gmail и Chrome будут отсутствовать. Есть способы прошить эти «gapps» на вашу собственную прошивку, но я оставлю вас, чтобы узнать, как это сделать. Подсказка: найдите «установить gapps».

Когда начать

Основной процесс заключается в следующем. Загрузите и создайте Android из Android Open Source Project, затем измените исходный код, чтобы получить собственную версию. Просто!

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

Я не буду повторять дословно то, что в инструкции по сборке здесь, однако общие шаги:

  • Настройте среду сборки, включая установку правильных инструментов разработки, Java Development Kit, и правильную настройку всех путей и каталогов.
  • Возьмите источник – это делается с помощью инструмента «Репо» и git.
  • Получите проприетарные двоичные файлы – некоторые драйверы выпускаются только в двоичном виде.
  • Выберите цель – с помощью инструмента «Обед».
  • Начать сборку – используя «make» и Джек.
  • Прошить сборку на ваше устройство – используя adb и fastboot.

Советы и рекомендации по процессу сборки

Все это звучит просто, но на этом пути есть несколько ошибок. Вот некоторые заметки, которые я сделал во время процесса, которые могут оказаться полезными:

Настройка среды сборки – Ubuntu 14.04 является рекомендуемой средой сборки для пользователей Linux и OS X 10.11 для пользователей Mac. Вам необходимо установить OpenJDK 8 в Linux и Oracles JDK 8 в OS X. В OS X вам также необходимо установить Macports вместе с Xcode и инструментами командной строки Xcode. Я использовал OS X 10.12, что вызвало небольшую проблему с устаревшими системными вызовами в 10.12 OS X SDK. Обходной путь здесь: http://palanceli.com/2016/09/25/2016/0925AOSPOnMac/

Возьмите источник – это простой шаг, однако он занимает много времени. Для меня это заняло более 24 часов. Такая большая загрузка происходит только один раз, дальнейшая синхронизация с основным исходным деревом будет инкрементной.

Получите проприетарные двоичные файлы – двоичные драйверы должны быть распакованы в вашем рабочем каталоге.

2

Выберите цель – для Nexus 5X используйте  aosp_bullhead-user

Начать сборку – вы начинаете сборку, используя  make. GNU make может обрабатывать параллельные задачи с аргументом -jN, и обычно используется количество задач N, которое в 1-2 раза превышает количество аппаратных потоков на компьютере, используемом для сборки. Однако, если вы обнаружите, что ваша машина испытывает трудности в процессе сборки, попробуйте что-то вроде «make -j2».

Если вы получаете ошибки сборки, которые кажутся связанными с памятью, особенно с сервером Джек и памятью, то сделайте эти две вещи:

  • export ANDROID_JACK_VM_ARGS = ”- Xmx4g -Dfile.encoding = UTF-8 -XX: + TieredCompilation»
  • измените сервис jack.server.max в $ HOME / .jack-server / config.properties на 1

Если вы изменяете какие-либо настройки сервера Jack (в том числе устанавливаете или изменяете переменную ANDROID_JACK_VM_ARGS), вам необходимо убить сервер Jack и снова запустить make. Используйте ./prebuilts/sdk/tools/jack-admin kill-server, чтобы остановить сервер Jack.

Если вы получаете какие-либо ошибки связи, связанные с сервером Jack, просто запустите сборку заново, что обычно исправляет ее.

Прошивка сборки на ваше устройство – вы найдете adb и fastboot в ./out/host/darwin-x86/bin/ или ./out/host/darwin-x86/bin/ для OS X или Linux соответственно.

Прошить это

3

После успешной сборки и перепрошивки на устройство с помощью «fastboot flashall -w» перезагрузите устройство. То, что вы увидите, это ванильная версия AOSP. Там нет сервисов Google, нет Play Store и только несколько основных приложений. Это голые Android.

Тем не менее, поздравления в порядке. Вам удалось собрать Android из его исходного кода и перенести его на устройство. Это не значит подвиг.

4

настройка

Теперь, когда у вас есть Android, вы можете начать настраивать его и создавать собственные специализированные ПЗУ. Это на самом деле, где все становится сложнее. Вы собираетесь повозиться с внутренностями операционной системы Android, и проблема в том, что Android огромен. Мой рабочий каталог составляет около 120 ГБ данных. Это исходный код, графика, скомпилированные двоичные файлы, инструменты, все. Это много вещей.

Итак, начнем с простого. Вот две простые настройки, которые помогут вам начать, начиная с того, чтобы стать хакером прошивки Android!

Настройте приложение обмена сообщениями

Относительно простой настройкой является изменение одного из готовых приложений. Если бы вы разрабатывали полный альтернативный дистрибутив Android, то изменение или замена некоторых основных приложений были бы полезны. В этом случае мы просто настроим его, однако принципы остаются теми же для более сложных изменений и пересмотров.

Основные приложения находятся в каталоге ./packages/apps/,  и нас интересует приложение Messaging в ./packages/apps/Messaging/ . Дрель вниз через SRC / COM / Android / обмена сообщениями / и редактировать BugleApplication.java . Вы можете отредактировать его в своем любимом графическом редакторе или, если хотите остаться в командной строке, используйте  vi или  nano .

BugleApplication.java является точкой входа для приложения обмена сообщениями. Чтобы упростить задачу, мы собираемся добавить тост, который будет отображаться при первом запуске приложения. В верхней части файла под длинным списком операторов импорта добавьте следующую строку:

7

Теперь найдите функцию onCreate () . Ближе к концу функции, перед последним вызовом Trace.endSection (); добавьте следующие две строки:

8

Сохраните файл и запустите другую сборку с помощью команды  make . Как только сборка будет завершена, прошейте ее на свое устройство и перезагрузите компьютер. Запустите приложение «Сообщения» и найдите тост «Добро пожаловать!». Очевидно, что это простая модификация, однако существует потенциал для изменения любого из приложений по умолчанию любым удобным для вас способом.

5

Больше настроек

Любой уважающий себя пользовательский дистрибутив Android должен содержать некоторую информацию о самом ПЗУ. Для этого мы можем изменить встроенное приложение «Настройки» и добавить некоторую информацию в раздел «О телефоне». Для этого отредактируйте файл  device_info_settings.xml из  ./packages/apps/Settings/res/xml/ и добавьте следующие два раздела внизу файла перед окончательным  тегом </ PreferenceScreen> :

6

Сохраните файл, а затем пересоберите и заново прошейте прошивку на свое устройство. После перезагрузки зайдите в Настройки-> О телефоне и прокрутите вниз:

9

Вышеупомянутое изменение немного взломано, так как на самом деле строки должны быть определены в strings.xml для английского и других языков. Если вы планируете заниматься серьезной разработкой AOSP, вам нужно делать все правильно!

Заворачивать

Две модификации, которые я сделал, являются очень простыми, и есть много других вещей, которые можно сделать, включая предварительную установку других приложений, добавление мелодий и обоев и настройку ядра. Однако я надеюсь, что это дало вам представление о том, что возможно, или, по крайней мере, дало вам представление о том, как создать AOSP и работать с внутренностями Android!


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *