CyanogenMod源码下载及在模拟器上刷机

    编译环境搭建

1. Ubuntu11.04  32位机器

2. JDK下载及环境变量配置

vim /etc/profile(我将环境变量都配到了/etc/profile里,下同)

在文件中export 。。。。

3. 下载Android SDK

因为编译源码时,会用到adb

下载Android SDK包,解压即可。

export PATH=${PATH}:<你sdk的目录>/tools

4. 安装需要的软件

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 pngcrush schedtool 

CyanogenMod源码下载

1. Repo的安装

repo的安装比较方便,之需要下载一个文件,并设置成可执行权限,并添加到系统环境中去即可,具体命令如下:

创建目录:

cd ~

mkdir bin

配置环境变量:

export PATH=$PATH:~/bin

安装Repo

curl http://android.git.kernel.org/repo > ~/bin/repo

chmod a+x ~/bin/repo

2. 下载源码

a) 创建源代码目录:

cd ~

mkdir CyanogenMod

cd CyanogenMod

b) 在cyanogenmod目录执行repo命令,设定需要同步的源码内容:

repo init -u git://github.com/CyanogenMod/android.git -b gingerbread 

说明:网址即为cyanogenmod的地址,-b表示我们选择需要同步的分支,cyanogenmod有不少分支,比如dount,eclair, froyo,我们目前需要编译的是2.3,即gingerbread,则通过-b gingerbread来选择2.3的分支。

c) 在配置过程中,会让你选择名字和邮箱,这个会显示在你最后编译出来的rom

的基础信息里,可以选择你喜欢的来写

d) 配置完成后,就可以开始同步源码了:

repo sync -j16 

e) 说明:这里说一下repo sync 这个过程那是相当的慢的。使用repo sync -jn,n表示同时打开的网络链接数,开启多个网络连接来下载,这样速度会有所提升的

编译环境的设置

1. 编译环境的建立

同步完源码后,首先需要建立编译环境,CM的源码把这些命令都写成了脚本,我们只需运行相应的脚本即可,首先,先cd到源码的根目录,然后执行如下命令:

./build/envsetup.sh

lunch cyanogen_generic-eng 

2. 专属文件的提取(针对不同设备,本人只是刷了模拟器)

a) 虽然Android系统是开源的,但有部分Dream的专属文件是不开源的,所以并不包含在源码树中。但如果希望rom能在Dream真机上运行,又需要这些文件,所以需要将这些文件提取出来

b) 首先你要确保安装成功了上述所有软件,然后,将Dream通过usb连接到电脑上。

c) cd到源码的/vendor/htc/dream_sapphire目录,然后执行脚本:

./extract-files.sh

d) 这个操作会调用adb命令,从你的手机里pull所需要的专属文件到vendor目录。

3. 编译文件的修改(本人没进行此操作,直接全部编译)

a) 默认的编译过程包含了所有的语言和程序,但其实我们并不需要这些,可以通过编译文件的修改来定义需要输出的语言和软件

b) 打开/vendor/cyanogen/products 目录下的cyanogen.mk文件,里面定义了要输出的软件和语言,对于不需要的软件,可以直接删除。但不建议在这里修改,可以从最后的输出目录里删除不需要的,直接在这里改容易出错

c) 在文件的最后,有一行”PRODUCT_LOCALES”,这里就包含了rom支持的语言类型,默认有几十种,编译出来后,软件会比较大,一般我们只需要保留其中的常用语言即可,笔者选择保留了en_US,zh_CN和zh_TW这三种语言,编译出来的软件就小了很多。

CyanogenMod编译

源码的根目录,下执行

mka

重要:在编译前先执行make update-api,在执行mka进行编译,否则会报错,具体原因是CM中添加了新的API 。

编译结束后,在out/target/product目录下回出现三个镜像文件ramdisk.img system.img 和 userdata.img 

若在该目录下执行

emulator -system system.img -data userdata.img -ramdisk ramdisk.img

模拟器启动会出现黑屏

重要:安装上述方法执行后,模拟器黑屏 

解决办法:在CM源码中找到kernel-qemu-armv7,位置在~/prebuilt/android-arm/kernel/kernel-qemu-armv7 

将它拷贝到镜像文件的相应目录,执行如下命令: 

emulator -system system.img -data userdata.img -ramdisk ramdisk.img -kernel  kernel-qemu-armv7


猜你喜欢

转载自willsunforjava.iteye.com/blog/1736004