当前位置: 首页 > news >正文

使用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设备了,然后我们需要执行如下命令:

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

http://www.xdnf.cn/news/1237213.html

相关文章:

  • 关于域名的级别
  • Linux环境下使用Docker搭建多服务环境
  • Apache Shenyu 本地启动及快速入门
  • Flutter开发 dart异步
  • 动态置信度调优实战:YOLOv11多目标追踪精度跃迁方案(附完整代码)
  • 基于springboot的在线考试系统/考试信息管理平台
  • 生成式人工智能展望报告-欧盟-04-社会影响与挑战
  • trace-cmd记录线程被中断打断的时间
  • Java 实现poi方式读取word文件内容
  • 编译旧版本的electron内核
  • VisualStudio的一些开发经验
  • 能表示旋转的矩阵是一个流形吗?
  • C++与Go的匿名函数编程区别对比
  • 吴恩达【prompt提示词工程】学习笔记
  • 曼哈顿距离与切比雪夫距离
  • 北京-4年功能测试2年空窗-报培训班学测开-第六十六天
  • Digit Queries
  • Arrays.asList() add方法报错java.lang.UnsupportedOperationException
  • 常见的深度学习模块/操作中的维度约定(系统性总结)
  • 接口测试用例的编写
  • Java 大视界 -- Java 大数据机器学习模型在金融市场情绪分析与投资决策辅助中的应用(379)
  • WSUS服务器数据库维护与性能优化技术白皮书
  • Nvidia Orin + RealSense D435i 与3D地图实现导航
  • ulimit参数使用详细总结
  • 第九章:了解特殊场景下的redis
  • 推荐系统学习笔记(八)其他召回通道
  • 机器人抓取流程介绍与实现——机器人抓取系统基础系列(七)
  • 《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:人工肌肉研发进展及一款超生物肌肉Hypermusclet的设计与制造
  • 最小半径覆盖问题【C++解法+二分+扫描线】
  • 从零开始学Express,理解服务器,路由于中间件