Android Studio如何查看源码并调试的方法步骤

 更新时间:2020年5月15日 16:48  点击:2488

背景

最近遇到一个Dialog问题,在6.0的手机上才可以重现,但是我们的工程已经是targetsdk=28了,点击Dialog的引用,只能看见28的class文件,现在我也越来越懒了,以前针对这种问题,我都会写个demo,去重现问题,但是现在希望能直接在当前工程快速定位出原因,能够基于源码debug肯定更好了,为了实现这个懒的目标,我找了很多办法,下面就一一介绍下

方法一 切换compilesdk

studio默认使用的是gradle里配置的compilesdkversion,只要你把compilesdkversi设置成23,自然就可以通过查看define的快捷键,进入到对应的class文件,但是我的项目已经是28了,降回6.0,必然有很多API无法编译,此路不同

方法二 寻找studio插件

既然studio提供的默认方式不行,那我们就找插件来实现呢?通过各种搜索大法,我找到了一款不错的插件,AndroidSourceViewer ; 功能十分强大:

  • 支持查看 Android / Java 任意版本源码
  • 支持对比 Android / Java 任意两个版本源码差异
  • 支持 Android 官网文档查看和方法定位
  • 支持 Native 方法源码查看

具体可以看截图:

正当我满心欢喜的开启debug时,发现studio无法识别该代码,原因是作者的思路是在类名前面加版本号。。。例如.AndroidSourceViewer/cache/android/app/8.0.0_r4-Dialog.java于是我愤怒的提了个issue此路再次失败

方法三 修改studio配置,直接链接到对应源码

我的想法时,我找到studio跳转源码的配置文件,将原本跳到28的jar包的配置,修改成23,这样不就完美了,于是我又开启了搜索大法,网上都说,修改jdk-table.xml,可以达到我的目的,然而。。亲测不可以;不论我怎么修改,都没有反应;
于是我又想到了idea的缓存,果然功夫不负有心人,我找到了这么个文件:

.idea/libraries/Gradle__android_android_28.xml

<component name="libraryTable">
 <library name="Gradle: android-android-28">
  <CLASSES>
   <root url="jar://$USER_HOME$/Library/Android/sdk/platforms/android-27/android.jar!/" />
  </CLASSES>
  <JAVADOC />
  <SOURCES>
   <root url="file://$USER_HOME$/Library/Android/sdk/sources/android-28" />
  </SOURCES>
 </library>
</component>

PS:该文件可能没有,大家可以手动添加到自己的缓存里

通过修改这个文件,只要源码路径存在,那就可以很方便的其他版本的源码并且调试了;但是修改源码路径有风险,大家还是谨慎操作,同时记得不用的时候清空缓存。。

总结

现在国内网上很多文章,都是复制的,我也不知道为啥;像我搜到的jdk-table.xml,根本没法用,可能它只是对新项目生效的,有可能是studio版本升级导致,总之,这个文章的原作者也是很辛苦的,但是其他人复制过去,又不加以维护,实在是误人子弟。。

另外一点就是,可以看源码还是很爽的~

到此这篇关于Android Studio如何查看源码并调试的方法步骤的文章就介绍到这了,更多相关Android Studio查看源码并调试内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞! 

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • Rstudio中安装package出现的问题及解决

    这篇文章主要介绍了Rstudio中安装package出现的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • jQuery 2.0.3 源码分析之core(一)整体架构

    拜读一个开源框架,最想学到的就是设计的思想和实现的技巧。废话不多说,jquery这么多年了分析都写烂了,老早以前就拜读过,不过这几年都是做移动端,一直御用zepto, 最近抽出点时间把jquery又给扫一遍我也不会照本宣科的翻译...2014-05-31
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • Visual Studio 2015下载和安装图文教程

    这篇文章主要为大家详细介绍了Visual Studio 2015下载和安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • Node调试工具JSHint的安装及配置教程

    现在我们介绍一种在Node下检查简单错误的JS代码验证工具JSHint。  JSHint的具体介绍参考http://www.jshint.com/about/,说直白点儿,JSHint就是一个检查JS代码规范与否的工具,它可以用来检查任何(包括server端和client端...2014-05-31
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • 关于Visual Studio无法打开源文件"stdio.h"问题

    这篇文章主要介绍了关于Visual Studio无法打开源文件"stdio.h"问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-03
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02