編譯 CyanogenMod 10.2 (JellyBean) 並安裝到 HTC One X 手機
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 去建立相對應的 Makefile
cd 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
參考資料
[1] How To Build CyanogenMod Android for HTC One X ("endeavoru")