Нередко мобильные устройства поставляются с неоптимизированными прошивками от производителя, которые после непродолжительного использования начинают работать медленно и нестабильно. Многие сталкивающиеся с таким поведением прошивок люди ищут стандартные решения в сети, при этом некоторые из них собирают собственные прошивки для своих устройств.
Настройка рабочего окружения
Если вы хотите собирать Android-прошивки, вам понадобится установленный на компьютере Linux-дистрибутив, ну а если вы не можете выделить отдельный компьютер для этих целей, вы вполне можете обойтись виртуальной машиной с Linux-системой.
Я буду использовать дружелюбную систему Ubuntu 16.04, что рекомендую и вам.
Требования
- Дистрибутив Linux
- Как минимум 200 ГБ свободного пространства на жестком диске или твердотельном накопителе
- Мощный компьютер с как минимум 4 ГБ оперативной памяти и производительным четырехядерным центральным процессором
- Качественное соединение с сетью Интернет на скорости как минимум 600 КБ/с
Если у вас есть все необходимое, можно начинать работу.
Все приведенные в данной статье команды должны исполняться с помощью приложения Терминал и, разумеется, я не буду повторять это после каждой команды.
Java
Если в вашей системе не установлена виртуальная машина Java, вы можете выполнить следующую команду для ее установки вместе со всеми библиотеками:
sudo apt-get install openjdk-8-jdk
Сборочный инструментарий
Выполните следующую команду для установки сборочного инструментария (ее исполнение может занять достаточно много времени в зависимости от скорости вашего Интернет-соединения):
REPO
Не догадываетесь, что это такое? Ну, это важный инструмент, необходимый для соединения с серверами и загрузки исходных кодов, которые понадобятся впоследствии. Его название происходит от слова “репозиторий”, обозначающего централизованное хранилище определенных ресурсов. В нашем случае в этом хранилище хранятся исходные коды всех программных компонентов, которые будут компилироваться и добавляться в создаваемую прошивку.
Выполните следующую команду для для установки описанного инструмента в свою систему:
CCACHE
Это полезная утилита, которая используется для кэширования бинарных файлов и позволяет сократить время компиляции (примерно на 50%).
Для ее инициализации следует выполнить следующую команду:
ccache -M 50G
Разумеется, вместо приведенного значения вы должны указать количество свободных гигабайт на своем жестком диске.
Для ознакомления с статистикой кэширования следует использовать следующую команду:
ccache -s
Для удаления файлов кэша – следующую команду:
ccache -C
Настройка рабочего окружения почти закончена – осталось открыть файл bash.rc:
sudo nano ~/.bashrc
Теперь следует перейти к последней строке этого файла и вставить в него следующие строки:
export USE_CCACHE=1 export PATH=~/bin:$PATH
Наконец, следует закрыть текстовый редактор и выполнить следующую команду для применения изменений:
source ~/.bashrc
Пришло время перезагрузить систему.
Загрузка исходных кодов
В зависимости от модели вашего устройства, оно может либо официально поддерживаться разработчиками прошивки, либо не поддерживаться ими, но при этом никто не запретит вам собрать неофициальную версию прошивки собственноручно.
Если ваше устройство не поддерживается разработчиками прошивки, ситуация значительно усложнится, ведь вам придется накладывать патчи для достижения совместимости прошивки с ним.
Исходные коды прошивки займут около 20-30 Гб на вашем жестком диске, поэтому в первую очередь следует убедиться в наличии достаточного свободного дискового пространства для их размещения! (Да, отнеситесь к этому серьезно!)
Исходные коды представлены в форме файлов с кодом в основном на языках C и C++, на основе которых впоследствии будут сформированы бинарные файлы, составляющие прошивку. Вам придется загрузить огромное количество таких файлов, причем после их компиляции вы получите файл прошивки объемом в 1 Гб, пригодный для записи на флеш-накопитель вашего устройства. Компиляция может занять очень много времени, но в случае ее успешного завершения вы, в любом случае, получите пригодную к использованию собственную Android-прошивку.
Если вы усвоили всю приведенную выше информацию, можете приступать к загрузке исходных кодов прошивки!
Сначала откройте ваш терминал и используйте команду cd
для перехода в предназначенную для сборки прошивки директорию (я буду считать, что в вашем случае эта директория носит имя "android"
).
Команда для инициализации репозитория:
repo init -u git://github.com/CyanogenMod/android.git -b cm-14.0
(Параметр -b
позволяет выбрать ветвь, доступную в указанном репозитории; в данном случае выбрана ветвь cm-14.0
).
Команда для загрузки исходных кодов:
repo sync -j#
(Вместо символа #
должно использоваться числовое значение, соответствующее количеству одновременно активных потоков загрузки, которое следует выбирать в зависимости от качества сетевого соединения).
Теперь нужно набраться терпения и заняться каким-либо другим делом, ведь загрузка может занять очень много времени.
В данном случае я собирал прошивку CyanogenMod, но вы можете использовать репозиторий вашей любимой Android-прошивки.
Ссылки на репозитории наиболее известных Android-прошивок (на ресурсе GitHub):
Данные прошивки отличаются:
- Дизайном
- Возможностями
- Производительностью
- Временем работы устройства от батареи
- Ошибками (да, не стоит забывать о том, что это проекты от энтузиастов)
Компиляция и сборка прошивки
Я хотел бы напомнить вам о необходимости выполнения следующих требований перед началом работы…
- У вас должен быть современный компьютер, в котором установлен центральный процессор как минимум с четырьмя ядрами.
- В компьютере должны быть установлены как минимум 4 Гб оперативной памяти.
- Также на жестком диске должно иметься как минимум 200 Гб свободного пространства.
Примечание 1: компиляция является поистине ресурсоемкой операцией, требующей значительных затрат электроэнергии ввиду повышения частоты центрального процессора, поэтому я рекомендую установить в компьютер надежную систему охлаждения ведь в случае ее отказа компьютер может выйти из строя (я не шучу, такое уже случалось).
Примечание 2: в процессе компиляции также возрастет нагрузка на жесткий диск вашего компьютера, поэтому не стоит удивляться тому, что после выполнения огромного количества операций чтения и записи в процессе компиляции прошивок он выйдет из строя. Постарайтесь не использовать для этих целей твердотельный накопитель, ведь несмотря на его более высокую скорость подобные нагрузки быстрее выведут его из строя.
Если ваш компьютер удовлетворяет описанным выше требованиям, вы можете начать процесс компиляции!
Перейдите в директорию android
, в которую ранее были загружены исходные коды прошивки.
Если ваше устройство поддерживается разработчиками прошивки, вам придется всего лишь выполнить команды lunch
и build
, в противном случае все будет намного сложнее (придется добавить поддержку устройства, наложить множество патчей и так далее…)
Я предполагаю, что ваше устройство поддерживается, как и мой телефон LG G3, поэтому вам придется выполнить аналогичную последовательность команд:
lunch cm_d855-userdebug
(в данной команде выделено кодовое имя устройства; в моем случае это d855)
make otapackage -j#
(вместо символа решетки должно использоваться числовое значение, соответствующее количеству ядер центрального процессора вашего компьютера)
Позвольте дать краткие пояснения…
- lunch: эта команда необходима для генерации файлов конфигурации, соответствующих вашему устройству; что же касается кодового имени вашего устройства, вы можете без каких-либо сложностей найти его в данной статье.
- make: эта команда позволяет создать результирующий файл с расширением .zip, который может быть использован для прошивки устройства в режиме восстановления; она может выполняться очень долго, впрочем, все зависит от характеристик вашего компьютера. Если вы используете современное аппаратное обеспечение, ее выполнение займет не больше часа.
После окончания процесса компиляции вы получите результирующий файл прошивки с расширением .zip в поддиректории out
, но будьте осторожны, ведь процесс сборки прошивки не так прост, как может показаться на первый взгляд, поэтому в некоторых случаях вам все же придется решать проблемы компиляции и выполнять дополнительные действия в зависимости от целевого устройства.