CyanogenMod源码下载和编译 CM7
Android拓展系列(5)--CyanogenMod源码下载和编译(Android ROM定制基础篇)
http://www.cnblogs.com/qianxudetianxia/archive/2011/09/27/2193590.html
///=============
这里着重说下Android 2.3以上需要借助JAVA6,安装Java6,我推荐如下安装:
1
2
3
4
|
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt- get update
$ sudo apt- get install sun-java6-jdk
|
如果这一步不成功将会导致后面出错,如果失败按下面方法即可:
解决方法:
1. sudo gedit
2. 打开 /ect/apt/sources.list
3. 添加一行
deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse
4. 保存关闭gedit
5. 运行 sudo apt-get update
6.再运行sudo apt-get install sun-java6-jdk
//=============
2.安装repo
因为android.git官方已经不能访问,所以我这里提供一个repo文件的下载地址,免的大家到处搜索:http://115.com/file/cl15goo2#repo
把repo拷贝到ubuntu根目录下得bin下
操作方法:
1
2
3
4
5
6
|
$mkdir ~/bin
//下载的repo脚本拷贝本地bin文件夹下
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
//设置本地repo的可执行权限
$chmod a+x ~/bin/repo
$alias repo= "~/bin/repo"
//这里我用特意用别名,大家也可以按常规方法把repo的路径添加到PATH中
|
=================
3.ubuntu中环境的配置
JDK前面已经说了,其他的软件列表如下:
1
|
$sudo apt- get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool
|
///=================
4.下载CyanogenMod源码
1
2
3
4
5
6
7
|
//从用户根目录下开始
//创建CyanogenMod文件夹来放置后面所有的代码
$mkdir CyanogenMod
//获取gingerbread的分支源代码
$repo init -u git: //github.com/CyanogenMod/android.git -b gingerbread
//同步服务器代码到本地,-j16据网友反应是多开网络连接,从而能提高下载速度
$repo sync -j16
|
====================
在CyanogenMod/device目录下有很多款手机的对应版本:
1
2
|
$cd CyanogenMod/device/htc/liberty
$./extract-files.sh
|
第二步:生成编译脚本文件
1
2
3
4
5
|
$cd ~/CyanogenMod/vendor/cyanogen
$./ get -rommanager
$./extract-google-files
//复制编译脚本文件到CyanogenMod目录下,后面编译整个系统用的就是这个文件
$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_lieberty.mk ~/CyanogenMod/buildspec.mk
|
第三步:编译脚本
回到CyanogenMod目录下,执行脚本。
1
2
3
4
5
6
7
|
//初始化脚本,这个是后面的重要基础步骤
$source build/envsetup.sh
//选择编译的产品
//这个命令需要一小会儿时间,但是又没提示,耐性等待一下
$lunch cyanogen_liberty-eng
//开始编译
$make -j4 CYANOGEN_WITH_GOOGLE= true otapackage
|
第四步:生产刷机zip包。
1
|
./vendor/cyanogen/tools/squisher
|
/==============
有了以上的环境后,我们就可以大展手脚,深度定制ROM, 做自己的操作系统,自己的CyanogenMod,自己的MIUI,自己的Android系统。
举个最简单的例子:
我 们换一下默认menu菜单的选中背景图,我们进入CyanogenMod/frameworks/base/core/res/res/mdpi目录下 (因为htc liberty的分辨率是480x320),找到图片highlight_pressed.png,替换为绿色的背景:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//回到根目录
$cd
//切换到管理员权限
$sudo -s
//进入CyanogenMod目录,并初始化脚本文件
$cd CyanogenMod
$source build/envsetup.h
//选择产品
$lunch cyanogen_liberty-eng
//进入资源编译目录(或者它的子目录也可以)
$cd frameworks/ base /core/res
//开始编译framework-res.apk
$mm
|
编译完成,
在CyanogenMod/out/target/product/liberty/system/framework目录下生成了一个framework-res.apk文件,就是我们修改Menu选中项图片后新打的资源包。
现在我们需要把这个资源包更新到手机中。
USB连上手机后,一切正常的话(adb当然也是事前要装好的哦),打开终端:
1
2
3
4
5
6
|
//使其可写
$adb remount
//替换手机中资源包
$adb push ~/CyanogenMod/ out /target/product/liberty/system/framework/framework-res.apk /system/framework/
//重启手机后生效
$adb reboot
|
重启后,进入桌面,我们点击Menu,选择一项:
修改资源包,可以修改样式,显示图片,调整布局等等。
你也可以直接修改framework代码,在framework/base/core /java目录下,修改对应的类,比如逻辑处理,样式重绘等等,然后同上面类似编译,把生成的framework.jar替换掉手机的/system /framework下的framework.jar,重启手机即可看到效果。
你也可以添加系统应用,删除系统应用等等,这里特别提到一点,系统应用可以通过如下命令删除(具有root权限):
1
2
3
4
5
|
$adb remount
$adb shell
#cd system/app
//用rm删除系统FM应用
#rm FM.apk
|
有了这些基础知识,我相信我们后面的深度定制ROM一定非常精彩!
7.小结
本文以CyanogenMod源码编译总结了Android改造系统的一个基本环境,是我们之后ROM系统定制,优化的基础,是android深入学习的必会技能,特此分享,共勉!
===================================================================================================
本来想下载Android官方源代码,没想到android.git.kernel.org维护,不能访问,非常遗憾,并因此还郁闷了几天。
后来转投MIUI,没找到它的源码,不知道它的"超过40万人社区开发团队"是什么意思,求解具体开发人员几何,都是谁?
后来一想,竟然忘记了CyanogenMod这茬,这可是的的确确的开源啊,我的手机一直也在用CyanogenMod系统的,感觉确实不错。
1.准备
我得环境如下,
VirtualBox 4.1.2.r73507
Ubuntu11.10 Beta2(32位)
下载CyanogenMod的gingerbread分支
Ubuntu的环境配置大家可以参考我前面写的《Android拓展系列(3)--Android源码下载》,也可以参考http://source.android.com/。
这里着重说下Android 2.3以上需要借助JAVA6,安装Java6,我推荐如下安装:
1
2
3
4
|
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt- get update
$ sudo apt- get install sun-java6-jdk
|
其中第二句可能会出错,不过没关系,跳过即可。
2.安装repo
因为android.git官方已经不能访问,所以我这里提供一个repo文件的下载地址,免的大家到处搜索:http://115.com/file/cl15goo2#repo
把repo拷贝到ubuntu根目录下得bin下
操作方法:
1
2
3
4
5
6
|
$mkdir bin
//下载的repo脚本拷贝本地bin文件夹下
//设置本地repo的可执行权限
$chmod a+x ~/bin/repo
$alias repo= "~/bin/repo"
//这里我用特意用别名,大家也可以按常规方法把repo的路径添加到PATH中
|
3.ubuntu中环境的配置
JDK前面已经说了,其他的软件列表如下:
1
|
$sudo apt- get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool
|
这些软件都安装好之后我们开始下载CyanogenMod源码。
4.下载CyanogenMod源码
1
2
3
4
5
6
7
|
//从用户根目录下开始
//创建CyanogenMod文件夹来放置后面所有的代码
$mkdir CyanogenMod
//获取gingerbread的分支源代码
$repo init -u git: //github.com/CyanogenMod/android.git -b gingerbread
//同步服务器代码到本地,-j16据网友反应是多开网络连接,从而能提高下载速度
$repo sync -j16
|
这个过程非常的漫长,大家慢慢的等吧,本人是晚上睡觉的时候下载,第二天早上醒来就Done了。
5.编译源码
在CyanogenMod/device目录下有很多款手机的对应版本:
里面有个htc,本人是htc G9,也就是Liberty,我们点击看看:
我的liberty静静的优雅的舒服的躺在那里。
所以本人决定编译一个我手头上的liberty对应的系统版本,编译完成后我们直接刷机。
第一步:读取手机上的一些私有配置文件
1
2
|
$cd CyanogenMod/device/htc/liberty
$./extract-files.sh
|
图示如下:
第二步:生成编译脚本文件
1
2
3
4
5
|
$cd ~/CyanogenMod/vendor/cyanogen
$./ get -rommanager
$./extract-google-files
//复制编译脚本文件到CyanogenMod目录下,后面编译整个系统用的就是这个文件
$cp ~/CyanogenMod/vendor/cyanogen/products/cyanogen_lieberty.mk ~/CyanogenMod/buildspec.mk
|
贴上进行时图片:
第三步:编译脚本
回到CyanogenMod目录下,执行脚本。
1
2
3
4
5
6
7
|
//初始化脚本,这个是后面的重要基础步骤
$source build/envsetup.sh
//选择编译的产品
//这个命令需要一小会儿时间,但是又没提示,耐性等待一下
$lunch cyanogen_liberty-eng
//开始编译
$make -j4 CYANOGEN_WITH_GOOGLE= true otapackage
|
这个过程也是相当的漫长,还好一般情况下我们只是第一次需要项目整个编译,后面只需要编译某个模块。
可惜完成的时候我忘记截图了,可惜不能上图了。
在 编译的过程中,我们有一点要特别注意,虚拟机的内存不要太小,本人刚开始分配虚拟机512M内存,一会儿就出错,重新编译又一会儿出错,如此重复,而且还 导致某个文件被破坏掉了(values-cs/strings.xml中某行少一个右尖括号,这个我百思不得其解),后来我把虚拟机内存调到1024M就 一直编译通过了。
第四步:生产刷机zip包。
1
|
./vendor/cyanogen/tools/squisher
|
有图为赏:
用这个zip包,我刷到我手机上,一切正常。
6.定制ROM
有了以上的环境后,我们就可以大展手脚,深度定制ROM, 做自己的操作系统,自己的CyanogenMod,自己的MIUI,自己的Android系统。
举个最简单的例子:
我 们换一下默认menu菜单的选中背景图,我们进入CyanogenMod/frameworks/base/core/res/res/mdpi目录下 (因为htc liberty的分辨率是480x320),找到图片highlight_pressed.png,替换为绿色的背景:
那么修改资源文件后,我们需要重新编译framework-res.apk:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//回到根目录
$cd
//切换到管理员权限
$sudo -s
//进入CyanogenMod目录,并初始化脚本文件
$cd CyanogenMod
$source build/envsetup.h
//选择产品
$lunch cyanogen_liberty-eng
//进入资源编译目录(或者它的子目录也可以)
$cd frameworks/ base /core/res
//开始编译framework-res.apk
$mm
|
编译完成,示意图如下:
在CyanogenMod/out/target/product/liberty/system/framework目录下生成了一个framework-res.apk文件,就是我们修改Menu选中项图片后新打的资源包。
现在我们需要把这个资源包更新到手机中。
USB连上手机后,一切正常的话(adb当然也是事前要装好的哦),打开终端:
1
2
3
4
5
6
|
//使其可写
$adb remount
//替换手机中资源包
$adb push ~/CyanogenMod/ out /target/product/liberty/system/framework/framework-res.apk /system/framework/
//重启手机后生效
$adb reboot
|
重启后,进入桌面,我们点击Menu,选择一项:
修改资源包,可以修改样式,显示图片,调整布局等等。
你也可以直接修改framework代码,在framework/base/core /java目录下,修改对应的类,比如逻辑处理,样式重绘等等,然后同上面类似编译,把生成的framework.jar替换掉手机的/system /framework下的framework.jar,重启手机即可看到效果。
你也可以添加系统应用,删除系统应用等等,这里特别提到一点,系统应用可以通过如下命令删除(具有root权限):
1
2
3
4
5
|
$adb remount
$adb shell
#cd system/app
//用rm删除系统FM应用
#rm FM.apk
|
有了这些基础知识,我相信我们后面的深度定制ROM一定非常精彩!
7.小结
本文以CyanogenMod源码编译总结了Android改造系统的一个基本环境,是我们之后ROM系统定制,优化的基础,是android深入学习的必会技能,特此分享,共勉!
CyanogenMod源码下载和编译 CM7相关推荐
- Android 第三方ROM CyanogenMod 源码下载,编译,刷机
转自: http://blog.csdn.net/androiddevelop/article/details/8661120 一. 背景介绍 当前文章是记录自己HTC G12下载,编译,刷入手机 ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...
- android源码下载以及编译自己的ROM
android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...
- VLC for Android源码下载和编译
Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...
- ros源码下载及编译
Ros1 源码下载及编译 准备工作 Setup your sources.list Setup your computer to accept software from packages.ros.o ...
- WebRTC源码下载与编译
WebRTC源码编译 1 几种源码下载方案对比 1.1 拉别人下好的代码 1.2云服务器 1.3 国内镜像 1.4 挂代理(推荐) 2 源码编译环境准备 2.1 环境要求 2.2 代理服务器配置 2. ...
- Android12 源码下载、编译、刷机、单编调试Framework
文章目录 说明 1. 代码下载 1.1 下载Repo工具 1.2 安装和配置Git 1.3 创建工程目录 1.4 初始化Repo仓库 1.5 同步代码 2. 驱动下载 2.1 下载对应机型的驱动 2. ...
- SELinux零知识学习四、Audit应用层源码下载、编译和安装
接前一篇文章:SELinux零知识学习三.SELinux应用层源码下载.编译和安装 在前篇文章中编译SELinux源码时,出现了如下错误: seusers_local.c:11:10: 致命错误:li ...
- Android 4.0.1 源码下载,编译和运行
[牛人分享]Android 4.0.1 源码下载,编译和运行 转自 http://blog.csdn.net/rambo2188/article/details/6943382 ----------- ...
最新文章
- Android中的URI
- android小程序源代码_我从 Android 转到微信小程序的思考
- 珠海网络推广浅析该如何高效的提高搜索引擎的抓取频次?
- Linux系统文件和目录管理
- c语言课设报告河海大学,2020河海大学计算机学硕838经验贴
- Py之BaseHTTPServer:Python库之BaseHTTPServer的简介、安装、使用方法之详细攻略
- [转载]全面解读软件版本的标志
- 360 小程序来了,进攻 PC 端!
- 告诉你三个实用的换性别特效软件
- linux 小度 驱动_分享:bananian1508成功编译小度Wifi mt7601u驱动。
- C语言dtoc函数,VFP数据库程序设计基础课后作业(二)参考答案(VFP函数表达式练习题--答案)...
- 从零搭建 ES 搜索服务(五)搜索结果高亮
- Mybatis的xml实用的一些技巧
- Illegal instruction 问题处理
- CSS3简单练习 魔方制作
- Stop Staring: Facial Modeling and Animation Done Right
- AI 边缘计算平台 - BeagleBone AI 64 简介
- 网站主题实现技术-jsp include
- simulink如何简单的控制模块间执行顺序
- 在mips64架构的国产系统中安装pyinstaller