关于 AndroJack MCP
AndroJack MCP 面向 Android 工程开发中的编码助手,以实时的官方 Android 和 Kotlin 文档为回答提供依据。其专用工具和代码验证器可检查 API 选择及部分已弃用或移除的模式。
主要功能
- 01实时查询官方 Android 与 Kotlin 资料
- 0223 种专用工具
- 03依据 34 条规则验证代码
- 04检查已移除和弃用的 API
- 05指导工具调用的依据规则
适用场景
- 01查询当前 Android API 指引
- 02检查生成代码中的弃用模式
- 03依据文档确定 Compose 和 Gradle 方案
MCP 相关
向 MCP 客户端提供 23 种 Android 工程工具,包括实时文档检索和代码验证。README 还介绍了可选的依据规则,要求助手在生成代码前调用相关工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
23收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 搜索查询——请具体说明。例如:'Compose LazyColumn performance'、'WorkManager constraints'。 |
详细介绍

AndroJack — Android 全能助手
这款 MCP 服务为你的 AI 编码助手提供实时、经过验证的 Android 知识,让它依据官方资料而非记忆进行构建。
也适用于: Windsurf · VS Code Copilot · Google Antigravity · JetBrains AI — 请参阅下方的手动配置 ↓
VS Code 分发: 也已在 VS Code Marketplace 上架,名称为 AndroJack MCP for VS Code。
目录
- 催生这款工具的危机
- 实践中究竟会出什么问题
- AndroJack 的功能
- 诚实的激活模型
- 即使达到第 3 级,仍可能出现的问题
- 纵深防御
- 关键论据
- 23 种工具
- 快速入门
- 手动配置
- 生态系统:Google 的第一方工具
- 安全与隐私
- 更新日志
🔥 催生此工具的危机
2025 年,Stack Overflow 开发者调查询问了 49,000 名开发者使用 AI 编码工具的体验。调查结果足以让每位 Android 工程师警醒:
- 84% 的开发者现在使用 AI 编码工具,高于前一年的 76%。
- 对 AI 准确性的信任度在一年内从 40% 暴跌至仅 29%。
- 2025 年 Stack Overflow 的所有访问量中,有 35% 是开发者调试和修复 AI 生成的代码所致。
使用率与信任度之间的差距并非偶然,而是结构性问题的产物:**AI 模型预测的是 token,而不是 API。**它们基于世界某个时间点的快照进行训练,因此无法得知 API 30 有哪些变化、Google I/O 2025 发布了什么,或 Google Play 现在在审核时会拒绝什么内容。
对于 Android 开发者而言,这种失效模式尤为危险。Android 拥有移动开发领域变化最快的生态系统——每月都会推出新的 Compose BOM,Navigation 3 在 Nav2 推出七年后终于转为稳定版,Android 16 则改写了屏幕方向锁定的规则——而大多数 AI 工具的训练数据在你使用时,早已过时六个月到两年。
结果不只是糟糕的代码,而是信心十足的糟糕代码。
⚡ 实际开发中会出什么问题 — 记录在案的证据
这些并非假设性的风险,而是真实开发项目中有记录的故障模式。
Navigation 3 幻觉(2026 年 1 月)
Atomic Robot 发布的一份案例研究记录了一次正在进行的 Navigation 2 → Navigation 3 迁移,同时使用了 Gemini 和 Claude,且两者都启用了互联网访问。结论原文如下:
“大模型仍会对版本产生幻觉。即使可以访问互联网,两个 Agent 仍想使用过时的候选版本,而不是稳定版 1.0.0。”
Navigation 3 在经历了七年的同一套库之后,于 2025 年 11 月发布稳定版。这是一次彻底的架构重构:返回栈现在是普通的 Kotlin 列表,庞大的导航图已不复存在,NavDisplay 取代了 NavController。Google 自己的迁移指南非常清楚 AI 工具会在这方面出错,因此现在加入了特殊的 “AI Agent:” 注释——直接嵌入官方文档、供 AI 工具遵循的说明。2026 年,AI 工具为新的 Compose 项目生成 Nav2 代码,并非犯了一个小错误,而是造成了架构上的不一致,必须彻底重写才能修复。
Compose 弃用更新不停
Jetpack Compose 每月都会发布一个新的 BOM。自大多数模型的训练截止时间以来,这些 API 已发生变化:
| API | 状态 | 出错之处 |
|---|---|---|
ContextualFlowRow / ContextualFlowColumn | 在 Compose 1.8 中已弃用 | AI 仍会生成它们——今天触发编译警告,明天就会被移除 |
TestCoroutineDispatcher | 已从 coroutines-test 1.8+ 中移除 | AI 仍会生成它——导致 CI 中的测试出现非确定性失败 |
FlowRow 溢出参数 | 在 1.8 中已弃用 | 在运行时出现细微的行为回归,在大多数 lint 配置中不会被发现 |
AnchoredDraggableState.confirmValueChange | 已弃用 | 锚点边界处的拖动行为不正确 |
| 新项目中的 Navigation 2 | 已被 2025 年 11 月发布稳定版的 Nav3 取代 | 架构走入死胡同,必须重写才能修复 |
以上每种情况都能通过编译。大多数情况下也能正常运行。问题会在之后显现为 CI 不稳定、UI 回归,或 Play Store 审核失败。
Android 16 / API 36 强制要求(自 2026 年 8 月 31 日起生效)
Android 16 对平台进行了影响每款已发布应用的更改:在 ≥600dp 的设备上——平板、折叠屏设备、ChromeOS——应用不再能锁定屏幕方向或限制调整大小。自 2026 年 8 月 31 日起,Google Play 要求新应用和更新将 API 36 设为目标版本(可申请延期至 2026 年 11 月 1 日)。Android 17 / API 37 将移除剩余的退出选项。
如今,AI 工具若生成 android:screenOrientation="portrait" 或 android:resizeableActivity="false",就会生成触发 Play Console 应用兼容性警告、无法通过大屏质量检查,并导致应用在 Play Store 搜索结果中排名下降的代码。
这对业务的影响并非假设:折叠屏用户在应用上的支出是仅使用手机用户的 14 倍。同时使用平板和手机的用户支出是仅使用手机用户的 9 倍。FlipaClip 在实现自适应布局后的四个月内,平板用户增长了 54%。
KMP 的静默失败
Kotlin Multiplatform 在 2025 年成为主流——新发布的 KMP 库超过 900 个,Room 增加了 KMP 支持,企业现在也会专门招聘具备 KMP 技能的人才。当 KMP 项目中的开发者要求 AI 工具添加数据库支持时,AI 生成的却是仅适用于 Android 的 Room 代码。代码可以编译,在 Android 上也能完美运行。**iOS 构建却会失败。**开发者花费数小时调试后,才意识到根本原因:他们的 AI 工具不知道 KMP 的存在。
🧩 AndroJack 的作用
AndroJack 是一个以文档为依据的 Android 工程 MCP 服务。它为你的 AI 编码助手提供 23 个专用工具,用于从官方 Android 和 Kotlin 来源获取实时、经过验证的答案,而不是根据过时的训练数据进行预测。
它不会让 AI 变得更聪明,而是让 AI 对证据负责。
可以把它看作面向大模型的构建前代码检查工具。其他工具检索文档时,AndroJack 则充当严格的架构把关者。
Without AndroJack: You ask → AI predicts from stale weights → Code (possibly wrong)
With AndroJack: You ask → AI calls tool → Tool fetches official source live
→ AI reads verified answer → Code (grounded)
⚠️ 诚实说明激活模式——两个层级
重要
安装 AndroJack 前,最重要的是了解这一点。
| 层级 | 激活内容 | AI 的行为 |
|---|---|---|
| 层级 1 — 仅工具 | IDE 中注册了 23 个工具 | AI 可能会调用正确的工具。这取决于 IDE 和 AI 的判断。 |
| 层级 2 — 工具 + 依据约束关卡 | 23 个工具 + 强制的生成前规则手册 | AI 在编写代码前,必须针对每项决策调用正确的工具。 |
| 层级 3 — 完整回环 | 层级 2 + android_code_validator | AI 会根据 34 条规则验证每个代码块。错误必须在用户看到代码前修复。 |
层级 1 是被动的。 工具虽然可用,但由 AI 决定何时使用。构建 Compose 界面的 AI 可能会调用 architecture_reference,却跳过 material3_expressive,于是悄无声息地交付违反 M3E 规范的代码。
层级 2 是主动的。 androjack_grounding_gate 系统提示词会将每种任务类型映射到相应的工具。要构建 Compose UI?AI 必须先调用 material3_expressive。要添加依赖项?必须调用 gradle_dependency_checker。没有例外。
层级 3 会形成回环。 AI 返回代码给用户前,android_code_validator 会检查它生成的每个代码块。34 条规则涵盖已移除的 API、已弃用的模式、对 Android 16/17 的兼容性,以及 Compose-First 迁移信号。注释会被忽略,因此像 // replaced AsyncTask 这样的迁移说明不会触发误报 FAIL。结果会以文本形式返回,也会以带有输出架构的 structuredContent 返回。判定为 FAIL 意味着 AI 必须修复并重新验证,用户不会看到有问题的代码。
→ 要获得完整的依据约束,请始终启用层级 2 + 层级 3。请参阅下文“获取完整保障”。
🪲 即使在层级 3,仍可能出错的地方
重要
AndroJack 是一个文档依据约束和 API 验证工具。它不是 Compose 布局引擎、设计系统强制执行器或运行时渲染器。层级 3 能捕获已移除的 API 和已弃用的模式,但无法捕获 Android 中所有类型的错误。这并非 AndroJack 的局限,而是对一个视觉化、由运行时渲染的 UI 框架进行静态文本分析的根本属性。
以下错误是在一个使用 AndroJack 层级 2(v1.4.0)构建的真实 Android 应用中遇到的。我们在此如实记录,方便你明确了解需要留意的问题,以及应当使用哪些其他工具。
✅ 层级 3 能捕获的问题
// ❌ REMOVED — android_code_validator fires: REMOVED_ASYNCTASK
class MyTask : AsyncTask<Void, Void, String>()
// ❌ REMOVED — fires: REMOVED_TEST_COROUTINE_DISPATCHER
val dispatcher = TestCoroutineDispatcher()
// ❌ DEPRECATED — fires: DEPRECATED_CONTEXTUAL_FLOW_ROW
ContextualFlowRow { Text("hello") }
// ❌ LEAK — fires: GLOBALSCOPE_LAUNCH
GlobalScope.launch { fetchData() }
⚠️ 第 3 级无法捕获的问题
警告
以下问题来自真实项目。这些代码符合当前 API 的 Compose 规范,但违反了设计系统约束、无障碍最低要求或架构边界。静态文本扫描无法检测这些问题。
Bug PH-UI-001 — 分段按钮文本截断
// Compiles and runs. Level 3 sees no violation.
// The bug: Text inside MultiChoiceSegmentedButtonRow truncates because a
// fixed height modifier prevents the Roboto Flex variable font from expanding.
MultiChoiceSegmentedButtonRow {
SegmentedButton(/* fixed height modifier */) {
Text("Light")
}
}
说明
这是一个缺失问题。正确的修饰符缺失了——没有错误的修饰符。请使用视觉测试或运行时检查。
Bug PH-UI-003 — 禁用按钮对比度不达标
// Correct Material 3 API. Level 3 sees no violation.
// The bug: disabled state colours fail WCAG AA 4.5:1 contrast against surface.
Button(enabled = false, onClick = {}) {
Text("INITIALIZE VAULT")
}
说明
这是一个运行时视觉属性问题。请使用 paparazzi 截图测试或 Google 的 Accessibility Scanner。
Bug PH-AR-004 — 向最终用户呈现原始堆栈跟踪
// A missing try/catch produces no pattern match.
class VaultViewModel : ViewModel() {
fun initializeVault() {
viewModelScope.launch {
val result = repository.initialize() // Missing try/catch
_uiState.value = UiState.Success(result)
}
}
}
警告
UDF 架构违规需要使用自定义规则的 Detekt,或验证异常映射的单元测试。
🗂️ 深度防御:为每类问题选择合适的工具
| 问题类别 | 真实示例 | 合适的工具 |
|---|---|---|
| 已移除 / 已弃用的 API | AsyncTask、TestCoroutineDispatcher | ✅ AndroJack 第 3 级 |
| Android 16 违规 | screenOrientation、resizeableActivity=false | ✅ AndroJack 第 3 级 |
| Android 17 违规 | static final 反射、未获授权的 LAN 访问 | ✅ AndroJack 第 3 级 |
| 架构(标记了根因) | GlobalScope 泄漏到 UI | ✅ AndroJack 第 3 级 |
| 缺少修饰符 / 缺失约束 | PH-UI-009(innerPadding) | 🔧 Android Lint / IDE 检查器 |
| 运行时对比度 / 颜色问题 | PH-UI-003(WCAG) | 🔧 paparazzi + Accessibility Scanner |
| 触控目标违规 | PH-UX-008 | 🔧 Accessibility Scanner |
| 架构边界(缺少捕获) | PH-AR-004(将堆栈跟踪显示到 UI) | 🔧 Detekt + ViewModel 单元测试 |
🎯 关键论点
“你的
agents.md文件能告诉我上周二发布的 Gradle 版本吗?”
任何 Markdown 文件都做不到。.cursorrules 中的规则做不到。SKILL.md 也做不到。
✅ 只有实时工具调用才能做到。
这正是 AndroJack 存在的目的——当前生态系统中没有其他工具专门为 Android 提供这项能力。
| 你的需求 | agents.md / SKILL.md | AndroJack MCP |
|---|---|---|
| 按特定方式格式化输出 | ✅ 完美 | 也能做到 |
| 遵循团队约定 | ✅ 完美 | 也能做到 |
| 获取当前最新的 Gradle 版本 | ❌ 根据记忆猜测 | ✅ 实时获取 |
| AsyncTask 是否已移除? | ❌ 可能有误 | ✅ 根据 SDK 验证 |
| Android 16 Play Store 规则 | ❌ 不知道 | ✅ 官方来源 |
提示词工程决定 AI 如何响应。MCP 决定 AI 知道什么。
✨ AndroJack 涵盖的内容 — 23 个工具
| # | 工具 | 功能 | 没有它会出现的问题 |
|---|---|---|---|
| 1 | 🔍 search | 官方文档摘录 — Google Developer Knowledge API(可选密钥)或经过验证的规范页面索引 | AI 根据记忆推理 — 今天可能已经不准确 |
| 2 | ⚠️ component | 检查 40 多个 API 是否已弃用或移除 | 编译正常,却在运行时或审核时出问题 |
| 3 | 📐 architecture | 40 多个主题的指南 — MVVM、Nav3、MVI…… | AI 给出 2022 年的建议;遗漏 Nav3 |
| 4 | 🐛 debugger | 解析堆栈跟踪 → 官方文档 + Issue Tracker 链接 | AI 为已知问题臆造修复方案 |
| 5 | 📦 gradle | 从 Google Maven 实时查询(优先返回稳定版,并标记预发布版本)+ BOM 解析 | Compose BOM 过时,使用 KAPT 而非 KSP |
| 6 | 📊 api-level | API 21–36 表格、minSdk 警告 | 在 minSdk 为 21 的应用中调用 API 26+ 功能 |
| 7 | 🎯 kotlin | 10 种模式 — 协程、MVI、Compose 状态 | 在 UI 中使用 GlobalScope.launch、runBlocking |
| 8 | 🎨 m3e | Material 3 Expressive 组件与动效 | 在 M3E 应用中使用 M2 MaterialTheme |
| 9 | 🔐 permissions | 40 多项权限规则与契约 | 使用已弃用的 requestPermissions() |
| 10 | 🧪 testing | 官方的单元测试 / Compose UI 测试模式 | 在测试中使用 Thread.sleep();缺少 Hilt |
| 11 | 🏗️ build | R8、libs.versions.toml、签名、AAB | 使用 implementation 而非 ksp |
| 12 | 📱 large-screen | WindowSizeClass(5 个断点,包括 Large/XL)、自适应 Scaffold | 折叠屏和桌面设备上只显示手机布局 |
| 13 | 🚀 scalability | Paging 3、WorkManager、模块化 | 简单粗暴地使用 loadAll();列表中的键不稳定 |
| 14 | 🧭 nav3 | Nav3(2025 年 11 月)— 场景、迁移 | AI 生成 Nav2 的死胡同方案 |
| 15 | ✅ compliance | API 36 / Android 16 / 16 KB 页面大小 | 更新遭拒 — 自 2026 年 8 月 31 日起,Play 已要求 targetSdk 为 36 |
| 16 | 🌐 kmp | Room KMP、Room 3(稳定版,androidx.room3)、Ktor、源集 | 在 KMP 项目中使用仅适用于 Android 的代码 |
| 17 | 🤖 ondevice-ai | AICore、ML Kit Gen AI、Gemini Nano、AppFunctions(设备端 MCP) | 需要离线时却只能使用云端 AI |
| 18 | 📋 policy | Play Store 年龄限制、计费开放性、数据安全 | 因政策变更不明而导致应用遭拒 |
| 19 | 🥽 xr | Android XR SDK、SpatialPanel、Orbiter | 只能作为 2D 面板运行,无法发挥空间体验的价值 |
| 20 | ⌚ wear | Tiles、Health、适用于 Wear OS 的 M3 Expressive | 在圆形屏幕上使用手持设备模式 |
| 21 | 🛡️ validator | Level 3 循环验证关卡 — 34 条规则、结构化输出,也可在 CI 中运行 | AI 不经检查就发布有问题的代码 |
| 22 | 🆕 api17 | Android 17 / API 37(稳定版)— static final、LAN、OTP、MessageQueue、原生库、Handoff | 应用在 API 37 目标设备上崩溃 |
| 23 | 🪪 dev-verification | Developer Verification Program — 时间表、注册、CI/CD | 应用无法在认证设备上安装(自 2026 年 9 月 30 日起在 4 个国家/地区强制执行) |
🚀 快速开始 — 无需安装
选项 1 — 交互式 CLI(v2.1.0)✨ 推荐
npx -y [email protected] install
启动带有完整动画效果的终端向导,自动检测 VS Code、Cursor、Claude、Windsurf、JetBrains、Kiro 和 Antigravity。
选项 2 — 定向安装
# Preview detected IDEs and config paths
npx -y [email protected] install --list
# Auto-detect all
npx -y [email protected] install --auto
# Install to a specific IDE
npx -y [email protected] install --ide=cursor
npx -y [email protected] install --ide=claude
npx -y [email protected] install --ide=vscode
npx -y [email protected] install --ide=windsurf
npx -y [email protected] install --ide=jetbrains
npx -y [email protected] install --ide=kiro
npx -y [email protected] install --ide=antigravity
选项 3 — 无需 IDE 即可测试
npx -y @modelcontextprotocol/inspector npx -y [email protected]
选项 4 — 在 CI 中强制执行规则(2.1.0 新增)
每个 pull request 都运行与约束 Agent 相同的规则引擎 — 包括 Agent 未修改的代码:
npx -y [email protected] validate app/src --target-sdk=37 # exit 1 on errors
npx -y [email protected] validate . --format=sarif > androjack.sarif # GitHub code scanning
# .github/workflows/androjack.yml
- run: npx -y [email protected] validate . --target-sdk=37 --format=sarif > androjack.sarif || true
- uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: androjack.sarif }
- run: npx -y [email protected] validate . --target-sdk=37 # fails the job on errors
标志:--format=text|json|sarif、--target-sdk=N、--min-sdk=N、--fail-on=error|warning|never。退出码:0 表示通过,1 表示存在违规,2 表示用法错误或无法完成全部检查(没有匹配文件、文件超过 1 MiB,或达到 20k 文件上限)— 不会因不完整扫描而判定通过。
可选配置
| 变量 | 作用 |
|---|---|
ANDROJACK_DEVELOPER_KNOWLEDGE_API_KEY | 使用 Google 的 Developer Knowledge API 作为文档搜索后端(对 developer.android.com 进行全文搜索)。未设置时,AndroJack 使用经过验证的规范页面索引。**隐私:**搜索查询(包括来自 android_debugger 的异常消息)会发送给 Google。 |
ANDROJACK_OFFLINE=1 | 不发送任何出站请求——工具仅返回规范链接。适用于隔离网络环境。 |
ANDROJACK_HTTP_TOKEN | serve 要求提供 Authorization: Bearer <token>。设置 Google API 密钥时,远程绑定必须配置此项。 |
ANDROJACK_ALLOW_REMOTE_HTTP=1 | 等同于 serve --allow-remote;也适用于 --http。 |
ANDROJACK_HTTP_STATELESS=1 / serve --stateless | 不使用 MCP 会话——每个请求都独立完整(适用于负载均衡器)。 |
🧩 手动配置 / 复制 / 粘贴
如果你更愿意手动连接服务,或想在写入任何内容前检查确切的 JSON:
- 运行
npx -y [email protected] install --list,预览检测到的 IDE 和目标配置路径。 - 可直接粘贴的示例位于
config/。
| IDE / 客户端 | 配置文件 |
|---|---|
| Claude Desktop | config/claude_desktop_config.json |
| Cursor | config/cursor_mcp.json |
| VS Code / GitHub Copilot | config/vscode_mcp.json |
| Windsurf | config/windsurf_mcp.json |
| Android Studio / IntelliJ | config/jetbrains_mcp.json |
| AWS Kiro | config/kiro_mcp.json |
| Google Antigravity | config/antigravity_mcp.json |
所有示例默认都让 AndroJack 在本地运行,并通过 npx -y [email protected] 运行已发布的软件包。
📍 生态系统:AndroJack 与 Google 第一方 Agent 工具
Google 现在提供了自己的 Android Agent 技术栈。坦诚说明它们之间的重叠:
| Google Developer Knowledge MCP/API | Android CLI + Android 技能 + Knowledge Base | AndroJack MCP | |
|---|---|---|---|
| 用途 | 检索文档(搜索、获取、回答) | 运行工具链;为 Agent 提供任务指令;android docs search | 强制执行:验证代码、编码有时效性的强制要求、把关 CI |
| 检索质量 | 当前最佳——Google 自己的索引 | Google 自己的索引 | 设置密钥后使用 Google API;否则使用经过验证的规范页面索引 |
| 会导致构建失败吗? | 否 | 否(技能仅提供建议;android studio check 需要 Studio) | 会——确定性的规则 ID、退出代码、SARIF |
| 设置 | Google Cloud 项目 + API 密钥 | 安装 CLI | npx [email protected]——无需账号 |
| 运行位置 | 远程(googleapis.com) | 本地 CLI | 本地 stdio / HTTP,可离线运行 |
**推荐设置:**使用 Google 工具进行检索和获取任务技能,并将 AndroJack 用作强制执行步骤——在 Agent 循环中使用 android_code_validator,并在 CI 中使用 androjack-mcp validate。AndroJack 不会试图在搜索方面胜过 Google 自己的文档索引。设置 ANDROJACK_DEVELOPER_KNOWLEDGE_API_KEY 后,它会使用该索引。
🔒 安全与隐私
| 属性 | 实现方式 |
|---|---|
| 域名允许列表 | 仅向 Google/Android/Kotlin 官方域名发送请求,使用默认 HTTPS 端口,不包含嵌入式凭据 |
| 重新验证重定向 | 每次重定向都会根据允许列表进行检查(2.1.0)——允许列表中的主机无法将抓取请求重定向到其他位置 |
| 不可信内容边界 | 所有抓取的文本都会经过规范化、清除注入模式和伪造的边界标签,并在到达 Agent 前标记为不可信 |
| 仅限 HTTPS | 对外抓取文档时拒绝非 HTTPS URL,限制正文大小,并在重试日志中移除查询字符串 |
| 默认本地运行 | serve 仅绑定到环回地址,除非你明确传入 --allow-remote |
| HTTP 加固 | 验证 Origin/Host,限制正文大小,限制会话数并逐出空闲会话,可选的 Bearer 令牌,无状态模式 |
| Agent 身份透明 | User-Agent: AndroJack-MCP/2.1.0 |
| 只读 | 所有 23 个工具均标注 readOnlyHint: true、destructiveHint: false、idempotentHint: true |
| 凭据 | 无需凭据。可选的 Google API 密钥仅通过请求头发送,不会出现在 URL 或日志中 |
| 离线模式 | ANDROJACK_OFFLINE=1 可确保不发送任何对外请求 |
| 安全策略 | 披露流程和受支持版本见 SECURITY.md |
📋 更新日志
v2.1.0 — 修复失效功能、加固有效功能,并在 CI 中强制执行
- 文档搜索现在能真正返回文档。 v2.0 抓取客户端渲染的搜索页面,对任何查询都无法返回文档。2.1 使用 Google 的 Developer Knowledge API(可选密钥)或经过验证的规范页面索引。
- 安全: 修复重定向允许列表绕过问题;现在所有抓取内容都会经过不可信内容边界(v2.0 声称有此机制,但实际上只有一个工具执行了此操作);修复边界标签伪造及零宽/全角字符绕过问题;修复 HTTP 会话耗尽型 DoS 问题;新增 Bearer 身份验证和无状态模式;修复 7 个依赖项漏洞(其中 1 个为严重漏洞)。
- 不再自信地给出错误答案: 修复
Row→“已弃用”、Task→“已移除”注册表中的误报;修正 Android 17 游戏豁免;移除捏造的 Handoff API;Room 3 已稳定(此前被描述为 alpha);Google Maven alpha 版本不再标记为“最新稳定版”;替换 19 个失效的文档链接。 - 验证器: 忽略注释(避免 Agent 陷入修复循环);检测 Kotlin DSL
kapt(...);修正 API 37 阈值;新增 6 条 Android 17 规则(共 34 条);结构化输出。 - 新增: 用于 CI 的
androjack-mcp validateCLI(text/JSON/SARIF);规则目录的 MCP 资源;完整的工具注释;AppFunctions 指南;Android Studio Rabbit 1 / AGP 9.4。 - 降低令牌成本:
tools/list从约 28.5 KB 降至约 20.5 KB;会话中重复的相同结果会替换为简短指针(传入refresh: true可重新获取)。 - 测试: 从 85 项增至 196 项(另有 1 项需选择启用的实时测试),包括通过真实 MCP SDK 客户端运行的 17 场景黑盒 UAT 套件。参见
test/uat/UAT_PLAN.md。
完整详情见:CHANGELOG.md。
v2.0.0 — 安全加固、Compose 优先、开发者验证
- 用于防御间接提示词注入的内容清理器 —
src/content-sanitizer.ts会在任何外部获取的文本到达调用方 Agent 的上下文之前,中和结构性注入模式(伪造的角色标记、重置指令的措辞)。来自issuetracker.google.com的android_debugger结果——这是唯一一个会索引用户提交的自由文本的允许域名——会被明确标记为不可信数据。 - 已修复依赖项漏洞 — 通过更新
cheerio,修复了传递依赖undici/qs中的 7 个漏洞(其中 3 个为高危)。没有破坏性变更,已发布的依赖树中漏洞数为 0。 - 工具 23:
android_developer_verification— Google 的开发者验证计划将于 2026 年 9 月 30 日开始强制执行(首先覆盖巴西、印度尼西亚、新加坡、泰国;2027 年全球实施)。内容涵盖注册路径、时间线、企业豁免以及 CI/CD 批量注册 API。 - 反映 Compose 优先的平台转向 — 截至 2026 年 5 月 19 日,Android UI 开发正式采用 Compose First;凡涉及 View 的模式(Fragments、RecyclerView、ViewPager),在相关查询中都会标记为维护模式。此信息直接取自 Google 官方公告,避免内容在过时后仍未明确标注。
- Compose 1.11 v2 测试框架 — 提供新默认行为
StandardTestDispatcher的完整迁移指南,以及用于标记旧有假设的验证器规则(UNCONFINED_DISPATCHER_COMPOSE_TEST)。 - Navigation 3 场景装饰器(1.1) — 无需逐屏感知,即可实现持久显示的界面元素(底部栏、侧边栏、对话框)。
- 已更正 Android Studio 代号 — 之前落后了两个完整代号(“Panda 2”)。现已正确更新为当前稳定版 Quail (2026.1.x),AGP 9.2.0。
- Android Skills 定位 — 介绍 Google 于 2026 年 4 月推出的第一方 Android Skills/CLI,并将 AndroJack 的验证器定位为生成后的配套强制检查关卡,而非竞争性的检索层。
- 28 条验证器规则(此前为 26 条)— 新增
UNCONFINED_DISPATCHER_COMPOSE_TEST和NEW_FRAGMENT_CLASS_COMPOSE_FIRST。 - 已移除虚构的版本号 — 之前某次会话中的依赖版本目录示例列出了几个未经验证的版本号。现已替换为仅包含已确认的值,并明确使用
CHECK_LIVE_VIA_gradle_dependency_checker占位符。 - 完整版本同步 — 修复了
src/version.ts更新后未同步到package.json、所有 IDE 配置文件及清单文件的问题;现已将版本同步列为发布检查清单项目。
v1.7.1 — 工程加固与社区功能对齐
- 54 项测试覆盖 — 为验证器规则、HTML 解析器、LRU 缓存和 HTTP 安全层实现了全面的单元测试和契约测试。
- 发现功能对齐 — 修复
/.well-known/mcp端点,使其能够正确报告tools: 22。 - 依赖项清理 — 移除
node-fetch(改用原生fetch),并清理过时的 overrides,使供应链更加简洁。 - 规则加固 — 改进对
NavHost和BottomAppBar的 Compose 组件检测。 - URL 修复 — 修复了 Android 17
ACCESS_LOCAL_NETWORK和handoff的失效文档锚点。
v1.7.0 — 支持 Android 17 / API 37
- 工具 22:
android_api17_compliance— 提供 Android 17 平台稳定性的完整参考(2026 年 3 月 26 日)。 - 扩展验证器规则 — (已在 2.1.0 中更正:此处最初声称有 31 条规则,其中包括从未发布的 Room 3.0 和
ACCESS_LOCAL_NETWORK检查。实际规则数为:2.0.0 中从 26 条增至 28 条,2.1.0 中增至 34 条。) - WindowManager 1.5.0 — 新增 Large(1200dp)和 Extra-large(1600dp)断点及布局模式。
- Room 3.0 alpha — 支持现代 SQLiteDriver 迁移路径。
👥 作者与所有权
Vikas Sahani — 产品负责人([email protected])
Claude AI — AI 工程负责人
MIT License © 2026 Vikas Sahani | SECURITY.md
开发 AndroJack,是因为 2025 年 Stack Overflow 的访问量中,有 35% 来自调试 AI 生成代码的开发者。
AndroJack 的存在,就是为了让你不必成为这些访问者之一。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。