Что нам нужно:
Что мы делаем:
1. Логинимся под Ubuntu, открываем терминал и устанавливаем необходимы библиотеки:
- для 32-bit & 64-bit систем:
ВАЖНО! Если у вас Ubuntu 10.10 необходимо также добавить репозиторий для установки java, для этого выполняем в терминале:
3. Устанавливаем репозиторий, для загрузки исходников прошивки:
2. Если вы уже ранее собирали прошивки и repo устанавливали — данный шаг можно пропустить.
4. Загружаем исходники cyanogenmod 7:
Набираемся терпения, загрузка исходников дело длительное. Лично у меня при наличии 80 Мбит/с на «внешний мир» загрузка исходников длится порядка 4 часов.
ВАЖНО! Если во время загрузки произошел обрыв сессии, не расстраиваемся и снова выполняем команду загрузки — загрузка продолжится с места обрыва:
5. Далее возможны два варианта развития наших действий:
а) девайс для которого мы собираем прошивку официально поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для HTC Wildfire);
б) девайc для которого мы собираем прошивку официально НЕ поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для Huawei U8100/8110/8120).
Вариант а.
1) Копируем проприетарные файлы.Дело в том, что хотя мы и собираем прошивку «с нуля», но есть библиотеки, которые нельзя собрать из исходников, по причине того, что поставщик данного «железа» не предоставил их (=)). Для этого подключаем рабочий девайс HTC Wilfire с последней официальной прошивкой «на борту» к ПК при помощи usb-шнура и выполняем в терминале:
Вариант б.
1) Загружаем «дерево устройства» для нашего девайса. «Дерево устройства» это набор конфигурационных файлов с настройками для определенного девайса. Если девайс официально поддерживается, то данное «дерево устройства» уже есть в ранее загруженных нами исходниках. Если нет, то его необходимо загрузить из стороннего источника. Самый оптимальный вариант, это GitHub — самый большой веб-сервис для хостинга проектов и их совместной разработки. Получить готовое дерево можно двумя путями:
Скачать готовое дерево с GitHub-а. В данном примере, поскольку мы создаем прошивку для huawei u81хх, то качаем дерево устройства тут. Полученный архив распаковываем в ранее скачанные нами исходники, по пути: ~android/system/device/huawei/u8120
(папку huawei создаем самостоятельно, в нее распаковываем наше «дерево устройства» и переименовываем в u8120).
Создать новое дерево самостоятельно. Для этого заходим в ранее скачанных исходниках по пути device/huawei (я выбрал huawei так как собираю прошивку для телефона этого производителя. Если вы портируете прошивку для другого устройства, найдите в папке device наиболее подходящее по железу устройство) и копируем папку, например, u8150 — данный аппарат на текущий момент официально поддерживается. Скопированную папку переименовываем в u8120 (ну, или имя вашего аппарата), и во всех файлах внутри заменяем аккуратно слово u8150 на u8120 (ну, или имя вашего аппарата). Обязательно правим файлы device_u8110.mk и BoardConfig.mk — они фактически являются конфиг-файлами для сборки прошивки. Например, по умолчанию в файле BoardConfig.mk есть строка: BOARD_WLAN_DEVICE := ar6000 - где ar6000 имя модуля Wi-Fi, но значение ar6000 может быть разным для разных устройств. Тут нужно немного подумать и погуглить. После некоторых манипуляций получаем готовое дерево для нашего аппарата.
2) Копируем проприетарные файлы. О них более детально я рассказывал выше. Подключаем девай Huawei u8120 к ПК при помощи usb-шнура и выполняем в терминале
3) Загружаем готовое ПО для прошивки (RomManager, подробнее в п. а.2). Выполняем в терминале:
4) Подготавливаем исходники. Поскольку мы занимаемся в этом примере портированием, а версия исходников 7,х не понимает без предварительных манипуляций, что новая папка с деревом устройства и есть портированием, то нам необходимо исходники немного поправить.
- редактируем файл vendor/cyanogen/vendorsetup.sh добавив в него строку add_lunch_combo cyanogen_u8120-eng - копируем файл, как наиболее подходящий
- редактируем файл vendor/cyanogen/products/AndroidProducts.mk добавив строку $(LOCAL_DIR)/cyanogen_u8120.mk
5) Собираем прошивку: Переходим в папку с исходниками и выполняем команды:
- Нужен ПК с 64-битной или 32-битной (в отличии от сборки cyanpgenmod 9) Ubuntu (ну или любой другой Linux ОС).
- Нужен высокоскоростной интернет. Для сборки прошивки из исходников — необходимы сами исходники, а это порядка 10 ГБайт информации (и это в сжатом виде, после распаковки 12-14 ГБайт места на ПК).
- Много терпения и самое главное ЖЕЛАНИЕ! Сборка прошивки cyanogenmod 7 если ваше устройство официально поддерживается не вызовет особых проблем, а вот если устройство официально не поддерживает и вы фактически занимаетесь портированием — процесс сборки будет несколько сложнее, в сравнении с cyanogenmod 9.
Что мы делаем:
1. Логинимся под Ubuntu, открываем терминал и устанавливаем необходимы библиотеки:
- для 32-bit & 64-bit систем:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool- только для 64-bit систем:
sudo apt-get install g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib
ВАЖНО! Если у вас Ubuntu 10.10 необходимо также добавить репозиторий для установки java, для этого выполняем в терминале:
sudo add-apt-repository «deb http://archive.canonical.com/ maverick partner»2. Создаем необходимые директории на ПК:
mkdir -p ~/bin- название не менять (!)
mkdir -p ~/android/system- тут можно создать любую директорию, лично для вашего удобства, например, не system, а cyanogenmod
3. Устанавливаем репозиторий, для загрузки исходников прошивки:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo chmod a+x ~/bin/repoВАЖНО! 1. Для вступления изменений в силу перезагружаем ПК.
2. Если вы уже ранее собирали прошивки и repo устанавливали — данный шаг можно пропустить.
4. Загружаем исходники cyanogenmod 7:
cd ~/android/system/- переходим в ранее созданную папку для исходников
repo init -u git://github.com/CyanogenMod/android.git -b gingerbread repo sync -j16- загружаем исходники
Набираемся терпения, загрузка исходников дело длительное. Лично у меня при наличии 80 Мбит/с на «внешний мир» загрузка исходников длится порядка 4 часов.
ВАЖНО! Если во время загрузки произошел обрыв сессии, не расстраиваемся и снова выполняем команду загрузки — загрузка продолжится с места обрыва:
repo sync -j16
5. Далее возможны два варианта развития наших действий:
а) девайс для которого мы собираем прошивку официально поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для HTC Wildfire);
б) девайc для которого мы собираем прошивку официально НЕ поддерживается cyanogenmod-м (в качестве примера будем собирать прошивку для Huawei U8100/8110/8120).
Вариант а.
1) Копируем проприетарные файлы.Дело в том, что хотя мы и собираем прошивку «с нуля», но есть библиотеки, которые нельзя собрать из исходников, по причине того, что поставщик данного «железа» не предоставил их (=)). Для этого подключаем рабочий девайс HTC Wilfire с последней официальной прошивкой «на борту» к ПК при помощи usb-шнура и выполняем в терминале:
cd ~/android/system/device/htc/buzz/ ./extract-files.sh2) Загружаем RomManager.Часть ПО, используемая в прошивках СМ, не собирается из исходников, а загружается в уже собранном виде. Именно таким ПО является RomManager. Для загрузки данного ПО:
~/android/system/vendor/cyanogen/get-rommanager3) Собираем прошивку. Финальный этап.Для этого в терминале выполняем:
. build/envsetup.sh && brunch buzz- вместо buzz используется другое название, в случае сборки прошивки для другого девайса.
Вариант б.
1) Загружаем «дерево устройства» для нашего девайса. «Дерево устройства» это набор конфигурационных файлов с настройками для определенного девайса. Если девайс официально поддерживается, то данное «дерево устройства» уже есть в ранее загруженных нами исходниках. Если нет, то его необходимо загрузить из стороннего источника. Самый оптимальный вариант, это GitHub — самый большой веб-сервис для хостинга проектов и их совместной разработки. Получить готовое дерево можно двумя путями:
Скачать готовое дерево с GitHub-а. В данном примере, поскольку мы создаем прошивку для huawei u81хх, то качаем дерево устройства тут. Полученный архив распаковываем в ранее скачанные нами исходники, по пути: ~android/system/device/huawei/u8120
(папку huawei создаем самостоятельно, в нее распаковываем наше «дерево устройства» и переименовываем в u8120).
Создать новое дерево самостоятельно. Для этого заходим в ранее скачанных исходниках по пути device/huawei (я выбрал huawei так как собираю прошивку для телефона этого производителя. Если вы портируете прошивку для другого устройства, найдите в папке device наиболее подходящее по железу устройство) и копируем папку, например, u8150 — данный аппарат на текущий момент официально поддерживается. Скопированную папку переименовываем в u8120 (ну, или имя вашего аппарата), и во всех файлах внутри заменяем аккуратно слово u8150 на u8120 (ну, или имя вашего аппарата). Обязательно правим файлы device_u8110.mk и BoardConfig.mk — они фактически являются конфиг-файлами для сборки прошивки. Например, по умолчанию в файле BoardConfig.mk есть строка: BOARD_WLAN_DEVICE := ar6000 - где ar6000 имя модуля Wi-Fi, но значение ar6000 может быть разным для разных устройств. Тут нужно немного подумать и погуглить. После некоторых манипуляций получаем готовое дерево для нашего аппарата.
2) Копируем проприетарные файлы. О них более детально я рассказывал выше. Подключаем девай Huawei u8120 к ПК при помощи usb-шнура и выполняем в терминале
cd ~/android/system/device/huawei/u8120/ ./extract-files.shКроме того, возможен вариант извлечения проприетарных файлов из архива прошивки, а не с рабочего девайса. Это возможно при помощи скрипта unzip-files.sh (если таковой имеется в «дереве файлов»), но об этом подробнее в случае необходимости (=)).
3) Загружаем готовое ПО для прошивки (RomManager, подробнее в п. а.2). Выполняем в терминале:
~/android/system/vendor/cyanogen/get-rommanager
4) Подготавливаем исходники. Поскольку мы занимаемся в этом примере портированием, а версия исходников 7,х не понимает без предварительных манипуляций, что новая папка с деревом устройства и есть портированием, то нам необходимо исходники немного поправить.
- редактируем файл vendor/cyanogen/vendorsetup.sh добавив в него строку add_lunch_combo cyanogen_u8120-eng - копируем файл, как наиболее подходящий
cp vendor/cyanogen/products/cyanogen_u8150.mk vendor/cyanogen/products/cyanogen_u8120.mkоткрываем его и во всех случаях заменяем u8150 на u8120.
- редактируем файл vendor/cyanogen/products/AndroidProducts.mk добавив строку $(LOCAL_DIR)/cyanogen_u8120.mk
5) Собираем прошивку: Переходим в папку с исходниками и выполняем команды:
. build/envsetup.sh breakfastпоявится список устройств и предложение указать наше устройство. Ищем наш девайс и указываем его номер по порядку. После ввода номера нажимаем «Ввод». Выполняем
brunch u81206. В лучшем случае, сборка прошивки по времени занимает порядка 4-6 часов, в зависимости от ПК. На моем новом ноуте с процессором i5 (4 ядра) и 4-мя гигами оперативки, на сборку прошивки уходит ровно 42 минуты.