用AndroidStudio打开源码遇到问题:source for android api 25 platform not found

KaelLi 2017年8月7日21:18:20
评论
2,3275

很多时候我们需要查看Android的源码,去了解一些控件的官方实现和一些底层逻辑。如果你需要查看的比较细致,比较深入,比如想看framework层的甚至kernel层的,那么你实际上需要的是整个AOSP(Android Open Source Project)的代码。而如果查看的只是控件层,只看Java代码,那么通过Android Studio下载即可。

以往我要看代码,一般都会打开虚拟机中的Ubuntu,然后去看AOSP里的代码。不过现在人变懒了,我只是想要打开View类和ViewGroup类看看,干嘛还要费那么多力气?比较人性化的Android Studio给我们提供了另外一个选择:下载Android的Java源码到硬盘上,然后在Android Studio里面直接打开查看!有些同学可能会困惑了,我的SDK里面不是有源码吗,比如我用了TextView,然后直接点开它不就是Android的TextView源码了?实际上那只是源码很小的一部分,里面的方法都没有给出实际的实现,而是单纯的

throw new RuntimeException("Stub!");

要不然你以为View这么重要的类才不到1000行?实际上作为所有控件的终极基类,View的代码量可是超过2万的!

而这个时候,你会在你的Android Studio上部看到提示:

Decompiled .class file, bytecode version XX(java X)

Sources for 'Android API 25 Platform' not found.

然后右边会有Download和Refresh(if already downloaded)的url可供点击。如果之前没有下载过源码,那么点击Download即可进行下载。而我在下载完后,发现依然有这样的提示,这是什么情况?难道源码实际上没有下载下来?去sdk目录看了一下,源码正乖乖的躺在那里。那是怎么回事呢?我到这一步的时候已经懵逼了,不得已只能求助于万能的Google啦。结果还真是找到了,Google毕竟没有辜负我的希望啊。

如果是Windows用户,那么编辑这个文件:

C:\Users\username\.AndroidStudioXXX\config\options\jdk.table.xm

其中AndroidStudio后面的XXX代表你当前使用的Android Studio的版本,毕竟可能你还有一些更老的版本在升级的时候是不会自动删除的。然后在文件里查找<name value="Android API 25 Platform" />(因为我用的是25,如果你要看的是更新的或者更老的,就把25换成相应的版本)。找到了以后,再找到sourcePath标签,将其改为如下的形式:

<sourcePath>
    <root type="composite">
        <root type="simple" url="file://C:/Develop/Android/AndroidStudioSdk/sources/android-25" />
    </root>
</sourcePath>

其中url那后面的一串相信你能明白是什么东西。如果不明白也就没有继续做开发的必要了,改完以后,保存文件,重启Android Studio,再打开View类,看看是不是由一个不到千行的小文件,变成了一个两万多行的庞然大物了?如果是macOS或者Linux系统,同样是修改对应AndroidStudio的jdk.table.xm文件,同样是在sourcePath标签下添加源码的路径即可。

KaelLi
  • 本文由 发表于 2017年8月7日21:18:20
  • 转载请务必保留本文链接:https://www.kaelli.com/11.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: