使用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成功的截图:

相关推荐
a3158238062 天前
Android13隐藏某个App需要关注的源码文件
android·java·framework·launcher3·隐藏app
Yang-Never3 天前
Open GL ES->以指定点为中心缩放图片纹理的完整图解
android·java·开发语言·kotlin·android studio
啃火龙果的兔子3 天前
android studio运行下载gradle特别慢怎么处理
android·ide·android studio
longforus3 天前
Flutter iOS 真机部署异常经验(Android Studio 提示无法运行,但 Xcode 可正常运行)
flutter·ios·android studio
dazhong20123 天前
Android Studio 安装之历史版本下载问题解决
android·ide·android studio
啃火龙果的兔子3 天前
android studio first run : unable to sccess android sdk add-on list
android·ide·android studio
a3158238063 天前
Android Framework开发知识点整理
android·java·linux·服务器·framework·android源码开发
yuanhello3 天前
【Android】Android的键值对存储方案对比
android·java·android studio
帅得不敢出门4 天前
Android8 Framework实现Ntp服务器多域名轮询同步时间
android·java·服务器·python·framework·github
帅得不敢出门4 天前
Android11~13 Framework实现Ntp服务器多域名轮询同步时间
android·服务器·python·framework·github