前言
随着谷歌对Android框架的越加深度的封装,包括各种JetPack框架的推出等都是为了让应用开发更加精简。 这样带来的直接影响就是Android门槛被拉低了,应用开发只需要一个Activity就能制作一个App,貌似也不需要什么高深的技能。
然而Android这个是一个庞大的系统性的工程,各个版本都有一定兼容性问题,为了能快速定位问题,也为了学习Android框架中一些优秀的思想,时常需要查看Android系统源码层面的知识。
本篇文章主要用来分享几个平时查看系统源码的方式
目录
1.本地查看源码
1.1 as关联源码
这种方式是最直接的方式,在as中就能搞定。
步骤1:下载指定版本的源码
步骤2:在As中使用快捷键直接查找
优点:
- 1.直接在as’中查看,下载到本地速度快。
- 2.可以指定版本查看
- 3.可以直接在源码中打断点调试
缺点:
很多类会报红无法查看,如下:
IWindow是aidl的接口类无法查看,InputChannel是本api版本的类也无法查看还要重新搜索,且一些native方法或类更是无法查看 所以这个方式看起来很鸡肋,不推荐。
1.2:使用编辑器查看
将源码下载到本地然后使用离线编辑器查看。 下载方式:这里以Linux下载方式为例。
-
1.初始环境搭建
-
1.1安装git
sudo apt-get install git
-
1.2安装curl(上传和下载数据的工具).
sudo apt-get install curl
-
1.3接下来创建bin,并加入到PATH中。
mkdir ~/bin PATH=~/bin:$PATH
-
1.4下载repo并设置权限:
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo chmod a+x ~/bin/repo
-
1.5最后安装python,repo初始化时会用到:
sudo apt-get install python
重启虚拟机后,开始下载源码。
-
-
2.源码下载
-
2.1.建立工作目录 :
mkdir aosp cd aosp
-
2.2:repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里:
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
-
2.3:设置身份,添加自己的邮箱和姓名:
git config --global user.email "piratemorgen@gmail.com" git config --global user.name "piratemorgen"
-
2.4:初始化仓库:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
初始化并指定版本:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r8
-
2.5:同步源码:
repo sync
源码下载完成后,看到下面的信息可以说明下载成功。整个源码的大小为36.5 g
-
- 3.源码查看
查看源码的编辑器有:SourceInsight ,Sublime Text等。
小余平时查看使用的是SourceInsight,虽然新版本需要license了,网上也有科学使用方式,好用别忘记给小余点个赞哦。
全局搜索方式:这可以搜索到源码中所有相关的信息。
优点:
- 1.可以全局搜索关键字以及高亮显示等。
- 2.左边类属性栏可以根据关键字定位到对应的属性或者方法
- 3.可以使用快捷键快捷跳转到前一个和后一个查看位置。
- 4.可以查看native方法代码。
缺点:
- 1.由于Android包体积较大,第一次加载会比较慢
- 2.不能够点击类或者方法自动跳转
这个方式基本可以满足日常查看源码使用。
2.在线查看源码
方式1:Android Ref
Android Ref这个大家应该都比较清楚了,国内很经典的一个在线查看网站。
可以看到目前网站最新的版本是9.0的源码。 [图片上传失败…(image-e156fb-1672295725000)]
优点:
- 1.支持全局搜索,支持在线跳转,且类和属性,方法使用不同颜色标注
缺点:
- 1.支持查看最新9.0的源码。想看9.0以后的就要另辟蹊径了。
- 2.国外网站,国内也能访问,但是速度较慢,需要科学上网
方式2:Android中文社区
Android中文社区是国内网站,
源码版本10.0还算比较新了,且列出了源码的目录结构,还附带一些简单的说明,适合刚接触源码的同学快速厘清各个目录模块的大致功能。 缺点就是不能智能跳转,且可查看版本在10以下。
方式3:谷歌官网
从网站首页可以看出,其不仅支持Android源码还支持查看AndroidX以及AndroidStudio源码,真是集大成啊。
我们点击进入Android模块看看:
可以看到这里面包括了aosp源码以及kernel源码。 我们知道Android源码包括aosp和kernel两部分,谷歌官方直接给我们备齐了。
进入aosp:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spwZMRHE-1672296002561)(https://upload-images.jianshu.io/upload_images/25149744-e26faf6f9f7b2b30.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
这里面有最新的Android13的源码,以及13以下的所有版本,你可以选择自己希望看的源码版本哦、
下面我们来搜索Activity类为例子
可以看到左半部分有类的所有属性以及方法,而中间部分点击某个类会自动跳转哦。
优点显而易见:支持全局搜索以及对类以及属性方法等使用不同类标注,且支持自动跳转,这个体验和在Android Studio中几乎没差异,且代码是实时更新的,不必担心和前面几个网站一样代码过时。 真是谷歌出品必属精品。唯一缺点就是这个网站是国外的,需要科学上网才能访问。
总结:
上面列举了我们常用的几种源码查看方式,各有各的优势及缺点。
个人推荐:
- 1.会科学上网的,推荐使用谷歌官方查看网站在线查看:cs.android.com/
- 2.不会科学上网的且对源码版本要求不是很高的推荐:Android Ref
- 3.初学者可以考虑Android中文社区:www.androidos.net.cn/sourcecode
- 4.如果想不用网络且速度快,建议将代码下载到本地,使用SourceInsight查看
作者:小余的自习室
链接:https://juejin.cn/post/7176591422529732645
最后
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
全套视频资料:
一、面试合集
二、源码解析合集
三、开源框架合集
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓
![](https://i-blog.csdnimg.cn/blog_migrate/b36b8e57e7ac8ec7650830048d396289.jpeg)