0 导论
在本文中我们将了解CM11.0(android 4.4)内核,同时将CM11.0移植到任意一台支持android的手机上。
1 CM介绍
全称CyanogenMod,CM是基于android的开源系统,CM11.0是基于最新的android 4.4,CM在android源码的基础上增加了对许多固件的支持,这样使得我们移植起来会很方便。
更多CM的介绍请http://wiki.cyanogenmod.org/w/About
CM的官网是 http://www.cyanogenmod.org/
2 准备编译工具
开发的环境是ubuntu12.04 64位,预留100G硬盘空间。
可以参考
http://source.android.com/source/initializing.html
http://wiki.cyanogenmod.org/w/Build_for_v9
更新编译环境
sudo apt-get update
sudo apt-get install gitgnupg flex bison gperf build-essential\zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev\libx11-dev:i386libreadline6-dev:i386 libgl1-mesa-glx:i386\libgl1-mesa-dev g++-multilibmingw32 tofrodos\python-markdownlibxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so
工具安装
Python 2.6 — 2.7地址http://www.python.org/download/
GNU Make 3.81 — 3.82地址http://ftp.gnu.org/gnu/make/
JDK 7 地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Git 1.7 http://git-scm.com/download
Python安装
cd Python-2.7.6
./configure
make
sudo make install
使用/usr/bin/python -c "import bz2; printbz2.__doc__"参看python是否正常安装,并且是否支持 import bz2。如果正确的话会输出相应的信息。
export PATH=/usr/bin:$PATH将/usr/bin/python加入到环境中。
GNU Make安装
cd make-3.82
./configure
make
sudo make install
make -version检查GNU make是否正常安装
JDK安装
下载到JDK是BIN文件,将其添加到PATH
vim .bashrc
JAVA_HOME=/home/ming/jdk1.7.0_45
export JRE_HOME=/home/ming/jdk1.7.0_45/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
java -version检查java是否正常安装
3 同步CM11.0源码
在主目录下建立一个源码存放的目录
mkdir CM
在主目录下建立一个编译缓存目录
mkdir cache
在主目录下建立一个编译生成目录
mkdir out
增加环境变量
vim.bashrc
export USE_CCACHE=1
export CCACHE_DIR=/home/ming/cache
export OUT_DIR_COMMON_BASE=/home/ming/out
注意改成自己的目录。
在主目录下建立一个源bin目录存放repo
mkdir bin
将bin添加到PATH中
export PATH=$PATH:~/bin
下载repo
curl"http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" >~/bin/repo
chmod a+x ~/bin/repo
初始化repo
repo init -u
https://github.com/CyanogenMod/android.git -b cm-11.0
同步源码
repo sync
这个过程很长,android4.4源码大概10G。
下载完成后在CM目录下会生成android源码目录。
4 添加对硬件的支持
一般说来,需要添加特定机型的device、vendor和kernel,但是有的只需要device,具体情况具体分析。
CM支持的机型很多,参见网址:
http://wiki.cyanogenmod.org/w/Unofficial_Ports <–在这个网站上下载需要的设备驱动。
这里我们根据我们的机型下载相应的device和vendor和kernel。
我现在实验的是 小米2S电信版32G.所以下载
android_device_xiaomi_aries-cm-11.0.zip
android_kernel_xiaomi_aries-cm-11.0.zip
android_vendor_xiaomi_aries-cm-11.0.zip
注意在github上下载的时候选择的分支是CM11.0。
在CM11.0源码目录下device目录下新建一个xiaomi的文件夹,进入xiaomi再新建一个aries文件夹,将android_device_xiaomi_aries-cm-11.0.zip解压到这个aries目录下。这样device就有了。
cddevice/xiaomi/aries
在CM11.0源码目录下进入到vendor目录下,新建xiaomi目录,进入xiaomi目录新建一个aries目录,将android_vendor_xiaomi_aries-cm-11.0.zip解压到这个aries目录中。这样需要的vendor也就有了。
cd vendor/xiaomi/aries
ls
Android.mk aries-vendor-blobs.mk aries-vendor.mk proprietary
在CM11.0源码目录下,进入到kernel,新建一个xiaomi目录,在xiaomi目录下新建一个aries目录,将android_kernel_xiaomi_aries-cm-11.0.zip解压到这个aries目录下。
经过这些步骤就添加了CM11.0对小米2S的硬件支持。
cd/kernel/xiaomi/aries
ls
AndroidKernel.mk Documentationipcmake_defconfig.sh samples virt
…….
5 编译CM11.0
下载预编译需要的动态库,在CM11.0源码目录下
cd vendor/cm/
./get-prebuilts
初始化编译环境
source build/envsetup.sh
初始化完成后lunch选择我们的机型,执行
lunch
选择11 aosp_aries-userdebug
没有问题到话会输出一些配置参数。
首先编译recovery
make recovery
也可以使用make recovery -j8 使用8个线程加快编译。
大概30分钟左右recovery就编译好了,在out/new_cm/target/product/aries目录下就可以看见recovery.img
cd out/new_cm/target/product/aries
ls -alrecovery.img
-rw-r–r–1 ming ming 9353216 5月 18 13:36 recovery.img
编译好recovery后,开始编译android内核
make
也可以使用make otapackage -j8 直接生成刷机包。
编译完成后在out/new_cm/target/product/aries会生成aosp_aries-ota-eng.ming.zip大概200MB
使用刷机精灵将编译生成内核刷入到手机中。
附录 CM11.0刷好的系统截图
我想,这就是旅行的真义吧。