从零到 APK:用 AI Agent 链式驱动开发一个 Android Hello World 应用
本文最后更新于 2026年7月26日 晚上
2026 年 7 月 26 日,我用一条 AI Agent 链路(ADP → IDE Hub → OpenCode)完成了一个 Android Hello World 应用的开发,并把它安装到了手机上。整个过程约 2 小时,中间踩了 8 个坑,全部自动修复。
为什么做这个实验
Android 开发一直是我心里的一个”白盒”——我知道每一步该做什么,但从来没有亲手跑通过完整的构建链路。环境配置、Gradle 工具链、Java 版本兼容……每一个环节都可能卡住。
更重要的是,我想验证一套AI 驱动的开发流水线:
1 | |
如果这条链路能跑通 Android 这样复杂的构建系统,那说明这套方法论是通用的。
需求:一个最简单的 Android Hello World
只有一个要求:启动后显示一行字——“Hello, Android!”。
技术栈锁定:
| 组件 | 版本 |
|---|---|
| Android SDK | compileSdk 35 |
| Kotlin | 2.0.21 |
| UI 框架 | Jetpack Compose (Material 3) |
| 构建工具 | Gradle 8.7, Java 17 toolchain |
| Android Gradle Plugin | 8.5.0 |
| minSdk / targetSdk | 24 / 35 |
ADP:PM 不写一行代码
我用的 ADP(Auto-Develop Plus)是一套 PDCA 循环驱动的开发框架,核心铁律是:
PM 不写代码,只负责策划、派发、验收。
它的工作流程:
1 | |
P 阶段:策划
ADP 首先进入 P 阶段,生成:
- PRD:产品需求文档
- WBS:工作分解结构(7 个 WB)
- 验收标准:5 条 AC
- TASK 卡片:精确的任务指令,含三层约束
然后必须呈现给用户确认(这是 ADP 的铁律——首次 P 不确认就进入 D,80% 需求会歪)。我确认没问题后,进入 D 阶段。
D 阶段:派发给 OpenCode
ADP 不直接写代码,而是通过 IDE Hub 把任务卡片派发给 OpenCode:
1 | |
IDE Hub 自动检测可用模型,选最强的(opencode/deepseek-v4-flash-free),然后通过任务卡片把指令传给 OpenCode。
C 阶段:验收
三层验证:
- APK 文件存在且大小正常(7.6MB)
- 项目结构完整(Kotlin 源文件、Gradle 配置、Manifest 齐全)
- 语法检查通过
踩坑记录:8 个问题的自动修复
这才是最有趣的部分。整个 D 阶段 OpenCode 遇到了 8 个问题,每一个都是 ADP/IDE Hub 自动处理或我手动确认后的修复:
1. 模型选择错误
OpenCode 返回的可用模型列表是 big-pickle,而不是预期的 deepseek-v4-flash-free。原因是模型选择逻辑中 strip 了 opencode/ 前缀导致匹配失败。
修复:保留完整模型名,opencode run --model 必须带 opencode/ 前缀。
2. 任务卡片路径错误
IDE Hub 传的是占位符指令而非真正的任务卡片内容。
修复:实现任务卡片路径读取逻辑,从 ADP 项目目录下的 tasks/ 读取。
3. Gradle 需要 Java 17 工具链
AGP 8.5+ 强制要求 Java 17 工具链,但服务器只有 Java 21。
修复:下载 Microsoft JDK 17,设置 JAVA_HOME 和 org.gradle.java.installations.paths。Adoptium 下载超时,最终走了 Microsoft 镜像。
4. 根项目 build.gradle.kts 误配
项目模板把 Android 插件配在了根项目,导致构建失败。
修复:根项目只配置 apply false,实际插件应用在 app 模块。
5. Compose 编译报错
ColumnKt.Column inline 方法找不到,是 Compose 编译器扩展版本不匹配。
修复:添加 composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } 和 buildFeatures { compose = true }。
6. Manifest 资源缺失
AndroidManifest.xml 中引用了 mipmap 图标资源,但项目模板没有包含图标。
修复:简化 Manifest,去掉 AppCompat 主题引用。
7. Gradle Wrapper 损坏
初始模板的 gradle-wrapper.jar 不完整。
修复:手动下载 Gradle 8.7 完整版并提取正确的 JAR。
8. Adoptium/foojay 下载超时
国内网络限制导致官方镜像无法访问。
修复:改用 Microsoft 镜像下载 JDK。
结果:APK 跑起来了
最终产出的 APK 文件:
1 | |
通过 NAS 传输到手机后安装,启动效果:

白底、紫色粗体 “Hello, Android!”、灰色副标题 “欢迎来到 Android 世界”。完美。
这条链路为什么重要
这不是一个 Hello World 的故事,而是一个方法论验证的故事。
验证了什么:
- ADP 的铁律可行——PM 不写代码,只策划、派发、验收,整条链路没有跳过检查阶段
- 三层约束有效——全局 AGENTS.md(Karpathy 四原则)→ 项目 AGENTS.md(技术栈/架构)→ 任务 TASK 卡片(精确范围),确保 OpenCode 不会跑偏
- 构建环境处理是必需的——D 阶段不只是编码,还包括工具链、依赖、配置等基础设施的自动修复
- PDCA 循环真的跑起来了——从 P(策划)到 D(执行)到 C(验收)到 A(无偏差,进入下一轮),整个循环一次跑通
技能优化沉淀
这次实验直接推动了两个技能的更新:
| 技能 | 版本 | 优化内容 |
|---|---|---|
| ADP | v1.4.0 | 整合自主决策三级规则;D 阶段构建环境处理(JDK/Gradle);任务卡片编号规则 |
| IDE Hub | v3.2.0 | Codex 执行器支持;模型前缀修复;Linux 构建环境说明 |
还新增了一个关键机制:AGENTS.md 自动注入。以后每个新项目都会自动在根目录生成 AGENTS.md,作为第二层约束,确保执行器知道”这是什么项目、技术栈是什么、该改哪里”。
参考文献
下一步
这个 Hello World 只是一个起点。接下来:
- 给应用加 UI 交互(按钮、输入框)
- 探索 ADP 驱动更复杂的项目(前后端分离应用)
- 把整条链路做成可复用的 CI/CD 流程
AI 驱动的开发流水线,第一步跑通了。