案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述如何阅读android源码相关的知识,希望能为你提供帮助。
有一次当我打开grepcode 的时候,显示了503,我以为只是短期的服务器错误,没想到持续到现在了...
相同的体验还有
文章图片
其实还有些大大小小的站也关闭了,很忧伤...
好了,回到主题,本篇主要讲如何阅读 android framework 层的源码。
看下 Android 的整体架构:
文章图片
关注本号的大多数同学都是做应用层的,所以对我们来说一般只要看到Framework 的源码:
比如:AMS,WMS,PMS 等...包括上周推送的 AccessibilityService 源码,以及 Activity 生命周期是如何回调的,都涉及到该类知识。
本篇文章不讨论,能够下载整个几十G的源码,修改编译后,导入到 AS的方式,成本比较高,可以自行搜索。
1
在线查看
在线查看,这个方式一般适合有针对性的查看某个类:
网站1
http://androidxref.com/
文章图片
你可以查看各个版本的源码。
给大家录制个gif:
文章图片
网站2
https://www.androidos.net.cn/sourcecode
文章图片
也比较方便,还是录个gif 吧:
文章图片
2
我要在 AS 中看
在线查看一般都是比较精确要看哪个类的时候,并不能满足我们日常快速查看的需求。
例如我忽然想看下 startActivity 的流程,总不能还在线一个个类搜索吧,太慢了。
其实多数hide API的类源码,我们都下载下来了,不信你打开sdk 文件夹。
比如 ContextImpl 这个类:
文章图片
包括 AMS 这些类,其实源码中都包含,只是在对应的android.jar 中缺少这些class 文件而已。
所以我们可以将sdk 中使用的android.jar 替换为完整的jar。
去哪找完整的jar 呢?自己编么?
自己编译成本是不是过高了,这么多人有需求,那么 github 上面肯定有啦。
https://github.com/anggrayudi/android-hidden-api
文章图片
选择对应的版本,下载对应的jar 文件。
然后替换即可,例如我这里替换了android-26下的jar。
文章图片
你可以将原本的改下命名保留,然后将刚下载的复制过去即可。
当你完成这些操作,AS 会自动感知到发生的变化,然后重新建立索引,稍等下就好了。
注:如果你担心有什么副作用,可以选择一个不常用的版本替换,比如你们日常使用26,你可以将25的进行替换,新建一个module compileSdk=25就可以查看了。
然后你就可以在 Android Studio 中来放肆的查看源码了:
文章图片
偶尔会有一两个类找不到,那么你就可以配合在线查看的方式去看了。
3
我要自己下载framework 源码查看
当然了,自己下载源码来查看肯定是最靠谱的方式,但是自己下载有两个问题。
1. 在哪里下载呢?
2. Android 源码那么大,可以只下载framework 部分么?
3. 如何阅读
官方地址:
https://android.googlesource.com/
如果你的网络够给力,直接下载。
清华大学镜像地址:
https://aosp.tuna.tsinghua.edu.cn/
当然我们并不希望下载完整的源码,下载下来我也不知道怎么编译。
所以我们只下载自己需要的部分:
git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base
【如何阅读android源码】当然github 也有地址:
https://github.com/aosp-mirror/platform_frameworks_base
也可以提供下载。
相信到这里,你肯定能下载下来一份frameworks源码!
找个称手的工具
源码下来了,如何更方便自己阅读呢?
那就需要一个称手的软件,在windows 下可以使用`source insight`。
作为 MAC 用户很忧伤。
以下内容针对 MAC 用户,windows 用户去就使用`source insight`吧。
1. sublime
sublime 也算是我非常喜欢的一个文本编辑器,当然功能非常强大,你可以给它安装个ctags 插件,然后用来查看源码。
最终效果大概是这样的:
文章图片
由于大家版本都不同,如何安装自己搜索啦,关键词sublime 查看源码
2. UnderStand
最终的效果是这样的:
文章图片
记得导入后等它index 完毕,快捷键什么的,自己去摸索吧。
功能非常强大,可以生成各种图。
缺点就是有点卡。
个人非常推荐替换android.jar 的方式,当然也建议大家尝试摸索下上述软件。
如果你有更好的方式,欢迎留言~
最后 wanandroid.com 也在开发在线源码阅读的能力,给大家多增加一个备选方案!
参考
https://github.com/foxleezh/AOSP/issues/1
原文连接:https://kuaibao.qq.com/s/20180718G08DV600?refer=cp_1026
推荐阅读
- 阿里云数字化转型方案再升级,移动研发平台EMAS助力海底捞超级App“云上捞”
- Unity 3D 光照贴图快速入门 Lightmapping Quickstart
- Android 8.0+ 更新安装apk失败的问题
- Win10按f5不能刷新页面 变成了调节亮度怎样办?
- Win10运行《永远的伊苏2》异常怎样办?
- Win10电脑鼠标指针消失的处理办法
- Win10系统杜比音效怎样关?关闭杜比音效的办法
- Win10玩《武装突袭3》超级卡顿该怎样办?
- Win10系统下《逃生2》无法正常打开的处理办法