AS源码查看异常:Decompiled .class file,bytecode version:52(Java 8)

继昨天AS不认识JDK的问题解决了之后,今天又不能看Android源码了。所有的源码打开都是.class文件,每个方法都一致的抛出异常:

    @RecentlyNonNull
    public final Message obtainMessage(int what, int arg1, int arg2) {
        throw new RuntimeException("Stub!");
    }

解决方法局部参考了这个链接:
https://blog.csdn.net/fishing_monster/article/details/102726663

分析原因:

没有下载源码或AS没有关联到指定版本的源码导致,我这里配置的SDK版本是Android28。正常源码打开应该是.java文件~

解决思路:

1、首先查看源码是否下载:打开SDK manager,勾选show package details,可以看到28版本的源码已经下载。


image.png

2、打开jdk.table.xml文档,Windows系统在C:\Users\用户名.AndroidStudio3.4\config\options目录下查看,找到指定版本,我的是28的配置,看看<sourcePath>标签下配置的源码路径是否正确,好吧,也没有问题,我懵逼了。

image.png

3、按照上面链接里作者的方法,打开build.gradle文件,将SDK版本修改一下,由28改成26,再同步一下,诶,可以看源码了!(23-29的版本我都下载了)
再改成27,还是可以。难道成功了?!那我们再改回28版本,发现还是看不了,29,还是不行......

image.png

4、在AS里直接在源码目录上手动选择到28版本,打开对应的.java文件,发现是乱码,29同样(只是在AS里查看是乱码,notepad打开没有问题)。难道是因为乱码导致的不能查看?公司电脑有加密系统,乱码原因不晓得是不是受到影响~我有一个大胆的想法,把28版本的源码删除重新下载试试。

image.png
28版本源码乱码

5、删除28版本源码,重新下载。在源码目录下将28版本源码剪切出去。打开SDK manager,发现28版本的源码处于未下载状态:

image.png

点击左侧下载图标,点击OK开始下载:

image.png

几分钟后下载完成:

image.png

先从AS里通过目录打开刚下载的28版本源码,嗯~完美的Java文件。修改build.gradle文件,将SDK版本改回目标版本28,重新同步一下,问题解决。

handler部分源码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。