一、 背景介绍
当前文章是记录自己HTC G12下载,编译,刷入手机 CyanogenMod 7.1稳定版 Android源码2.3.7,CM 最新也支持Android 4 的版本,只要是CM支持的手机和系统版步骤都是一样的,应该只有下载选择分支时不同,如果想在其他手机编译刷不同版本也可以参考。
二、配置环境
名字 | 版本 | 说明 |
---|---|---|
Ubuntu | 12.04 LTS 32 | 由于是Android 2.3系统限制必须使用32位,如果是Android 4支持64位系统 |
SDK | 《安装配置Android SDK》 | |
USB连接手机 | 《配置识别Android手机》 |
三、下载CyanogenMod 源码
1. 安装编译所需软件,包括JDK
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 libxml2 xsltproc
2. 创建源码下载保存目录
$ mkdir -p ~/bin $ mkdir -p ~/android/system
3. 下载repo命令工具
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ export PATH=${PATH}:~/bin
4.初始化repo参数
$ cd ~/android/system/ $ repo init -u git://github.com/CyanogenMod/android.git -b 分支名
我使用的是
// 此分支支持G12 $ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread-release
可以直接直接通过命令repo sync下载源码,但是由于伟大的母亲把Android 源码相关的网站都墙了,这得多想我们进步啊。。。,可以通过以下脚本下载,目的是如果下载失败自动重新请求下载
#!/bin/bash echo "======start repo sync======" repo sync while [ $? == 1 ]; do echo "======sync failed, re-sync again======" sleep 3 repo sync done
四、编译CyanogenMod 源码
1. 配置Rom Manager,用于把Rom管理相关的app加载并安装。
$ cd ~/android/system/vendor/cyanogen $ ./get-rommanager
2. 编译配置
$ cd ~/android/system/ $ source build/envsetup.sh $ lunch
lunch执行后截图:
不同机型选择模式不同,我当前选择
$ lunch htc_saga-userdebug
build/core/product_config.mk:194: *** _nic.PRODUCTS.[[vendor/cyanogen/products/cyanogen_olympus.mk]]: "device/motorola/olympus/olympus.mk" does not exist。 停止。 ** Don't have a product spec for: 'htc_saga' ** Do you have the right repo manifest?
$ cd ~/android/system/vendor/cyanogen/products/ // 按照上面错误提示,删除下面一行,保存 $(LOCAL_DIR)/cyanogen_olympus.mk \
3. 提取手机配置文件
需要先连接手机,最好先设置下出厂设置(注意:设置出厂设置会清空联系人及手机所有自己安装的软件,一定要先做好备份再执行此操作)
验证是否ADB成功连接手机,可以在命令行输入
$ adb devices List of devices attached // 如果没有如下显示,说明SDK安装和配置有问题 SH***TJ06**1 device
// 提起G12手机配置文件目录 $ cd ~/android/system/device/htc/saga // CM支持手机只是上面目录不同,都通过以下命令提取 $ ./extract-files.sh
4. 配置CCAHE,如果仅编译当前一次,之后不打算再编译也可以不配置
$ export USE_CCACHE=1
foobar.h
中包含对其他头文件的引用,ccache 会用那个文件的 cpp-parsed 版本来 取代
include
声明。就那么简单。不是真正去读取、理解并解释其内容,ccache 只是 将最终的文本拷贝到文件中,使得它可以立即被编译。
5. 开始Build
$ croot $ brunch saga
6. 生成zip文件
// 编程成功后生成zip文件 ~/android/system/out/target/product/saga/update-cm-7.1.0-DesireS-KANG-signed.zip
五、刷机
1. 手机恢复出厂设置(注意:设置出厂设置会清空联系人及手机所有自己安装的软件,一定要先做好备份再执行此操作)
2. 把生成的zip文件拷贝到SD卡中
3. 进入Recovery模式,不同机型可能进入方式不同,
HTC Desire S(G12) 音量下键+开机键 进入HBOOT界面后,音量键将光标移动到Recovery选项上,按电源键选择
在蓝色recovery界面依次执行,音量键选择,电源键确认。 wipe data/factory reset——Yes——delete all user data. wipe cache partition——Yes-Wipe Cache.
依次执行,音量键选择,电源键确认。 install zip from sdcard. choose zip from sdcard. update-cm-7.1.0-DesireS-KANG-signed.zip Yes-install update-cm-7.1.0-DesireS-KANG-signed.zip 等待完成后点击返回键,选择Reboot system now手机会自动重启。
搞定,有图有真相
六、参考资料
1. CM官方文档 How to Build CM for the Desire S
原文地址:http://blog.csdn.net/love_world_/article/details/8661120