当前位置: 当前位置:首页 > 时尚 > 安卓源码在线查看正文

安卓源码在线查看

作者:休闲 来源:时尚 浏览: 【大 中 小】 发布时间:2026-10-17 06:15:43 评论数:

打开浏览器,安卓输入 cs.android.com,源码你就站在了 AOSP 的线查门口。这个由 Google 维护的安卓在线源码检索工具,覆盖了 Android 从底层内核到上层框架的源码全部代码。不需要 clone 那几十个 G 的线查仓库,也不用在本地配 repo 工具链,安卓搜索框里敲个类名,源码几秒就能跳到定义。线查

我最初用它查 ActivityThread 的安卓 main() 方法。本地那套源码是源码 Android 10 的,线上已经是线查 15,对比着看,安卓能清楚看到主线程消息循环这些年几乎没动过骨架,源码但 Handler 内部多了些同步锁的线查调整。这种版本间的细微差异,本地单版本源码根本给不了。

几个真正好用的入口

cs.android.com 支持正则和符号搜索。搜 class ActivityManagerService,直接定位到 frameworks/base/services/core/java/com/android/server/am/ 下的文件。左侧目录树能一路展开到具体包,右侧代码区带语法高亮和交叉引用——点一个方法名,弹出所有调用它的位置。这个跳转在梳理调用链时省事太多,比如追 startActivity() 怎么一步步走到 AMS.startActivity(),顺着引用跳五六次就到底了。

另一个入口是 android.googlesource.com。官方 Git 仓库的 Web 界面,适合看提交历史和分支。想看某个补丁改了什么,直接翻 commit log,diff 一目了然。cs.android.com 侧重检索,googlesource 侧重版本演进,两个配合用比较顺手。

还有 aospxref.com,第三方做的交叉引用站。它的强项是给每个符号生成独立的引用页面,比如查 Binder 的 transact(),页面上列出所有实现类和调用点,按模块分组。缺点是该站更新不如官方及时,新版本代码有时滞后几个月。

搜索时容易踩的坑

直接搜中文注释基本没结果,AOSP 里注释以英文为主。搜 // 初始化 这种,返回空。得换成 // initialize 或 // init。

类名带前缀的要注意。比如 ServiceManager,Java 层和 native 层各有一个,搜索时加上路径限定 path:frameworks/base 能过滤掉一半噪音。还有 Context 这种接口,实现类几十个,不限定包名的话,结果列表翻三页都找不到目标。

大文件加载慢是常事。ActivityManagerService.java 超过两万行,浏览器打开要等几秒,滚动时偶尔卡顿。我的习惯是先用搜索定位到具体行号,再点进去看上下文,比直接开整个文件流畅。

什么时候该回到本地

在线查看适合快速验证和跨版本对比。真要逐行读一个大模块,比如 SurfaceFlinger 的合成流程,还是本地用 IDE 舒服。跳转、查找引用、看继承关系,IDE 的索引比网页快一个量级。我的做法是:线上确认类名和大致位置,然后去本地对应版本里精读。两边版本号要对齐,不然方法签名对不上,白费功夫。

另外,cs.android.com 不支持离线。地铁上想查段代码,只能提前把关键文件存成 PDF 或者用 git clone --depth=1 拉个浅仓库应急。浅仓库只取最新一次提交,体积小很多,查代码够用,就是没有历史记录。

用久了会发现,在线看源码这件事,核心价值不在“看”,在“比”。同一个功能,Android 8 和 Android 14 的实现可能完全两样。把两个版本的同一个文件并排打开,差异自己会说话。这比读任何二手分析文章都直接。