当我们想探索Android framework层的API实现时,尽管我们在sdk manager里勾选了对应的source,但实际情况仍然是一些类不能正常的链接。
1.首先检查下配置文件里是不是匹配到了/Users/[username]/Library/Application Support/Google/AndroidStudio4.1/options/jdk.table.xml 目录的source路径是否是Android sdk里的对应的路径,或者工程里 compileSdkVersion。(其他操作系统请自行搜索关键字)
如果不是(我的情况就是这种,sdk里搞了多套源码,然后这个jdk.table里就乱了),修改对应的正确路径,restart AndroidStudio,sync下整个工程项目
2.如果上述操作仍然没有链接到源码,那么这大概是正常的。这是因为通过AndroidStudio 的sdk manager下载的source不全导致,比如:
不信的话你可以去/Users/[username]/Library/Android/sdk/sources/android-30去搜索,也是没有这个文件的。
这时,我推荐里一个大杀器,先去搜一下这个类在哪个包下面。
比如这个PathClassLoader.java源码路径是libcore/dalvik/src/main/java/dalvik/system/,于是我就去源码工程对应的模块下把整个目录clone下来 。
切到目标分支,把libcore/dalvik/src/main/java/dalvik 整个目录拷贝到
/Users/[username]/Library/Android/sdk/sources/android-30/ 目录下。
重启Android studio,sync一下整个项目。神奇的一幕出现了:
点击对应的父类,均可以正常跳转。
其他需要的类可以类似方法,也会遇到本地source只有一部分,clone下来的是比较完整的,可以直接覆盖或者跳过重复文件
这种方法比下载源码+一堆配置+编译源码方便多了,毕竟我不是做源码开发,只是为了了解实现过程。