Android studio断点调试源码

2022-07-16 11:36:42

前言:

限于以前工作环境,各种软件资源受限,USB口权限受限等等,程序调试只能依靠加Log的方式跟流程。主要工具就是SourceInsight,导入framework源码和应用程序源码,看代码跳转会比较方便。但是调试效率确实不高,而且需要加大量Log才能将一个流程弄清楚。
现在将AS源码环境配置好之后,将整个源码导入,可以打断点来调试源码,这样效率就高太多了,不过AS的源码环境配置起来还是比较麻烦的。也遇到了不少坑。现在总结一下整个过程,以免时间长了忘记,也可以给需要的同事当做指导教程。

一、Android源码的准备

https://lineageos.org/
参考这个官方教程
在这里插入图片描述
点击右上角wiki
在这里插入图片描述
点击list of How-tos并选择import the sources to Android Studio / IntelliJ查看教程
按照教程中的命令一步一步执行
source build/envsetup.sh
make idegen && development/tools/idegen/idegen.sh
但是到这一步我失败了,其实这一步要分成两步来看,前面一步make idegen这个命令是编译idegen.jar,我们要想导入源码就是基于这个jar包来生成AS的配置文件的。我执行到这步其实是成功生成了这个jar包的,但是工程中编译脚本对编译后的文件重新指定了目录,而不是我们默认的在源码根目录里面的out/里面了。我这块编译后的文件指定到了源码根目录同一级的OUT/目录,这里我的处理办法是在源码根目录创建一个out目录做一个软链接指向OUT目录
ln -s …/OUT/ out
这样就可以解决问题了。
当成功执行完development/tools/idegen/idegen.sh后会在源码根目录生成android.ipr,android.iml
android.ipr:通常是保存工程相关的设置,比如编译器配置,入口,相关的LIBRARIES等
android.iml:主要描述了modules,比如modules的路径,依赖关系等
到目前为止,我们就完成了源码的准备工作。

二、AS准备工作

在这里插入图片描述
源码导入AS之前,按照官方教程我们先修改一下AS的配置(找到AS的安装bin目录),
在这里插入图片描述
如果系统为32位则修改studio.exe.vmoptions文件,如果系统为64位则修改studio64.exe.vmoptions,调整其中的-Xms和-Xmx参数,官方要求至少在748m以上,在机器配置比较好的情况下可以尽可能调大一点,我的配置如下:
在这里插入图片描述
这个时候打开AS,打开已经存在的项目,找到源码根目录,可以看到上面生成的andorid.ipr文件已经被AS识别,直接点击就可以导入源码了。如果不需要整个源码导入可以修改生成的android.iml文件。在这个文件中添加<excludeFloder url=“file:// M O D U L E D I R MODULE_DIRMODULEDIR”/需要去掉的模块名>就可以排除这个模块了,我这里是全部导入所以没有修改这个文件
在这里插入图片描述
源码导入时间比较久,要经过很长的等待。

设置R文件
Project Settings -> Modules中选择out/target/common/R as Sources
在这里插入图片描述

导入之后在查看代码过程中会发现跳转有问题,比如在我们 应用程序里面点击跳转并没有跳转到我们的framework/base…里面的代码,解决这个问题我们需要重新配置AS的JDK和SDK。

三、配置JDK和SDK

在这里插入图片描述
1.点击File-Project Structure-SDKs,点击上面JDK,将Classpath全部删除
在这里插入图片描述
2.点击Android API 23 Platform,Java SDK选择刚刚处理的JDK
在这里插入图片描述
3.然后设置Project的SDK版本为我们上面处理的API 23
在这里插入图片描述
4.设置Modules,点击+,选择Framework下的Android,然后最右边Dependencies,将除了API 23 Platform和以外其他全部删除,然后点击最右边+在面板中选择第一个JARS or…将external,frameworks,packages导入。
在这里插入图片描述
这个时候虽然有部分内容报错,但是看代码跳转都是正确的,写代码也有提示,断点调试也可以正常使用。所以暂时忽略那些错误,等遇到问题再解决,毕竟比加Log调试跟流程还是强太多了。

  • 作者:完全不想写博客的人
  • 原文链接:https://blog.csdn.net/lq576165360/article/details/85274394
    更新时间:2022-07-16 11:36:42