Android ROM开发--ubuntu下编译CyanogenMod生成SDK
2012-03-06 14:37
423 查看
由于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刷机包了,如果没有,经参考:/article/5002871.html
当然,不同机型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(或其他名字),一会会用到
![](http://pic002.cnblogs.com/images/2012/283134/2012030613542374.png)
简单介绍下这几个镜像文件
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,把它配置到环境变量中就可以使用了
![](http://pic002.cnblogs.com/images/2012/283134/2012030614151690.png)
生成后的目录如下
![](http://pic002.cnblogs.com/images/2012/283134/2012030614194878.png)
四、使用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即可
vendor下载地址:http://115.com/file/dpi59mxv
在开发定制ROM的时候经常会在源码中添加自定义的SDK,比如小米的MIUI里很多添加进来的功能在编码的时候都是使用自定义的方法,这些都是需要编译进SDK中的,开发者在开发的时候也会通过自己生成的SDK开发软件,调用新添加的方法。比如:android sdk中没有hello()这个方法,如果开发软件的时候要让这个方法有效,我们可以将这个方法加入到源码中编译生成SDK即可。
本篇先不讲如何添加模块,后继会加上。本篇只是如何通过编译CyanogenMod生成SDK,因为这一步看似只有一个命令,其实面临这很多的风险。
首先你确保你已经能够成功编译生成cm刷机包了,如果没有,经参考:/article/5002871.html
当然,不同机型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(或其他名字),一会会用到
![](http://pic002.cnblogs.com/images/2012/283134/2012030613542374.png)
简单介绍下这几个镜像文件
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,把它配置到环境变量中就可以使用了
![](http://pic002.cnblogs.com/images/2012/283134/2012030614151690.png)
生成后的目录如下
![](http://pic002.cnblogs.com/images/2012/283134/2012030614194878.png)
四、使用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即可
相关文章推荐
- Android ROM开发--ubuntu下载、编译CyanogenMod7
- ubuntu12.4编译android-4-3源码生成linux_sdk以及window_wdk
- Android ROM开发--ubuntu下载、编译CyanogenMod7
- Ubuntu下Android开发环境搭建及源代码下载、编译、运行
- Android开发入门之二--Android编译环境搭建(Vmawre+Ubuntu10.04+SecureCRT)
- Android多渠道SDK开发心得(9)——自动生成文档
- Android研究-Android系统编译、SDK编译、ADT编译、Android开发环境建立
- Ubuntu上搭建android BSP的开发编译环境 && 设置定时编译任务 && ubuntu从10.04升级到12.04后编译出错
- Android ROM研究---如何在ubuntu下下载姜饼(Gingerbread)源代码并编译Android ROM
- Android 将rom签名生成APK的keystore(Ubuntu16.04系统)
- 编译源码生成的SDK,创建android project 没有proguard.cfg问题
- ubuntu下搭建android开发环境并生成eclipse图标
- Ubuntu 11.10/Linux Mint 12.0 编译 ZTE V880 CyanogenMod Android2.3.7
- [转] Ubuntu下配置Android开发环境jdk+Eclipse+android sdk
- ubuntu14.04下android开发环境的搭建5-4:eclipse+sdk的安装
- ubuntu 64 编译sdk,运行android命令出现错误
- 如何搭建android的开发环境 虚拟机和ubuntu的安装与建立编译条件
- [置顶] ubuntu下搭建android开发环境(四)核心篇安装AndroidStudio、sdk、jdk(by 星空武哥)