您的位置:首页 > 移动开发 > Android开发

Android 第三方ROM CyanogenMod 源码下载,编译,刷机

2014-04-30 20:50 621 查看
转自: http://blog.csdn.net/androiddevelop/article/details/8661120
一、 背景介绍

当前文章是记录自己HTC G12下载,编译,刷入手机 CyanogenMod 7.1稳定版 Android源码2.3.7,CM 最新也支持Android 4 的版本,只要是CM支持的手机和系统版步骤都是一样的,应该只有下载选择分支时不同,如果想在其他手机编译刷不同版本也可以参考。

二、配置环境

名字版本说明
Ubuntu12.04 LTS 32由于是Android 2.3系统限制必须使用32位,如果是Android 4支持64位系统
SDK《安装配置Android SDK》
USB连接手机《配置识别Android手机》
三、下载CyanogenMod 源码

1. 安装编译所需软件,包括JDK

[plain]
view plaincopyprint?

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. 创建源码下载保存目录

[plain]
view plaincopyprint?

$ mkdir -p ~/bin
$ mkdir -p ~/android/system

3. 下载repo命令工具

[java]
view plaincopyprint?

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=${PATH}:~/bin

4.初始化repo参数

[plain]
view plaincopyprint?

$ cd ~/android/system/
$ repo init -u git://github.com/CyanogenMod/android.git -b 分支名

首先看分支是否支持你的手机,查看方法。。。。

我使用的是

[plain]
view plaincopyprint?

// 此分支支持G12
$ repo init -u git://github.com/CyanogenMod/android.git -b gingerbread-release

5. 下载源码
可以直接直接通过命令repo sync下载源码,但是由于伟大的母亲把Android 源码相关的网站都墙了,这得多想我们进步啊。。。,可以通过以下脚本下载,目的是如果下载失败自动重新请求下载

[plain]
view plaincopyprint?

#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? == 1 ]; do
echo "======sync failed, re-sync again======"
sleep 3
repo sync
done

下载成功显示如下,连着开机2天才下载完,这个完全拼人品,之前下载Android官网源码,一次一晚上,第二次下载就用了一星期。。。。



四、编译CyanogenMod 源码

1. 配置Rom Manager,用于把Rom管理相关的app加载并安装。

[plain]
view plaincopyprint?

$ cd ~/android/system/vendor/cyanogen
$ ./get-rommanager

2. 编译配置

[plain]
view plaincopyprint?

$ cd ~/android/system/
$ source build/envsetup.sh
$ lunch

source build/envsetup.sh 执行后截图:



lunch执行后截图:



不同机型选择模式不同,我当前选择

[plain]
view plaincopyprint?

$ lunch htc_saga-userdebug

可能会出现以下异常:

[plain]
view plaincopyprint?

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?

我要想配置的是HTC手机,显示motorola olympus 摩托罗拉olympus 款配置有问题? 跟我没啥关系,既然出错删除相关的代码不让读取相关配置文件。

[plain]
view plaincopyprint?

$ cd ~/android/system/vendor/cyanogen/products/
// 按照上面错误提示,删除下面一行,保存
$(LOCAL_DIR)/cyanogen_olympus.mk \

重新lunch , 如果正常显示如下:



3. 提取手机配置文件

需要先连接手机,最好先设置下出厂设置(注意:设置出厂设置会清空联系人及手机所有自己安装的软件,一定要先做好备份再执行此操作)

验证是否ADB成功连接手机,可以在命令行输入

[plain]
view plaincopyprint?

$ adb devices
List of devices attached
// 如果没有如下显示,说明SDK安装和配置有问题
SH***TJ06**1 device

[plain]
view plaincopyprint?

// 提起G12手机配置文件目录
$ cd ~/android/system/device/htc/saga
// CM支持手机只是上面目录不同,都通过以下命令提取
$ ./extract-files.sh

4. 配置CCAHE,如果仅编译当前一次,之后不打算再编译也可以不配置

[plain]
view plaincopyprint?

$ export USE_CCACHE=1

[b]ccache 介绍 -- 高速的C/C++编译工具 [/b]

ccache(“compiler cache”的缩写 官方网站 )是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息,
比如头文件,这样就节省了通常使用 cpp 解析这些信息所需要的时间。如果您编译清单 2 中的文件,假定
foobar.h
中包含对其他头文件的引用,ccache
会用那个文件的 cpp-parsed 版本来 取代
include
声明。就那么简单。不是真正去读取、理解并解释其内容,ccache 只是 将最终的文本拷贝到文件中,使得它可以立即被编译。

如果不需要再次编译Android可以不配置ccache,初次编译使用ccache会减低些速度,但是要是重新编译的会会提升5~10倍速度。

如果想了解更多使用,可以参考ccache使用教程

5. 开始Build

[plain]
view plaincopyprint?

$ croot
$ brunch saga

如果提示没有croot,brunch,lunch命令,需要再次执行步骤 (四.2编译配置)

6. 生成zip文件

[plain]
view plaincopyprint?

// 编程成功后生成zip文件
~/android/system/out/target/product/saga/update-cm-7.1.0-DesireS-KANG-signed.zip

五、刷机

1. 手机恢复出厂设置(注意:设置出厂设置会清空联系人及手机所有自己安装的软件,一定要先做好备份再执行此操作)

2. 把生成的zip文件拷贝到SD卡中

3. 进入Recovery模式,不同机型可能进入方式不同,

[plain]
view plaincopyprint?

HTC Desire S(G12)
音量下键+开机键
进入HBOOT界面后,音量键将光标移动到Recovery选项上,按电源键选择

4. 清理手机数据,之前设置出厂设置也可以省略此步骤

[plain]
view plaincopyprint?

在蓝色recovery界面依次执行,音量键选择,电源键确认。
wipe data/factory reset——Yes——delete all user data.
wipe cache partition——Yes-Wipe Cache.

5. 选择zip文件进行安装

[plain]
view plaincopyprint?

依次执行,音量键选择,电源键确认。
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: