一、导入源码到eclipse:
相信大部分做源码开发的童鞋都不怎么用eclipse调试吧,毕竟还是有各种不方便的:首先工程比较浩大,导入eclipse会比较慢而且比较卡,有时候还会崩溃,然后eclipse不能编译单个模块,只能在eclipse中修改保存,然后还是得回到linux终端中编译。所以,高手们都会选择直接在vim中修改,然后直接编译,这样相当方便快捷,省掉了很多步骤,然而,对于像我这样的菜鸟而言,很多接口、语法之类的很容易出错,所以还是很依赖eclipse的自动提示和补全。好了,废话不多说,下面我们来看看关键的几个步骤:
1.取一份完整的Android源码,然后全编译(具体操作不作细说)。
2.将idh.code/development/ide/eclipse/.classpath文件拷贝到idh.code下。(重要)
3.打开eclipse,最好一份代码独占一份workspace,这样打开加载速度快。
4.选择File-->New-->Java project。
5.在弹出的窗口的location处Browse或填写上idh.code所在的路径,最后Finish。(耗时12分钟左右,Source Insight第一次建项目并同步也要很久)
6.可能会弹出一些错误窗口,关掉就可以了。
经过繁琐的几个步骤和长时间的等待之后,终于导入结束了,假如该代码全编译是可以通过的话,这份project应该是没有一个表示错误的x在类的图标上。大家在这份eclipse里面编写代码,会实时的检查语法,有误,鼠标移过去,就可以看得错误内容和修改建议。大家可以发现(如下图所示),一些framework和package中的类都列在了最开头,这就是.classpath文件的功劳,打开这个文件一目了然,大家可以根据自己的需要对这个文件进行改动。
另外,下面给出几个常用的快捷键:
搜索文件,可以ctrl+shift+R。
搜索类,可以ctrl+shift+H。
看某个方法被谁调用,可以ctrl+alt+H。
看某个方法的具体实现,可以按F3,假如对象是匿名继承接口的类,则ctrl+T。(如一些接口的类是在哪实现的,ctrl+T的功能是Source Insight不曾具备的)
搜索指定文件夹里面文件的内容,可以在package explorer处选择对应的文件夹,再ctrl+H,在scope栏选择Selected resources。
看当前文件里面的成员和方法列表,可以按ctrl+o,或者通过window-->show view-->outline将可拖拽的窗口调出。
二、单模块调试(以Launcher为例):
上面说完导入全部源码到eclipse中调试,但是大部分情况下,我们要调试的不是全部的代码,而是简单的一个应用而已:比如相机、短信、联系人、桌面等等,把全部代码导入明显是不理智的,那有没有导入单个模块调试的方法呢?答案是肯定的,下面我就以Launcher为例,简单的介绍一下:
1.由于在Android源码中,很多方法、成员、类、包都被打上@hide标签,这些成员在SDK中没有公开,以至于在编译Launcher源码时最常遇到的类android.view.View的成员mScrollX无法访问,因此我们需要将源码下的jar导入,而不是单独使用Android开放的jar包,所以,我们还是需要一份完全编译过并且无错的源码。
2.在该源码的out目录下寻找包含你所用隐藏类的jar文件,通常文件名为classes.jar。例如framework的jar文件为out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar。
3.在eclipse的Android项目中,选择项目属性->Java Build Path->Libraries->Add Library->User Library->Next-> UserLibraries进入到User Libraries管理界面,点击New新建一个User Library,比如android_framework,点击Add Jars把Jar包加入到建立的User Library中,最后点击OK就可以了。注意:为了访问因此成员,需要改变类搜索顺序,选择项目属性->Java Build Path->Order and Export,把所建立的User Libraries移到android sdk的上面。这个时候你的eclipse中的错误应该已经减少,甚至没有了。
4.要想在模拟器上马上看效果的话,按照以下方式进行修改:改掉原始包的名字,切记使用eclipse的重命名机制(在包名上按F2可修改),不仅是类的引用,还有很多xml文件内部的引用(如import com.android.launcher3.R;),只要重命名不错,这些都可以一次性搞定的。最后在AndroidManifest.xml文件里面,找到这句话删除掉(android:sharedUserId="android.uid.shared")。到现在为止,你就拥有了自己的Launcher了!
如下图所示,是个人为公司开发的一个场景桌面,由于技术含量不高,而且是公司手机定制,其他手机不一定能跑起来,所以分享给大家,仅为参考演示之用,不可用于商业,谢谢!
源码下载地址: