IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android-系统源码查看的几种方式 -> 正文阅读

[移动开发]Android-系统源码查看的几种方式

前言

系列文章:

Android 系统源码查看的几种方式
Android Studio关联Android SDK源码(Windows&Mac)

虽然说开局一个Activity,就能制作一个Android App,貌似也不需要其它特殊的技能。然而Android 是一个庞大的、系统性的工程,并且还有各种版本兼容问题。为了能够快速定位问题,也为了学习一些优秀的编码思想,经常需要定位到Android 系统源码里查看。
本篇文章主要分享一些常用的查看Android 系统源码的方式。
通过本篇文章,你将了解到:

1、本地查看源码的两种方式
2、在线查看源码的几种方式
3、总结

1、本地查看源码的两种方式

(一)Android Studio 关联源码

搜索方式

以Activity.java 为例,在Android Studio 里搜索源码:
image.png
可以看出,搜索到了Activity.java,该文件位于Android API 29的目录下(也就是对应Android 10源码)。
此种方式需要先下载对应版本的源码,然后关联到当前工程里。
具体操作方式请移步查看:Android Studio关联Android SDK源码(Windows&Mac)

优缺点

优点

1、因为是下载到本地,因此搜索速度快。
2、不用切换出Android Studio。
3、调试的时候还可以打断点。

缺点
比如搜索"Bitmap":
image.png
点进去查看源码,发现有native 方法:
image.png
image.png

再往下找,已经找不到"nativeCreate"方法对应的C/C++函数了。

再比如搜索"AMS":ActivityManagerService.java
image.png
我们知道IActivityManager.Stub 是依据AIDL自动生成的,但是却无法找到对应的AIDL文件。

(二)下载源码到本地

搜索方式

虽然Android Studio 可以下载并关联源码,但是其下载的源码包并不全,比如缺少JNI映射文件、缺少AIDL等文件。因此需要下载较为完整的源码到本地,此处以下载frameworks/base/core/目录为例:
image.png
图上标注出的core目录下的其中两个子目录:java 和jni。
在Android Studio 里只能看到java目录下的代码,而单独下载的frameworks包下包含了jni目录,继续来看Bitmap.cpp里的源码:
有java 方法与本地函数的映射:
image.png
可以看出nativeCreate 对应的底层函数是:Bitmap_creator:
image.png

注:此处看源码的工具是:“Sublime Text”。

优缺点

优点

相比Android Studio内置查看源码,下载到本地的源码比较全。

缺点

由于使用单独的工具来查看源码,因此源码之间的索引、关联跳转并不是很智能,比如Sublime Text 虽然能够建立"CTags",但是跳转并不像Android Studio那么精准。

下载源码请查看:下载系统源码官方教程

2、在线查看源码的几种方式

前面两种查看源码的方式前提是下载源码到本地,而我们知道Android 系统源码繁复庞杂,占用本地空间,并且还涉及到不同版本的源码不同。若我们仅仅只查看源码并不修改编译源码,在线查看源码方式是比较符合我们的需求的。
接下来看看几种主流的在线查看源码方式:

(一)Android Ref

Android Ref 作为最经典的查看方式,经久不衰。
网址:http://androidxref.com/

网站首页:
image.png

可以看出,左侧列出了不同版本的系统源码索引,以Android 9为例:
image.png
依然以搜索Activity.java 为例,左边输入搜索目标,右边指定在哪个目录内搜索,如果不确定是哪个目录,可以选择"select all" 全部目录。

搜索结果如下:
image.png
点进去查看具体内容:
image.png
可以看到,接口、类、变量等都分别用不同的颜色标注,并且对应的变量引用,方法跳转都是支持的。

缺点

1、该网站目前支持查看的最新版本是Android 9。
2、国外网站,虽然国内也能访问(无需翻墙),但是速度有时候比较慢。

(二)aosp opersys

网址:http://aosp.opersys.com/

网站首页:
image.png

顶部列出当前可查看的系统源码版本(Android 11无法访问),以Android 10为例:
image.png

可以看出,搜索界面与Android XRef 类似,多了一个Type,用以指定搜索的文件类型:
image.png

其它操作方式类似,此处就不再细说。

缺点

1、该网站也是国外网站,有时比较慢。
2、Android 11的源码无法访问(2021-5-30)。

(三)Android 中文社区

国外网站速度有限制,国内的网站当然顺畅无比,Android 中文社区搭建了查看源码的网站。
网址:https://www.androidos.net.cn/sourcecode

网站首页:
image.png

以Android 10为例:
image.png
列出了源码的目录结构,还附带一些简单的说明,适合刚接触源码的同学快速厘清各个目录模块的大致功能。

优缺点

虽然访问速度不再是瓶颈,但该网站最大的缺陷是方法、类等索引不能跳转。

(四)Android opengrok

现在需要找到速度快,又可以支持索引的网站。
网址:https://android-opengrok.bangnimang.net/

网站首页:
image.png

该网站提供了Android 源码镜像的Opengrok索引,国内访问无需担忧速度。
以Android 11为例:
image.png
搜索界面与Android XRef 类似。

(四)Google 官方出马

网址:https://cs.android.com/

网站首页:
image.png
不仅有Android 源码,还有AndroidX与Android Studio的。
image.png
image.png

以Android 11 为例,搜索Activity.java:
image.png

想要搜索成员变量mWindowManager的所有引用,只需要点击该变量即可。
下方就会显示该成员变量在Activity.java里的所有引用。
这个体验就和在Android Studio里查看源码一样,查找、跳转都很nice,极大方便了阅读、理解源码逻辑(在这方面的体验比Android XRef 方便多了)。
并且这是Google 出品的,源码更新及时,版本分支分类更细,更完整。

缺点

需要翻墙。

3、总结

以上分别从本地与在线列举了几种查看源码方式,个人推荐如下:

1、若是有翻墙条件,首推:https://cs.android.com/
2、没有翻墙条件,推荐:https://android-opengrok.bangnimang.net/
3、初学者想简单了解源码结构,推荐:https://www.androidos.net.cn/sourcecode
4、若是平时只是简单看看源码,推荐Android Studio关联源码

若你有更好的查看Android 系统源码方式,请在评论区不吝分享,感谢!

您若喜欢,请点赞、关注,您的鼓励是我前进的动力

持续更新中,和我一起步步为营系统、深入学习Android/Java

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 17:00:30  更:2021-10-01 17:02:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:27:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码