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支持的手机和系统版步骤都是一样的,应该只有下载选择分支时不同,如果想在其他手机编译刷不同版本也可以参考。
二、配置环境
三、下载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 中的文件,假定
会用那个文件的 cpp-parsed 版本来 取代
如果不需要再次编译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
一、 背景介绍
当前文章是记录自己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手机》 |
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
相关文章推荐
- Android菜单选项
- 给 Android 开发者的 RxJava 详解
- Android,底部导航+viewpager+fragment+drawerlayout+toolbar+recyclerview
- android:launchMode 启动模式
- 使Eclipse或AndroidStudio的代码模板自动生成类名和方法名
- androidstudio无法真机运行
- Android开发之数据持久化存储
- 作为一个Android开发者,你所需要掌握的东西
- Android Studio 个性化设置
- Android集成极光推送 的异常
- 两种android客户端传图片的方法
- Android基础动画
- 高德地图显示在fragment中并添加按钮点击事件
- Android动画之视图动画
- Android -- 固定在ScrollView顶部的View,类似于新浪微博的评论列表的顶部
- Android 解耦方法 ~~~ 事件总线
- Android事件分发机制源码分析
- EasyPlayer Android音频解码库(第二部分,封装解码器接口)
- android studio中选择器怎么创建
- Android事件分发拦截机制(图解)