关于 android-source-search
面向 Android 开发者的源码查找参考技能,介绍如何检索和查看最新 AOSP 与 AndroidX 源码。优先使用 android-sources MCP,并说明工具不可用时的网页检索方案。
主要功能
- 01优先使用 MCP 查找源码
- 02通过 Gitiles 获取 AOSP
- 03通过 GitHub 获取 AndroidX
- 04查找类与方法的指引
- 05检索最新源码的流程
适用场景
- 01检查 Android 框架类或方法
- 02查找 AndroidX 源码文件与示例
- 03路径未知时搜索源码
MCP 相关
建议在工具可用时使用 android-sources MCP 查找类、方法、层级、文本和类型;同时提供备用源码获取方式。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rcosteira79/ android-skills --skill android-source-search安装后在 Claude Code 中输入/android-source-search确认已加载。
详细介绍
Android 源码搜索
两棵源码树,两种访问策略。AOSP 位于 android.googlesource.com(Gitiles);AndroidX 位于 GitHub。cs.android.com 会阻止自动抓取——它只是供人工浏览的 JS SPA(绝不要对它使用 WebFetch)。
首选:android-sources MCP
如果可以使用 mcp__android-sources__* 工具,始终优先使用它们,而不是 WebFetch/gh——源码在本地,查询耗时不到 10 毫秒:
| 目标 | MCP 工具 |
|---|---|
| 按名称/模式查找类 | search_classes(glob,例如 *ViewModel*) |
| 读取完整类/方法/成员 | lookup_class / lookup_method / list_class_members |
| 类层次结构 | get_class_hierarchy |
| 跨源码搜索文本/正则表达式 | search_in_source |
| 列出 AndroidX 构件版本 | list_available_versions |
| 定义/引用/类型信息(LSP) | goto_definition / find_references / get_type_info |
只有在 MCP 工具不可用时,才使用以下 WebFetch/gh 策略。
回退方案:WebFetch + gh
AOSP(框架内部实现、@hide API、内部常量、默认属性值)→ Gitiles。 原始文本采用 base64 编码,体积更小:
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/{path}?format=TEXT
使用 refs/heads/main(当前默认分支),或使用诸如 android-14.0.0_r74 的标签来指定 API 级别。主要仓库:platform/frameworks/base(core/java/android/ → View/Activity/Context;services/core/java/ → 系统服务;core/res/ → 默认属性/样式)、platform/libcore(ojluni/src/main/java/ → Java 核心库)。
AndroidX(androidx.* 源码和示例)→ GitHub。 通过 raw.githubusercontent.com 获取文件内容;通过 gh api 获取目录列表:
https://raw.githubusercontent.com/androidx/androidx/androidx-main/{path}
gh api repos/androidx/androidx/contents/{path} --jq '.[].name'
示例与源码位于同一位置,路径为 samples/ 子路径下的 {ClassName}Samples.kt。主要路径前缀:Compose UI compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/,Foundation compose/foundation/foundation/src/commonMain/kotlin/,Animation compose/animation/animation/src/commonMain/kotlin/。AndroidX 也 镜像在 Gitiles 上(platform/frameworks/support、androidx-main),但对于 androidx.*,GitHub 的目录结构是规范且文档更完善的路径——优先使用它。
未知路径时
使用 cs.android.com 作为人工搜索界面(不要使用 WebFetch——它是 JS SPA)来定位类/文件,然后通过 Gitiles(AOSP)或 raw.githubusercontent.com / gh api(AndroidX)获取内容:
https://cs.android.com/search?q=ClassName+methodName&ss=android # &ss=androidx for AndroidX
两棵源码树都经常变动——务必获取当前源码,不要依赖记忆中的行号。