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

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

2016-09-17 14:30 645 查看
转自: 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 plaincopy

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 plaincopy

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

3. 下载repo命令工具

[java]
view plaincopy

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

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

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

我使用的是

[plain]
view plaincopy

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

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

[plain]
view plaincopy

#!/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 plaincopy

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

2. 编译配置

[plain]
view plaincopy

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

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



lunch执行后截图:



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

[plain]
view plaincopy

$ lunch htc_saga-userdebug  

可能会出现以下异常:

[plain]
view plaincopy

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 plaincopy

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

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



3. 提取手机配置文件

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

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

[plain]
view plaincopy

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

[plain]
view plaincopy

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

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

[plain]
view plaincopy

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

$ croot  
$ brunch saga  

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

6. 生成zip文件   

[plain]
view plaincopy

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

五、刷机

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

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

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

[plain]
view plaincopy

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

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

[plain]
view plaincopy

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

5. 选择zip文件进行安装

[plain]
view plaincopy

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