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

Android Studio 导入系统源码并对源码进行debug调试,第1张

Android9系统源码下载

Android9源码编译

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

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

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

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

source build/envsetup.sh
lunch 6
mmm development/tools/idegen/

因为我编译源码使用的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 Configurationsd框中点击左上角的加号,添加一个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

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


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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/989990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存