Android之导入源码到eclipse中以及单模块调试

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 14:11 我要评论(0)

一、导入源码到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了!

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...