,简称CM,是最活跃的民间android制作团体,目前的最新版是CM7.1,基于gingerbread 2.3.7_r1, 支持100多部手机.非常厉害。索爱最近也对CM提供了支持,使得2011年的索爱手机有幸进入了CM7.1支持列表。如今手头正好有一部索爱MT15i,也想自己编译CM 7.1的ROM玩一下。
是学习的起点。
下载代码 (2011年10月底,下载为15G)repo init -u git://github.com/CyanogenMod/android.git -b gingerbread
repo sync
下载后的代码的目录结构,与标准谷歌android基本一致,主要区别:1 device目录内容更丰富
CM支持的厂商和型号全部在列,device相关的文件超过6G,其中包含了预先编译好的kernel。
标准android 2.3.7只有google/htc/samsung几个子目录
2 vendor目录
有一些CM自己的脚本,有qcom几个文件,有tmobile几个文件,build之前,厂商私有文件也会copy到这个目录,详见下。其它暂时忽略。
3 含kernel, system,不含modem
另外,CM和谷歌的代码一样,只包含application processor的linux代码,不包含modem源码。
在编译CM的时候,kernel一般是提前build好的二进制(kernel源码可以到厂商developer主页下载)
CM只是编译system的部分。
在刷CM的ROM时候,主要是刷linux kernel和system分区,同时会保留原厂的modem固件。
首次编译前的准备工作(假设源代码下载目录为~/android/system):cd ~/android/system/device/semc/hallon/ #semc hallon就是索爱MT15i
./extract-files.sh #把索爱私有文件从手机中copy出来
~/android/system/vendor/cyanogen/get-rommanager #下载clockworkmod.com的最新rommanager工具,强大的ROM下载更新备份还原功能,需要root权限
extract-files.sh会读取手机中的私有文件列表,再用adb pull命令把这些文件copy出来,用于编译过程。 对于索爱MT15i来说propiretary-files.txt如下:
私有文件,听起来有点邪恶,就是没有源代码的意思。在编译open source时需要用到他们。 每款手机的私有文件都不一样,不知道CM是如何管理这个文件列表的,不管怎么说,看起来井井有条。
不是说CM不开源,而是从根儿上,AOSP就不开源。看看Android 4.0的声明:
Starting with IceCreamSandwich, the Android Open-Source Project can't be used from pure source code only, and requires additional hardware-related proprietary libraries to run, specifically for hardware graphics acceleration.
Official binaries for Nexus S, Nexus S 4G, Galaxy Nexus, and PandaBoard can be downloaded from , which add access to additional hardware capabilities with non-Open-Source code.
对于AOSP项目,谷歌把自己的nexus私有文件放在网上下载。
对于CM来说,把100多个手机的私有二进制文件都放到自己的网页上,可能得不到厂家的授权,所以要执行extract-files.sh从手机里面copy出来。
开始编译brunch hallon
待续
阅读(3248) | 评论(0) | 转发(0) |