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



一、 背景介绍

        当前文章是记录自己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

5. 下载源码

 可以直接直接通过命令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

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

Android 第三方ROM CyanogenMod 源码下载,编译,刷机_第1张图片


四、编译CyanogenMod 源码

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

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

2. 编译配置

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

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

Android 第三方ROM CyanogenMod 源码下载,编译,刷机_第2张图片


lunch执行后截图:

Android 第三方ROM CyanogenMod 源码下载,编译,刷机_第3张图片


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

$ 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?

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

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

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

Android 第三方ROM CyanogenMod 源码下载,编译,刷机_第4张图片


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

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

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


5. 开始Build

$ croot
$ brunch saga

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


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选项上,按电源键选择


4. 清理手机数据,之前设置出厂设置也可以省略此步骤
在蓝色recovery界面依次执行,音量键选择,电源键确认。
wipe data/factory reset——Yes——delete all user data.
wipe cache partition——Yes-Wipe Cache.


5. 选择zip文件进行安装
依次执行,音量键选择,电源键确认。
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手机会自动重启。


搞定,有图有真相

Android 第三方ROM CyanogenMod 源码下载,编译,刷机_第5张图片


六、参考资料

1. CM官方文档  How to Build CM for the Desire S




原文地址:http://blog.csdn.net/love_world_/article/details/8661120



你可能感兴趣的:(Android 第三方ROM CyanogenMod 源码下载,编译,刷机)