Android-AI-Coding-Prompt-实战总结

LDC开发

什么是LDC开发,这是我自己定义的,意思是:语言到文档到代码-Language to Doc to Coding。就是在开始ai coding之前,先把语言在txt或者文本编译器中,写出来提示词,然后在自己审核一边,最终在粘贴到ai里。

下面说说提示词:

Android AI Coding 提示词工程(Prompt Engineering)

适用于:Cursor / GitHub Copilot / Trae / Claude Code / Windsurf 等 AI 编程助手


一、为什么安卓开发需要专门的 Prompt 工程?

安卓开发的特殊性:

  • 上下文庞大:Gradle、Kotlin/Java、XML、Compose、资源文件、Manifest 多文件联动
  • 生命周期复杂:Activity/Fragment/Service 生命周期、配置变更、后台限制
  • 版本碎片化:API Level 差异、权限模型演进(如通知权限、存储权限)
  • 架构多样:MVP/MVVM/MVI、协程/RxJava、Jetpack 组件组合

核心原则 :AI 不是全知全能的,你需要像给资深但失忆的安卓工程师布置任务一样提供上下文。


二、Prompt 设计核心框架:RICE-C 模型

维度 含义 安卓场景示例
Role 角色定义 "你是一位有8年经验的安卓架构师,精通 Kotlin 协程和 Jetpack Compose"
Intent 明确意图 "帮我重构这段代码,使其符合 MVI 架构并支持配置变更"
Context 完整上下文 提供相关类代码、build.gradle 依赖、minSdk 版本
Expectation 输出期望 "只输出修改后的代码块和关键改动说明,不要解释基础概念"
Constraints 约束条件 "不要使用反射,保持向后兼容到 API 26,避免引入新依赖"

三、安卓开发专用 Prompt 模板与实战

3.1 代码重构/架构迁移

❌ 差示例:

复制代码
帮我优化这段代码

✅ 优秀示例:

markdown 复制代码
## 角色
你是一位资深 Android 架构师,精通 Kotlin、Jetpack Compose 和 Clean Architecture。

## 任务
将以下基于 MVC 的 Activity 代码重构为 MVI 架构。

## 上下文
- 项目使用 Kotlin 1.9 + Compose 1.5
- minSdk=26, targetSdk=34
- 已引入依赖:ViewModel, Lifecycle, Compose Runtime
- 当前代码存在的问题:UI 逻辑与业务逻辑耦合,难以单元测试,配置变更后状态丢失

## 代码片段
[粘贴原代码]

## 期望输出
1. 分离为:State 定义、Event 定义、ViewModel、Composable UI 四层
2. 使用 StateFlow 管理状态,支持配置变更恢复
3. 保留原有业务逻辑,不得改变功能行为
4. 添加必要的单元测试示例(使用 Turbine 测试 StateFlow)
5. 在关键处添加中文注释说明架构意图

## 约束
- 不引入 Koin/Hilt 等 DI 框架(项目尚未接入)
- 不修改数据层接口定义
- 避免使用 `rememberSaveable` 处理复杂对象

3.2 生成新功能模块

场景:实现一个带分页和缓存的用户列表

markdown 复制代码
## 角色
Android 开发专家,熟悉 Paging 3 和 Room 数据库。

## 需求
为用户列表页面实现分页加载功能,要求:
1. 下拉刷新 + 上拉加载更多
2. 无网络时展示本地缓存(Room)
3. 空状态、错误状态、加载状态 UI 完整
4. 支持搜索过滤(本地过滤已加载数据)

## 技术栈上下文
- UI: Jetpack Compose + Material3
- 架构: MVVM + Repository 模式
- 异步: Kotlin Coroutines + Flow
- 网络: Retrofit + OkHttp
- 本地: Room
- 图片加载: Coil

## 已有接口
[粘贴 Retrofit Service 接口和 Room Entity 定义]

## 期望输出
1. 完整的 Repository 实现(RemoteMediator 或自定义分页策略)
2. ViewModel 状态管理
3. Compose UI 页面(包含 Shimmer 加载效果)
4. 异常处理策略(网络异常、空数据、服务端错误)
5. 关键逻辑的单元测试

