前言:

限于以前工作环境,各种软件资源受限,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://MODULEDIRMODULE_DIRMODULED​IR”/需要去掉的模块名>就可以排除这个模块了,我这里是全部导入所以没有修改这个文件

源码导入时间比较久,要经过很长的等待。

设置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调试跟流程还是强太多了。

Android studio断点调试源码相关推荐

  1. Windows系统Android Studio断点调试Android源码

    之前我都是在Windows环境下开发Android.调试代码的时候有时候要进到系统类中去断点调试代码,经常断点断不到,或者就跑飞了. 最近因为在研究一些源码,比如LayoutInflater.infl ...

  2. Android AOSP基础(四)Source Insight和Android Studio导入系统源码

    本文首发于微信公众号「刘望舒」 关联系列 Android AOSP基础系列 Android系统启动系列 前言 在上一篇文章Android AOSP基础(三)Android系统源码的整编和单编中,我们对 ...

  3. 使用Android Studio导入安卓源码

    1 背景 这篇文章主要说明的是用它来看源码的相关配置(该实例依据官方源码进行配置说明).在android源码中发现有一个development/tools/idegen目录,查了一下发现是生成IDE的 ...

  4. Android studio断点调试(全在这里)

    转载地址:http://blog.csdn.net/huangxiaominglipeng/article/details/53100811 有人说Android 的调试是最坑的,那我只能说是你不会用 ...

  5. Android Studio 导入 AOSP 源码

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  6. Android Studio 导入 AOSP 源码 1

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  7. NanoMsg框架|Android Studio编译NanoMsg源码

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2184字,预计阅读6分钟 导语 前面的章节已经把NanoMsg的简介,及C#相关的NNanoMsg使用Demo已经介绍完成了, ...

  8. android studio im源码,Android Studio 导入 AOSP 源码

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  9. Android Studio 简易计算机源码

    效果图: 源码: 布局样式: <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns ...

  10. Android studio断点调试

    如果使用断点调试 1.判断大概哪个地方出现了问题 2.在怀疑的代码旁加上断点 3.点击调试运行 4.程序到断点的地方停下来,接下来我们就一步步开始即可 5.没有5了,断点调试超级方便 来个小例子感受一 ...

最新文章

  1. Spring-国际化信息03-容器级的国际化信息资源
  2. linux查看文件的编码格式的方法 set fileencoding
  3. webug3.0下载环境搭建使用
  4. 银行利率涨了,定期存款有必要取出再存吗?
  5. Docker - 避免启动container后运行shell脚本执行完成后docker退出container
  6. C 怎么读取Cpp文件_opencv从yaml文件中读取矩阵(c++)
  7. linux Swap交换分区概念
  8. java rt_java中rt包中源码了解
  9. C++混淆点-static关键字理解
  10. 链表合并面试100题系列之18链表合并
  11. 网课老师凭什么年薪200万?
  12. LDAP实现企业异构平台的统一认证
  13. 安卓怎么搭建开发环境 安卓开发环境搭建教程
  14. 超级终端连接华为交换机_小编解决win8系统使用超级终端连接华为交换机的设置步骤...
  15. java将pdf转换为jpg图片格式
  16. 线性回归相关系数c语言,线性回归中相关系数.doc
  17. Pazera Free Audio Extractor 中文版 - 轻松将视频背景音乐/对话音频提取出来的免费软件...
  18. 单片机学习日记- Day12
  19. 半连续性:上半连续与下半连续
  20. JGG | 江南大学翟齐啸组解析肠道益生菌体外免疫刺激活性的种属依赖性

热门文章

  1. C语言——打鱼晒网问题
  2. 使用fpdf2将txt文本转可编辑pdf报错解决办法
  3. java代码-zip解压不可预料的压缩文件末端一级压缩包中的文件为0kb以及目录创建流会报错
  4. bmp格式如何转换成jpg
  5. 黎曼ζ(2)的导数:ζ'(2)=-1
  6. html混淆压缩,JavaScript的压缩和混淆
  7. manjaro安装微信
  8. 大数据可视化 课堂笔记-1
  9. 小火狐进化_神奇宝贝御三家还是原来的最可爱?新的三只也不差
  10. 在windows和Linux上安装ImageMagick与jmagick,Maven配置、Java图片压缩代码(整理网上、结合自己情况、编写出来的新安装方式)