很多时候我们需要查看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标签下添加源码的路径即可。
评论