日期:2014-05-20  浏览次数:20875 次

单编译framework相关模块

android开发人员大概都是从上层做起,捣鼓捣鼓收音机,记事本,主界面什么的。开发工具eclipse+ADT就可以了,有的模块会需要导入一些依赖包。

慢慢的,这些表面工作已经成为一种体力活,开始觉得厌倦,这时多半也混成老油条了。或许是组织信任你,也可能是你自己想要change,所以你表示

要搞搞更具技术含量的东西,理所当然的framework开始以各种姿态出现在你的生活中,并以它独有的方式影响着你的心情。

前段日子,作为一个极具二b青年气质的程序员怀着忐忑的心情开始了我的framework相关工作。这里略作小结。

组织交给我的任务是根据UI提供的设计方案实现一个新锁屏(技术评审的时候我很猥琐的投了看起来最容易实现的一种方案)。

做的时候,思路很快锊顺了,但做起来异常费劲,每次做点修改,或者加点调试信息,都是全编译生成system.img,一趟下来半小时没了,一天也调试不了几次。

编译的时候看看书,和同事聊聊天什么的,时间不够,加班来凑,顺便混个加班餐,锁屏硬就是在这种2b节奏下弄出来的。

组织验完锁屏表示小伙子做得还可以,接下来你把状态栏和setting也做了吧。屌丝的虚荣心在那瞬间得到了极大地满足,立马表示愿为组织肝脑涂地,在所不惜!

一天中午我正在以2b节奏被状态栏以各种姿势(bug)调戏着,一边盯着屏幕全编译,一边思绪万千。突然一高富帅划过身边,淡淡的扔下一句:可以单编译的。

高富帅回到座位随手发给我一个网址,当时我的世界观发生了改变。

1.初始化编译环境

. build/envsetup.sh

2.选择编译策略

choosecombo 1 2 9 2& chooseproduct XXX

3.这里分不同情况讨论

比如锁屏就分了三个地方:

a,逻辑是Frameworks/base/policy/src/com/android/internal/policy/impl/目录下这里的文件做了相关改动后需要                                      

  cd Frameworks/base/policy

  mm

得到android.policy.jar文件备用。

b,视图是在 Framework/base/core/java/com/android/internal/widget/路径下,这里的文件做了修改则需要

  cd Frameworks/base/

  mm

得到framework.jar文件备用。

c,资源文件在Framework/base/core/res/res/发生了变化。

 cd Frameworks/base/core/res/

 touch find  

 mm

得到framework-res.apk文件备用。

4.弄到手机里面

adb remount

adb push XXX system/framework

adb push 。。。。。。

adb reboot

Tips

    每次但编译最好清掉out/obj下的对应中间文件。尤其是有资源文件更新时。

    其他framework下的功能模块以此类似,比如状态栏就是在framework/base/package/systemUI下mm。

自从会单编译后。那里有错,编那里,组织再也不用担心我的进度了。

 对不起观众,渣排版,泪流满面。