使用AndroidStudio调试Framework源码

目前虽然谷歌推出了ASFP用于查看和调试源码,但是ASFP只能在Linux上使用,并且内存占用比AndroidStudio还高。所以,本文的目标就是直接使用AndroidStudio在Windows/Mac/Linux上查看和调试源码(不过这里仅能查看和调试Java代码),本文演示也是在Windows上演示的,可能在不同操作系统上有细微差异。

准备工作

1.首先我们肯定是要下载我们的源码了,因为Windows上不支持repo命令,所以我们只能直接通过git命令下载指定的仓库了,一般来说Framework大部分的Java源码都在frameworks/base这个仓库,所以我们这里就先下载frameworks/base仓库代码。这里建议大家在下载源码时,最好按照源码的目录结构来新建目录以及下载源码。比如我这里源码根目录就是:D:\aosp,所以我frameworks/base仓库的路径就是:D:\aosp\frameworks\base

2.源码下载好了,我们自然是需要一台user debug的Android设备了,然后我们需要执行如下命令:

bash 复制代码
adb root
adb shell setprop persist.debug.dalvik.vm.jdwp.enabled 1
adb reboot

然后我们等待设备重启即可。

配置AndroidStudio

1.首先我们先通过AndroidStudio的File-Open,直接打开我们的源码根目录,如下图所示

2.然后我们右键我们的根目录,点击Open Module Settings,如下图所示:

3.然后按照如下图所示操作,如果需要选择多个源码路径,重复第二步和第三步即可

操作完成以后会如图所示,选择完成以后记得点Apply。

4.选择完源码以后,我们还需要选择我们的SDK。这里选择SDK主要在你没有完全导入完源码的时候,方便你跳转查看代码。选择的原则就是和你源码的Android版本匹配即可。我这里就选择的是API 35,对应的就是Android15。

5.接着我们还需要让IDE能够优先识别我们的源码而不是SDK的代码,所以我们还需要按照如下操作执行一下,执行完也需要点击Apply按钮。

执行完成以后如下图所示:

6.这一步操作有时候做完以后,我们再次打开这个界面,发现SDK又跑到上面去了,这时候我们可以直接关闭AndroidStudio,在源码根目录下找到.idea文件夹,然后里面有个iml文件(大家记得打开隐藏文件夹显示)。我们手动改一下这个文件的内容即可,如下图所示:

调试源码

配置好AndroidStudio,我们就可以开始Debug我们的源码了,打断点这些操作就不复述了。下面就只讲一下如何开启Debug。

我们操作步骤还是Run-Attach Debugger to Android Process,如下图所示。

然后选择我们需要debug的进程即可,这里注意一下system_server进程实际是system_process。

最后附上一张Debug成功的截图:

相关推荐
小墙程序员18 小时前
Android 性能优化(六)使用 Callstacks Sample 和 Java/Kotlin Method Recording 分析方法的耗时
android·性能优化·android studio
火龙映天2 天前
解决Android Studio中创建的模拟器第二次无法启动的问题
android studio·模拟器
真夜3 天前
关于rn下载gradle依赖速度慢的问题
react native·gradle·android studio
moning3 天前
Window 的 Type 失效了?IME 为什么在 Toast 下方?
前端·操作系统·android studio
编程乐学3 天前
网络资源模板--基于Android Studio 实现的新闻App
android·android studio·移动端开发·新闻·安卓大作业·新闻app
不想迷路的小男孩3 天前
Android Studio怎么显示多排table,打开文件多行显示文件名
android·ide·android studio
广煜永不挂科4 天前
Android Studio关于Connection refused: connect报错
android·ide·android studio
林林要一直努力4 天前
Android Studio安装,SDK、Gradle、模拟器、AS路径改为非C盘(Windows为例)
android·ide·android studio
编程乐学4 天前
网络资源模板--基于Android Studio 实现的课程管理App
android·android studio·大作业·移动端开发·安卓移动开发·课程管理