使用Android Studio开发/调试Android源码

本文详细介绍了如何在Android Studio中导入并配置Android Open Source Project(AOSP)源码,包括生成必要的配置文件、排除不必要的源码、设置SDK与JDK、解决代码跳转错误以及如何进行源码调试。通过这些步骤,开发者可以高效地对AOSP进行阅读和调试。
摘要由CSDN通过智能技术生成

一.生成导入AS所需配置文件(*.ipr)

①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)

②检查out/host/linux-x86/framework/目录下是否有idegen.jar

如果idegen.jar不存在,执行:

mmm development/tools/idegen/

在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。

我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。

③执行

development/tools/idegen/idegen.sh

等待出现类似下面的结果:

这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件,这两个文件一般是只读的,这里建议改成可读可写可执行:chmod 777 android.iml , chmod 777 android.ipr。

二.配置android.ipr

由于要将所有源码导入AS会导致第一次加载很慢,可以在android.iml中修改excludeFolder配置,将不需要看的源码排除掉。等源码项目加载完成后,还可以通过AS对Exclude的Module进行调整。如果你的电脑的性能很好,可以不用进行配置。

在android.iml中搜索excludeFolder,在下面加入这些配置。AS将不会加载一下目录文件。

excludeFolder 标签表示不会加载到AS快速索引的文件,这样第一次加载速度能提升。如果还有一些自定义文件不需要加载的话,可以在这里添加。

 三.导入系统源代码到AS

通过AS的Open an existing Android Studio project选项选择android.ipr 就可以导入源码了,打开一次大概要10分钟左右就可以导入完毕。导入后工程目录切换为Project选项就可以查看源码。

 四.配置项目的SDK,JDK

为了能确保代码跳转到导入的framework中,而不是SDK中,需要将SDK中classpath标签页下所有的文件删除。

确保的项目的SDK为源码对应的SDK

五.解决源码中跳转错误问题 

①为当前工程设置正确的SDK和JDK

②设置'Modules'的依赖

先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.

如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)

点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or directories'选项,依次将frameworks和external文件夹添加进来.如:

注:推荐把frameworks和external这两个移到最上面,这样在代码跳转时会优先从这两个文件夹下查找,而不是在Android.jar中查找。

其它版本的代码在添加frameworks时可能会显示成:

没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的.

如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可.

六.exclude不需要的代码目录

File -> Project Structure -> Modules中可以通过Excluded来筛选代码目录,比如我们选择bionic目录,点击Excluded,bionic目录会变为橙色,bionic字段会出现在右侧视图中,说明该目录已经被Excluded掉,通俗来讲就是被排除在工程之外。如果不希望bionic目录被Excluded掉,再次点击Excluded,bionic目录会变为灰色。

七.AS调试源码

7.1新建Android工程配置

实际上不按如下配置也可以调试源码,但是打开AS时会在Event Log处报错且不能消除提醒,因此这里建议还是要配置下。

在File–>Project Structure–>Modules中添加一个Android FrameWork:

修改Manifest file等路径为下图中类似的路径,因为我们常调试这个目录所以这么设置,你也可以设置其他的路径:

Manifest file选择源码下的framework/base/core/res/AndroidManifest.xml

Resources 选择源码下的framework/base/core/res/

Assets 选择源码下的framework/base/core/res/assets

Native libs 选择源码下的framework/native/libs

在AS最顶部的工具条中选择Edit Configurations:

在Run/Debug Configurations弹框中点击左上角的加号,添加一个Android App配置,按下图进行配置:

7.2调试源码

将断点打在需要的地方,然后点击菜单的Run–>Attach Debugger to Android Process或者上方工具条的Attach Debugger to Android Process图标,勾选Show all processer,选择需要调试的进程,系统的话选择system_process。如下图所示,注意调试系统的话要使用userdebug的版本。

点击OK后我们设置的断点就生效了,就可以进行调试了。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值