Android Studio 导入系统源码并对源码进行debug调试

Android9系统源码下载

Android9源码编译

之前阅读Android源码都是使用直接从百度云盘下载源码,并导入Source Insight进行阅读,这个工具也很强大,类的查找搜索都很方便,源码也不需要进行编译,但是,是不能进行类的关联以及进行调试。

如果你已经将源码进行编译,得到了Android Studio项目配置文件,就可以直接导入Android Studio了。优势是,各种快捷键随心使用,而且可以进行系统源码调试。

1.编译好的Android源码导入Android Studio

在源码目录,查看out/host/linux-x86/framework/idegen.jar是否存在,如果不存在,进入源码根目录执行如下的命令:

#!/bin/bash
source build/envsetup.sh
lunch 6
export PATH=$PATH:~/andrfoid9/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=~/android9/out/target/product/generic_x86
emulator

因为我编译源码使用的6,所以这里直接写的6了。

得到idegen.jar之后,在源码根目录执行如下命令:

sudo development/tools/idegen/idegen.sh

这时会在源码根目录生成android.iml 和 android.ipr 两个文件

更改这两个文件的读写权限

sudo chmod 777 android.iml
sudo chmod 777 android.ipr

做好这些就可以导入AS工具了,为了快速的导入,可以更改android.iml中的配置,忽略一些不必要的源码文件。操作步骤:

sudo gedit  android.iml

搜索excludeFolder,在下面加入这些配置

<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />

.

如果是使用的虚拟机进行源码的编译,将源码拷贝到共享目录,这样Windows系统就可以看到编译好的系统源码了,通过AS的Open an existing Android Studio project选项选择android.ipr 就可以导入源码,可能需要几分钟的事件就加载好了。

这样就可以使用AS查看Android 源码了

2.使用Android Studio 对Android源码进行debug调试

Android9的源码,对应的SDK版本是28,在SDK Manager下载对应的版本

点击File -> Project Structure–>SDKs配置项目的JDK、SDK。

查看是否有1.8(No Libraries),如果没有创建一个新的JDK,这里取名为1.8(No Libraries)

接着设置将Android SDK的Java SDK设置为1.8(No Libraries),这样Android源码使用的Java就是Android源码中的。

在这里插入图片描述

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

在这里插入图片描述

修改Manifest file等路径为下图中类似的路径

在这里插入图片描述

在AS最顶部的工具条中选择Edit Configurations,在Run/Debug Configurations弹框中点击左上角的加号,添加一个Android App配置,按下图进行配置:

在这里插入图片描述

在源码的根目录创建start_emulator.sh脚本,为了方便的启动模拟器,输入以下内容

#!/bin/bash
source build/envsetup.sh
lunch 6
emulator

更改shell文件的权限

sudo chmod 777 ./start_emulator.sh

启动模拟器

./start_emulator.sh

在系统源码找到ActivityStarter这个类,在startActivityMayWait这个方法打断点

在这里插入图片描述

点击菜单的Run–>Attach Debugger to Android Process,勾选Show all processer,选择system_process

在模拟器上随便启动一个应用程序就进入断点了

在这里插入图片描述
可以调试源码,对系统的源码的运行过程以及理解都会有很大的帮助,也可以学习到源码中优秀的思想以及技巧。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值