由于CM2.3.7存在某些问题,所以如果需要使用稳定版本的CyanogenMod 2.3.4编译并且相应的vendor文件的话,可以到我的网盘中下载。
vendor下载地址:http://115.com/file/dpi59mxv
在开发定制ROM的时候经常会在源码中添加自定义的SDK,比如小米的MIUI里很多添加进来的功能在编码的时候都是使用自定义的方法,这些都是需要编译进SDK中的,开发者在开发的时候也会通过自己生成的SDK开发软件,调用新添加的方法。比如:android sdk中没有hello()这个方法,如果开发软件的时候要让这个方法有效,我们可以将这个方法加入到源码中编译生成SDK即可。
本篇先不讲如何添加模块,后继会加上。本篇只是如何通过编译CyanogenMod生成SDK,因为这一步看似只有一个命令,其实面临这很多的风险。
首先你确保你已经能够成功编译生成cm刷机包了,如果没有,经参考:
当然,不同机型brunch的时候版本也不同,要知道你的开发机的代号。我的开发机是HTC Desire Z,代号:vision
一、替换vendor目录下相应的文件夹,如vision
这一步主要用来编译源码,具体编译过程参考前一篇,只不过需要说明一点。
可能因为版本修改等原因,直接通过. /extract-files.sh可能会缺少某些包,或者库文件。在执行 . get-rommanager的时候因为获取的是最新的信息,所以也可能会在编译时出错。
所以,为了避免这些,将网盘中的相应文件夹(如vision)替换掉你的vendor/htc目录下的vision即可。因为那些文件都是已经测试过的,相应的cm源码
二、备份userdata.img文件
为什么?因为如果不提前拷贝出来的话如果遇到如下的错误那你就悲剧啦。
development/build/sdk.atree:71:couldn't locate source file:userdata.img
make:***[out/host/linux-x86/sdk/android-sdk_eng.loulijun_linux-x86.zip]错误 44
在成功编译生成刷机包后,会在cyanogenmod/out/target/product/vision下生成包括刷机包(类似cyanogen_vision-ota-eng.loulijun的zip包就是),system.img,userdata.img,ramdisk.img等镜像文件、kernel内核等相关信息;如下图
注意:你在这一步需要做的是备份userdata.img或者整个vision(或其他名字),一会会用到
简单介绍下这几个镜像文件
system.img:包括了主要的包和库文件
userdata.img:包括了用户数据,主要用户初始化系统
recovery.img:recovery烧录模式需要的文件,另一中烧录模式是fastboot(比如我们刷机时需要刷recovery)
ramdisk.img:模拟器的文件系统
boot.img:编译内核源代码生成的内核镜像
三、编译SDK
再一次,前提是你编译好了cyanogenmod(如果直接编译可能会出问题),而且还没有make clean(清楚编译数据)
$cd cyanogenmod
$make sdk
(上面的命令如果是make -j4 sdk会卡死电脑,很慢)
然后打开out/target/product/vision目录,观察一会后会发现里面的 数据突然消失了很多,其他的文件最后也生成了,包括刷机包,然而,就是这个userdata.img迟迟不生成。没关系,将拷贝好userdata.img文件粘贴进vision中(发现里面的userdata.img消失的时候就粘贴过去)。这个问题折磨了我很久很久。
好了,等一会就会发现我们的SDK生成了,它在out/host/linux-x86/sdk下面,这就是你生成的SDK,把它配置到环境变量中就可以使用了
生成后的目录如下
四、使用SDK
替换原有sdk,配置环境变量
$vim .bashrc
在最后加入或者修改为,保存退出
export PATH=$PATH:/home/loulijun/cyanogenmod/out/host/linux-x86/sdk/android-sdk_eng.loulijun_linux-x86
$source .bashrc
使其生效
然后到eclipse中打开Window--Preferences--Android--SDK Location,找到SDK目录,apply即可