用Android studio查看系统源码

(本文教程需要科学上网)

最近在看AndroidClassLoader,但是PathClassLoader的源码是看不到的,你能看到的就只有这样的:

image.png

当看到new RuntimeException("Stub!")出现在.class文件中的时候,就说明这个文件是反编译的文件,我们是看不到它的源码的。
现在讲一种可以使用Android studio看的方法。

第一步:

Google中搜索PathClassLoader source code
如下图:

image.png

选择第一个。
因为我们是在看PathClassLoader的代码时候找不到源码的,所以我们搜的是PathClassLoader的源码,这里只是举个例子。
进去之后我们沿着路径网上找,
image.png

我们看到PathClassLoader是在libcore-snapshot文件夹里边的,我们点到这个文件夹上一级platform。在platform中找到libcore-snapshot文件夹,然后找到这个文件夹附近的libcore,因为libcore-snapshot是快照版本,我们要找的是正式版本。点击libcore,进去之后我们可以看到一个git语句
image.png

把这句话复制下来,我们进行第二步。

第二步:

如果你的git已经配置了代理,那就没啥好说的了,可以直接跳过。如果没有配置,可以接着看。
(注意!下边的操作不用切换科学上网工具的代理模式,用PAC模式就好。)
windows系统为例,我们现在dos或者git bash里边配置git的代理,命令为,分别设置httphttps两个请求
git config --global https.proxy "127.0.0.1:10809"
git config --global http.proxy "127.0.0.1:10809"
127.0.0.1是固定的,就是指向机器的本地localhost地址。10809的内容是不一样的,这个代表端口号,是看你的科学上网的代理端口号是什么就就填什么。

image.png

以我的为例,我用的是v2,进到参数设置中可以看到上图,我们看到的端口号是10808,但我能用到的却是下边的http10809(socks+1---> 10808+1),这一步折磨了我一下午,查了好久,最后是一个朋友提醒了我一下。
还有个大佬提醒我可以给整个命令行设置代理,命令是
set http_proxy=socks5://127.0.0.1:10808
set https_proxy=socks5://127.0.0.1:10808
这个我试了一下,不行,但是我看网上的文章基本都是这个,那就应该是我漏了什么配置吧。因为目的不在这,我也就没深究。
总结就是,只有我们设置了git命令行的代理,我们才能进行下载,不然就会出现403的错误。
做完上边的事情,我们就可以
git clone https://android.googlesource.com/platform/libcore
等待下载完就好了。

第三步:

资源下载完之后,我们就可以沿着路径dalvik.system的路径找到PathClassLoader的类了,是有完整源码的类。(libcore下边是一个一个的项目,pathclassloader的上层包名有dalvik的字样,那我们就进到dalvik项目,进去之后能看到完整的项目结构,然后你就能按照本能找到你想要的pathclassloader

image.png

如果我们想要在Android studio中看到源码,那就需要把dalvik项目下的dalvikde文件夹(内部包含java文件的dalvik)复制到这个我们的 ..(项目引用的sdk路径)\android-sdk\sources\android-29(我选的是Android-29)文件夹下边。但是在做这一步之前我们还需要做些操作,我们这些代码是从git上拉下来的,内部存在着很多tag,所以那我们需要复制合适我们的tag下边的代码。
接下来进行切换tag
git checkout android-10.0.0_r20
Android29对应Android-10
这个时候我们可能遇到下图中的问题
image.png

我也不知道咋回事,别人做一点事没有,哎,好气。又查了很久,真的想放弃了。。。。
算了,继续。
我是从这个博客中找到答案的,非常感谢!(虽然不是按照他的做法做的)
解决The following untracked working tree files would be overwritten by checkout错误
直接说做法吧:
git branch -a
查看所有的分支,一看不得了,全部是红的,那就是没有add进git里啊,我也不知道为啥或这样,或许这就是天意吧。
git add -A
把所有的分支都add进去,
然后执行前边切换分支的操作
git checkout android-10.0.0_r20
还是报了错,说我还有东西没有commit,他**的,我clone下来,也没做什么操作。
git commit
执行完之后,再执行切换分支操作。最后你可以执行 git status验证切换成功没有。
大功告成!
接下来,我们就把dalvik项目下的dalvik的文件夹(内部包含java文件的dalvik)复制到这个我们的 ..(项目引用的sdk路径)\android-sdk\sources\android-29文件夹下边。
复制好之后,我们进到Android studio里边sync一下,再搜索一下PathClassLoader,成功!

你可能感兴趣的:(用Android studio查看系统源码)