CyanogenMod 是目前最為風行的 Android 第三方改版,原本由 Steve Kondik 創 辦開發,並加入了許多 xda 社群的改版,該團隊也在最近成立了公司 CyanogenMod Inc.
本篇文章以 CyanogenMod 10.2
(簡稱 CM10.2
) 為主,並使用 HTC One X
(Endeavoru)
作為編譯的目標機型。
若您有興趣的是如何編譯 CM9
到你的 HTC OneX,請參考拙作: 編譯 CyanogenMod 9
(ICS) 並安裝到 HTC One X 手機
建立你的開發環境
要能夠編譯 CyanogenMod, 首先要先把開發環境建立好,才能夠在編譯的過程中 順順利利的,以下列出幾個常用的 Linux 建立編譯環境所需要額外安裝的套件。
為了能夠正確編譯你的 CyanogenMod 或是 Android,請使用 64-bit 的 Linux 系統。
Debian /Ubuntu Linux
sudo apt-get install \ build-essential pkg-config zlib1g-dev libusb-dev libqt4-dev \ autoconf libtool git-core gnupg sun-java6-jdk flex bison \ gperf libsdl-dev libesd0-dev libwxgtk2.6-dev zip curl \ libncurses5-dev ia32-libs lib32z1-dev lib32ncurses5-dev \ gcc-multilib g++-multilib
Gentoo Linux
emerge -v \ schedtool cmake bison curl git sun-jdk \ gnupg flex bison gperf libsdl squashfs-tools \ ncurses zlib perl-Switch zip unzip wxGTK \ emul-linux-x86-baselibs emul-linux-x86-compat emul-linux-x86-cpplibs
取得 repo 工具
不論你是要編譯 Android、CyanogenMod 或是 Firefox OS、Ubuntu Touch,你都
會需要 repo
這個命令,因此若你沒有這個命令的話,趕快安裝他吧 :)
下面的指令會將 repo 放到 ~/bin
下
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo export PATH="${PATH}:~/bin"
取得必須的原始碼
建立編譯用的目錄
cm10.2
並切換進去mkdir cm10.2 && cd cm10.2
取得 manifest
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
下載程式碼
repo sync
取得預先編譯好的 app
cd vendor/cm && ./get-prebuilts
取得 HTC One X kernel 和其他可能需要的原始碼
source build/envsetup.sh breakfast endeavoru
取得官方提供的二進制檔案
要取得手機裡面特殊的二進制文件有兩種作法,一個是從你的手機裡面取出,另 外一個則是使用別人已經 備份 在網路上的檔案。
下載別人整理好的二進制檔案
在 Github 上可以找到一些已經整理好 HTC One X 二進制檔的 repo, 修改
.repo/local_manifest/roomservice.xml
,讓他變成下面這樣<?xml version="1.0" encoding="UTF-8"?> <manifest> <project name="CyanogenMod/android_device_htc_endeavoru" path="device/htc/endeavoru" remote="github" /> <project name="CyanogenMod/android_device_htc_tegra3-common" path="device/htc/tegra3-common" remote="github" /> <project name="CyanogenMod/android_kernel_htc_endeavoru" path="kernel/htc/endeavoru" remote="github" /> <project path="vendor/htc/endeavoru" name="coldnew/android_vendor_htc_endeavoru" remote="github" revision="refs/heads/cm-10.2" /> </manifest>
接著再使用 repo 命令來取得原始碼
repo sync
直接從手機裡面取得二進制檔案
若你的手機已經是 Android 4.2 or 以上的版本,你可以透過
extract-files.sh
腳本建立vendor/htc
資料夾。由於必須的腳本並未 被包含在 CM10.2 的android_device_htc_endeavoru
裡面,因此我們要從 CM9 repo 取得必須的腳本cd device/htc/endeavoru wget https://raw.github.com/CyanogenMod/android_device_htc_endeavoru/ics/extract_files.sh chmod +x extract_files.sh wget https://raw.github.com/CyanogenMod/android_device_htc_endeavoru/ics/setup-makefiles.sh chmod +x setup-makefiles.sh
接著在使用
extract-files.sh
取得必須的二進制文件,完成後還要執行setup-makefiles.sh
去建立相對應的 Makefilecd device/htc/endeavoru && ./extract-files.sh ./setup-makefiles.sh
編譯 CyanogenMod
要編譯 CyanogenMod,你只需要再下以下命令,並等待你的 ROM 編譯好即可
croot brunch endeavoru
下載到 HTC One X
若你的 HTC 手機裡面已經將 recovery 更改為 TWRP 或是 CWM 的話,你可以直 接複製編譯好的 ROM 檔案到你的手機裡面,並使用這些 recovery tool 來 安裝新的 image (HBOOT 要先降版本),具體的檔案路徑如下:
out/target/product/endeavoru/cm-10-20131229-UNOFFICIAL-endeavoru.zip
除此之外,你也可以使用 fastboot 命令來燒錄新的 image,以下是操作流程
1. 重新開機到 bootloader
adb reboot-bootloader
2. 查看是否有找到裝置
fastboot devices
3. 燒錄你的新的 image
fastboot flash boot boot.img fastboot flash system system.img
4. 清除 cache 和 user-data
fastboot erase userdata fastboot erase cache
5. 重新啟動你的手機
fastboot reboot