## 格式要求
- 使用 Kotlin 语言
- 遵循官方 Kotlin 编码规范
- 对复杂逻辑添加中文注释
- 标注需要添加的 Gradle 依赖

3.3 Bug 诊断与修复

场景:应用崩溃或异常行为

markdown 复制代码
## 角色
Android 崩溃分析专家。

## 问题描述
应用在后台返回前台时偶现崩溃,崩溃日志如下:
[粘贴完整 stack trace]

## 上下文信息
- 发生场景:从后台恢复(onResume)
- 复现频率:约 30%
- 相关代码:
  [粘贴 onResume 及关联代码]
- 设备信息:Android 12/13/14 均有报告,非特定厂商

## 已尝试方案
- 已检查并移除 onResume 中的网络请求主线程调用
- 已添加 null 检查,问题仍存在

## 期望
1. 分析根因(不要只停留在表面堆栈)
2. 提供修复代码
3. 解释为什么这样修复能避免问题
4. 提供预防此类问题的编码建议

3.4 Gradle/构建问题

markdown 复制代码
## 角色
Android 构建系统专家,精通 Gradle 和 AGP。

## 问题
升级 AGP 8.2 后编译失败,错误信息:
[粘贴错误日志]

## 环境
- AGP: 8.2.0
- Gradle: 8.4
- Kotlin: 1.9.20
- 项目结构:多模块(app, domain, data, feature-login)

## 当前关键配置
[粘贴项目级 build.gradle / gradle.properties / 模块 build.gradle 关键部分]

## 期望
1. 指出具体不兼容的配置项
2. 提供迁移后的配置代码
3. 说明 AGP 8.x 的破坏性变更影响
4. 如果涉及 namespace / buildConfig 变更,给出完整迁移方案

3.5 性能优化专项

markdown 复制代码
## 角色
Android 性能优化专家,擅长 Compose 渲染性能分析和内存优化。

## 任务
分析并优化以下 Compose 代码的滚动性能。

## 代码
[粘贴 LazyColumn 实现代码]

## 已知症状
- 列表滚动时帧率下降(Profiler 显示 Compose Recomposition 计数异常高)
- 快速滑动时内存抖动明显

## 约束
- 保持现有 UI 视觉效果不变
- 列表项包含异步加载的图片(Coil)
- 支持点击展开/收起详情(状态变化)

## 期望输出
1. 性能瓶颈分析(具体到代码行)
2. 优化后的代码(使用 remember, derivedStateOf, key 等优化手段)
3. 解释每项优化背后的原理
4. 提供 Profiler 验证指标的建议

四、Prompt 编写最佳实践

4.1 上下文管理策略

策略 说明
分块投喂 不要一次性粘贴 10 个文件。先给接口定义,再给实现,最后给调用方
差异标记 使用 // [新增] // [修改] // [删除] 标注变更点
依赖清单 始终声明 minSdk, targetSdk, 关键库版本,避免 AI 推荐过时 API
反例约束 明确说"不要使用 AsyncTask"比说"用现代方案"更有效

4.2 输出控制技巧

markdown 复制代码
## 输出格式控制示例

- **代码优先**:先给完整可运行代码,再在代码块后用引用符号 > 补充说明
- **逐步生成**:"第一步只生成数据层,我确认后再生成 UI 层"
- **对比模式**:"请用 diff 格式展示修改,标注行号"
- **安全检查**:"在输出前,检查是否包含硬编码密钥或敏感信息,如果有请用 <PLACEHOLDER> 替代"

4.3 多轮对话优化

第一轮 :需求 + 角色 + 约束(不给代码,让 AI 输出方案设计) 第二轮 :确认方案后,提供代码上下文,要求实现 第三轮:对输出进行 Review,要求补充边界情况处理

技巧 :让 AI 先输出设计思路/伪代码,确认方向正确后再输出完整实现,避免大段代码返工。


五、安卓开发常见 AI 陷阱与规避

