понедельник, 21 января 2013 г.

Как я собирал свой CyanogenMod для HTC Wildfire

Есть у меня мой старенький телефон HTC Wildfire, который уже успел повидать огромную кучу самых разных прошивок, начиная от оффициальной 2.1, заканчивая 2.3 CyanogenMOD. Всё, в принципе, нравилось, но в какой-то момент захотел я собрать сам свой андроид, с блекджеком и шлюхами приложениями что мне надо и, может быть, со своими усовершенствованиями в будущем :)

Поскольку начинать надо с чего-нибудь попроще, решил я просто скомпилировать сам последнюю ночнушку CyanogenMOD. О том, как сделать это с нуля, и будет мой пост.

Всё делалось по инструкции с официального сайта http://wiki.cyanogenmod.org/w/Build_for_buzz, инструкция отличная, за что им огромное спасибо.

Эта же статься мой вольный перевод в законспектированном виде.
Итак, по порядку:

Всё делалось на 64-битной Linux Mint 14

Первым делом идём на сайт гугля и качаем SDK:
http://developer.android.com/sdk/index.html
 Распаковываем архив в домашний каталог или куда больше нравится.

Теперь надо доустановить необходимые в дальнейшем пакеты:
$ sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev openjdk-6-jre openjdk-6-jdk pngcrush schedtool

И ещё, в добавок к 64-битной системе (у меня почему0то не нашёл пакет gcc-4.7-multilib, поэтому я его просто не стал качать):
$ sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-4.7-multilib g++-4.5-multilib 

Далее надо создать 2 дополнительные директории, где будут храниться наши файлы:
$ mkdir -p ~/bin
$ mkdir -p ~/android/system

 Теперь устанавливаем команду repo
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

Теперь добавляем глобальную переменную, чтобы можно было запускать комманду repo из любой папки, а не только из ~/bin:
$ export PATH=${PATH}:~/bin

По совету из того же оригинального Wiki, чтобы не вводить каждый раз эту команду при открытии консоли, можно добавить её в файл ~/.bashrc. 

Введём следующую команду для инициализации репозитория циана:
$ cd ~/android/system/
$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

Надо будет ввести, своё имя (или ник) и e-mail адрес.

Синхронизируем репозиторий с нашим компом:
$ repo sync

С помощью этой команды начнут скачиваться исходники на комп, также в дальнейшем исходники будут сверяться с существующими на сервере, и если на сервере появятся новее, скачиваться на комп.

Теперь запасёмся терпения, поскольку качаться всё это дело будет очень долго.

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

После процедуры синхронизации тянем RomManager:
$ cd ~/android/system/vendor/cyanogen$ ./get-rommanager

До этого момента процесс был одинаковым для всех устройств одинаковым. Теперь пишу конкретно для своего Огонька. Переходим в директорию ~/android/system:
$ . build/envsetup.sh
$ lunch

После ввода последней команды появится список доступных девайсов, там выбираем htc_buzz-userdebug. Жмём цифру, соответствующую девайсу.
Может случиться, что такого девайса нет в списке. Тогда делаем одно из двух:
$ lunch cm_buzz-userdebug
или
$ lunch full_buzz-userdebug

У меня почему-то начала выскакивать ошибка “device/htc/ace/ace.mk” does not exist
Не знаю в чём была проблема, но пришлось сделать следующий ход:

Залез в директорию ~/android/system/vendor/cyanogen/products и немного отредактировал файл AndroidProducts.mk, в котором удалил все строки, оставив следующее:

PRODUCT_MAKEFILES := \
    $(LOCAL_DIR)/cyanogen_buzz.mk \


После этого всё заработало :)

Теперь подключаем свой мобильник к компу через УСБ кабель и выполняем команду:
$ ./extract-files.sh

У меня сразу выпало 2 ошибки, первой оказалась "command not found", которая решилась простым добавлением строки "export PATH=${PATH}:<sdk>/tools:<sdk>/platform-tools" в файл ~/.bashrc. Вместо SDK надо подставить свой путь до папки с SDK. Вторая ошибка вещала о "error: insufficient permissions for device", решил таким образом:

$ su
$ cd android-sdk-linux-linux/tools
$ ./adb kill-server
$ ./adb start-server
$ ./adb devices
$ exit

Ну а теперь остаётся всего лишь скомпилить.

Включаем кэширование для ускорения компиляции:
$ export USE_CCACHE=1

Собсно, компиляция:
$ croot
$ brunch buzz


Ждём n-ое количество минут/часов, после чего вводим
$ cd $OUT

Попадаем в папку, где находится наш образ *.img, который прошиваем обычным образом в рекавери.

Вуаля! 

3 комментария:

  1. Полезно. Спасибо огромное прям, то что искал)) кстати желание то же самое только с кит катом) аппарат HTC One X

    ОтветитьУдалить