zoukankan      html  css  js  c++  java
  • Android ROM开发ubuntu下编译CyanogenMod生成SDK

    由于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(或其他名字),一会会用到

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

    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即可

  • 相关阅读:
    Java序列化的机制和原理
    范型练习
    Java范型
    Hadoop之HelloWorld
    IEnumerable和IEnumerator
    浅谈静态变量和类
    MVC中的Startup.Auth.cs、BundleConfig.cs、FilterConfig.cs和RouteConfig.cs
    "ApplicationDbContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库。
    C#.NET的微信功能开发学习
    本地Fiddler传递XML格式数据,调试微信功能。
  • 原文地址:https://www.cnblogs.com/loulijun/p/2381842.html
Copyright © 2011-2022 走看看