CM11.0源码编译

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刷好的系统截图

我想,这就是旅行的真义吧。

CM11.0源码编译

相关文章:

你感兴趣的文章:

标签云: