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

2022-07-22 13:06:26

Android9系统源码下载

Android9源码编译

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

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

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

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

source build/envsetup.sh
lunch6
mmm development/tools/idegen/

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

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

sudo development/tools/idegen/idegen.sh

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

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

sudochmod777 android.imlsudochmod777 android.ipr

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

sudo gedit  android.iml

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

<excludeFolderurl="file://$MODULE_DIR$/bionic" /><excludeFolderurl="file://$MODULE_DIR$/bootable" /><excludeFolderurl="file://$MODULE_DIR$/build" /><excludeFolderurl="file://$MODULE_DIR$/cts" /><excludeFolderurl="file://$MODULE_DIR$/dalvik" /><excludeFolderurl="file://$MODULE_DIR$/developers" /><excludeFolderurl="file://$MODULE_DIR$/development" /><excludeFolderurl="file://$MODULE_DIR$/device" /><excludeFolderurl="file://$MODULE_DIR$/docs" /><excludeFolderurl="file://$MODULE_DIR$/external" /><excludeFolderurl="file://$MODULE_DIR$/hardware" /><excludeFolderurl="file://$MODULE_DIR$/kernel" /><excludeFolderurl="file://$MODULE_DIR$/out" /><excludeFolderurl="file://$MODULE_DIR$/pdk" /><excludeFolderurl="file://$MODULE_DIR$/platform_testing" /><excludeFolderurl="file://$MODULE_DIR$/prebuilts" /><excludeFolderurl="file://$MODULE_DIR$/sdk" /><excludeFolderurl="file://$MODULE_DIR$/system" /><excludeFolderurl="file://$MODULE_DIR$/test" /><excludeFolderurl="file://$MODULE_DIR$/toolchain" /><excludeFolderurl="file://$MODULE_DIR$/tools" /><excludeFolderurl="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/bashsource build/envsetup.sh
lunch6
emulator

更改shell文件的权限

sudochmod777 ./start_emulator.sh

启动模拟器

./start_emulator.sh

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

在这里插入图片描述

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

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

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

  • 作者:lpf_wei
  • 原文链接:https://blog.csdn.net/u014078003/article/details/123842413
    更新时间:2022-07-22 13:06:26