Android Studio 看不到 DexClassLoade
关键字: DexClassLoader throw new RuntimeException("Stub!")
Android Studio 查看 dalvik.system 包源码
在看 DexClassLoader
源码的时候发现无论如何都关联不到源码,明明在 SDK Manager
中已经下载了相应的 SDK
源码,就是无法查看。但是呢,其他部分源码还是能看到的,比如:ViewrootImp
等。然后发现所有 dalvik
都没有源码。最终解决办法:
1、去 AOSP
中下载相应的源码
2、关联源码
下载源码
AOSP 中,我们平时用到最多的 Framwork
源码都在 platform/libcore
这个目录下面,找到相应的 Android 源码版本就能看到 dalvik 目录,进入。然后再右上角有 [tgz] 的字样,点击下载即可。
关联源码
我们所有的源码都放在 sdk 目录的 source 目录下
image.png
可以看到你的源码目录是没有 dalvik 目录的,之前的 AS 版本是有自动下载的,不知道从哪个版本开始就不会再下载了,将你下载的源码直接拷贝到对应的平台的 dalvik 目录下即可(目录一定不要搞错了)
重启 AS 即可看到
在解决这个问题期间,用各种关键字,查找了各种解决方案,都不尽如意,有很多都是修改 AS 源码关联配置的方法,但是没什么卵用,既然解决不了问题就要自己去解决。通过查找各种资料途中,也总结了一些经验。
1、碰到问题最快最直接的方式是在吸取前辈的人的经验,有解决方案最好不过了
2、是不是搜索关键字不准确?各种尝试搜索关键字,信息检索能力也是非常重要的一环
3、从信息检索中就算没有解决问题,也可以搜集到一些经验,比如说上面碰到的问题,可以通过修改 AS 源码路径配置来关联源码。不经让我反问自己几个问题
- AS 是如何关联源码的,关联的机制是什么
- 源码在源码放在哪里?为什么没有关联上,是没有源码,还是有源码关联不上?
- 对上述问题进行查找验证,发现源码目录真是没有 DexClassLoader 源码
- 没有源码这么解决?我已经熟悉了 AS 源码关联机制能不能自己下载源码关联
- 去哪里下载?下载后放哪里?
上述是一系列解决问题的思路链路,觉得自己还需要多多锻炼这种解决问题的思路和能力。
顺便提一下,SDK 提供了两份代码,需要注意两个比较重要的文件夹,platforms
和 sources
,platforms
中是 SDK 提供给开发者各个平台的源码jar包,用来编译使用,这里面只有 .class 文件。但是如果我们需要看源码,必须下载对应的 .java 文件。依次类推,Gradle 管理的所有源码也是这个机制。我们平时 maven 上传库的时候,也是传两份,一份jar包,一份源码。