陷阱 表现 规避 Prompt
过时 API 推荐 AsyncTask, Loader, FragmentPagerAdapter "只使用 Android API 30+ 推荐的方案,如果涉及已废弃 API 请明确标注"
缺失权限处理 生成代码未处理运行时权限 "必须包含 Android 6.0+ 运行时权限申请逻辑,并处理用户拒绝场景"
生命周期泄漏 在 Activity 中直接持有协程 Job 或 Callback "确保所有异步操作都在 LifecycleScope 或 ViewModelScope 内,避免内存泄漏"
硬编码字符串/尺寸 直接写 "确定"16.dp "字符串提取到 strings.xml,尺寸使用 dimens 或 MaterialTheme 规范"
忽略配置变更 旋转屏幕后状态丢失 "必须处理配置变更(configChanges 或 ViewModel + SavedStateHandle),状态持久化"
主线程 IO Room/网络操作未切换线程 "所有数据库和网络操作必须在 IO/Dispatcher.IO 线程执行,主线程只做 UI 更新"
过度绘制 Compose 嵌套 Box/Column 导致多层背景 "优化布局层级,避免不必要的背景绘制,遵循 Compose 性能最佳实践"

六、高阶技巧:构建你的 Prompt 库

建议在你的项目中维护一个 prompts/ 目录:

bash 复制代码
prompts/
├── 01-code-review.md          # 代码审查 Prompt
├── 02-unit-test.md            # 单测生成 Prompt
├── 03-compose-ui.md           # UI 组件生成
├── 04-refactor-mvi.md         # 架构重构
├── 05-bug-analyze.md          # 崩溃分析
└── 06-gradle-fix.md           # 构建修复

代码审查专用 Prompt 示例:

markdown 复制代码
## 角色
严格的 Android Code Reviewer,遵循 Google 官方 Kotlin 规范。

## 审查重点
1. 空安全(?. / ?: / let 的合理使用,避免 !!)
2. 协程异常处理(CoroutineExceptionHandler / supervisorScope)
3. 生命周期安全(是否使用 repeatOnLifecycle)
4. 资源泄漏(Bitmap, Cursor, Flow 收集是否及时取消)
5. 性能隐患(不必要的对象创建、remember 缺失)
6. 安全性(Intent 暴露、WebView 配置、日志敏感信息)

## 输出格式
对每个问题:
- [严重/警告/建议] 文件:行号 - 问题描述 - 修复建议代码片段

七、总结:Prompt 质量检查清单

在发送 Prompt 前,确认是否包含:

  • 角色定义:明确技术栈和经验年限
  • 版本约束:minSdk, targetSdk, 关键库版本
  • 完整上下文:相关代码、错误日志、配置文件
  • 具体任务:重构/生成/修复/优化,明确动作
  • 输出格式:代码块、diff、分步骤、中文注释
  • 否定约束:明确禁止的方案(如"不要用反射")
  • 边界情况:空状态、错误处理、权限、配置变更

最后建议 :AI Coding 的效率不取决于 AI 有多强,而取决于你描述问题的精确度。在安卓开发这种强上下文、强约束的领域,多花 2 分钟写 Prompt,能节省 30 分钟的调试时间。

如果你需要,我可以针对你当前的具体项目技术栈(Compose/ViewSystem、协程/RxJava、Hilt/Koin 等)定制一套更精准的 Prompt 模板。

相关推荐
程序员鱼皮2 小时前
AI 时代,程序员还有必要刷算法吗?
计算机·ai·程序员·编程·ai编程
小虎AI生活3 小时前
Claude token 暴涨 117%,十家 AI 宣布涨价,你准备好了吗
ai编程
十里春风_jzh4 小时前
opencode会话同步skill
ai编程
小仙女喂得猪4 小时前
2026 Android 组件化项目的AICoding落地实践
android·kotlin·ai编程
水月天涯4 小时前
ClaudeCode入门00-初识神器(小白入门-到底什么是ClaudeCode,为什么大家都说好用?)
人工智能·ai编程
java1234_小锋6 小时前
能让你的 AI 编程 Token 降低 60% 以上的开源神器:目前 GitHub 狂揽约 4.2 万星标
人工智能·github·ai编程
甲维斯6 小时前
3P骚操作!把DeepSeekV4直接接入Claude桌面版!
人工智能·ai编程
Niubility7 小时前
你大概率没用对 Claude Code 的五大能力
agent·ai编程·claude
星浩AI7 小时前
Claude Code 白嫖接入 DeepSeek V4 教程
llm·claude·vibecoding