Android ROM开发ubuntu下编译CyanogenMod生成SDK

摘要:
由于CM2.3.7存在某些问题,所以如果需要使用稳定版本的CyanogenMod2.3.4编译并且相应的vendor文件的话,可以到我的网盘中下载。本篇只是如何通过编译CyanogenMod生成SDK,因为这一步看似只有一个命令,其实面临这很多的风险。没关系,将拷贝好userdata.img文件粘贴进vision中。

由于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刷机包了,如果没有,经参考:http://www.cnblogs.com/loulijun/archive/2012/02/22/2361533.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(或其他名字),一会会用到

Android ROM开发ubuntu下编译CyanogenMod生成SDK第1张

简单介绍下这几个镜像文件

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,把它配置到环境变量中就可以使用了

Android ROM开发ubuntu下编译CyanogenMod生成SDK第2张

生成后的目录如下

Android ROM开发ubuntu下编译CyanogenMod生成SDK第3张

四、使用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下编译CyanogenMod生成SDK》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Object之definePropertyCAS 配置NLB 负载均衡网络无法连接下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android 自定义View及其在布局文件中的使用示例

前言:     尽管Android已经为我们提供了一套丰富的控件,如:Button,ImageView,TextView,EditText等众多控件,但是,有时候在项目开发过程中,还是需要开发者自定义一些需要重复使用的控件,使之能像Android提供的其它控件一样,使用起来方便,幸好Android为我们自定义控件过程扫除了障碍,提供了一套基础的类(如:Vi...

Linux编译不同版本glibc(转载)

转载自:https://blog.csdn.net/qq_40827990/article/details/89295472 方法步骤 在http://ftp.gnu.org/gnu/glibc/网站下载你需要的glibc版本 解压下载的文件,同时在本目录下创建一个bulid文件夹,在其他目录下建立一个glibc-x.xx目录: 1 tar -zxvf...

Apache Beam是什么?

  不多说,直接上干货! 以下是Apache Beam的官网 : https://beam.apache.org/ Apache Beam的前世今生       Apache Beam前身是Google Dataflow SDK,DataFlow是谷歌的提供大数据计算平台。在DataFlow之前,谷歌的批处理和流处理(流计算,实时处理)使用了不同系统,流...

VSCode编译CMake工程报错c++: internal compiler error: Killed (program cc1plus)

现象 使用VSCode+CMake构建C++工程时只能编译Release版本,无法编译Debug版本。 报错提示c++: internal compiler error: Killed (program cc1plus) 解决 编译过程中内存不足 方案1:增加内存 如果在虚拟机运行Linux可以增加虚拟机的分配内存或增大swap空间 具体方法可以参考这篇文...

Android之Activity生命周期详解

Activity的生命周期方法: onCreate()--->onStart()--->onResume()--->onPause()--->onStop()--->onDestory() 单个Activity的三种状态:显示状态,不可见状态,销毁状态。1,activity创建到显示要调用前三个方法.2,点击后退键,做了两件事...

DirectFB简介以及移植[一]【转】

转自:https://blog.csdn.net/wavemcu/article/details/39251805 ************************************************************************************************************************...