跳转至

第 08 章 AI 辅助开发集成指南

AI 辅助开发集成指南图

学习目标:掌握 AI 工具在 Android 开发中的应用,提升开发效率。

预计学习时间: 3-5 天 实践时间: 2 天


目录

  1. GitHub Copilot 深度应用
  2. Claude Code 集成
  3. Codex/OpenAI API 应用
  4. AI 驱动测试
  5. 提示词工程
  6. Android Studio Gemini 集成
  7. 实践练习

1. GitHub Copilot 深度应用

1.1 Copilot 配置与优化

Text Only
// VS Code settings.json
{
    "github.copilot.enable": {
        "*": true,
        "kotlin": true,
        "markdown": true,
        "plaintext": false
    },
    "github.copilot.inlineSuggest.enable": true,
    "github.copilot.advanced": {
        "lengthThreshold": 20,
        "suggestionDelay": 50
    }
}

1.2 Copilot 最佳实践

Kotlin
// ✅ 好的注释引导Copilot生成代码
// 创建一个Retrofit实例,配置OkHttp客户端和JSON转换器
@Provides
@Singleton
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
    // Copilot会根据注释生成代码
    return Retrofit.Builder()
        .baseUrl(BuildConfig.BASE_URL)
        .client(okHttpClient)
        .addConverterFactory(Json.asConverterFactory())
        .build()
}

// ✅ 使用函数签名引导
// 实现一个带缓存的用户Repository
class CachedUserRepository(
    private val api: UserApi,
    private val dao: UserDao
) : UserRepository {
    // Copilot会生成实现代码
}

1.3 Copilot 快捷键

快捷键 功能
Tab 接受建议
Ctrl+Enter 打开 Copilot 面板
Alt+] 下一个建议
Alt+[ 上一个建议
Ctrl+Shift+I 内联聊天

2. Claude Code 集成

2.1 代码审查工作流

Bash
# 创建代码审查脚本
#!/bin/bash
# scripts/claude-review.sh

echo "请审查以下代码变更:"
git diff HEAD~1

echo ""
echo "审查要点:"
echo "1. 代码质量和可读性"
echo "2. 潜在的性能问题"
echo "3. 安全漏洞"
echo "4. 最佳实践遵循情况"
echo "5. 测试覆盖率"

2.2 重构辅助

Markdown
## 重构请求模板

请帮我重构以下代码:

```text

[粘贴代码]

```

重构目标:
1. 遵循SOLID原则
2. 减少重复代码
3. 提高可读性
4. 添加适当的注释
5. 确保线程安全

请提供:
- 重构后的完整代码
- 重构说明
- 潜在风险评估

2.3 文档生成

Markdown
## 文档生成模板

请为以下代码生成KDoc文档:

```text

[粘贴代码]

```

要求:
- 为每个公共函数添加文档
- 说明参数和返回值
- 添加使用示例
- 标注可能的异常

3. Codex/OpenAI API 应用

3.1 API 集成示例

Kotlin
// OpenAI API客户端
class OpenAiClient @Inject constructor(
    private val client: OkHttpClient
) {
    suspend fun generateCode(
        prompt: String,
        language: String = "kotlin"
    ): Result<String> = withContext(Dispatchers.IO) {
        try {  // try/catch捕获异常
            val request = Request.Builder()
                .url("https://api.openai.com/v1/chat/completions")
                .addHeader("Authorization", "Bearer ${BuildConfig.OPENAI_API_KEY}")
                .post(
                    jsonBody {
                        put("model", "gpt-4o-mini")
                        putJsonArray("messages") {
                            addJsonObject {
                                put("role", "user")
                                put("content", prompt)
                            }
                        }
                        put("max_tokens", 500)
                        put("temperature", 0.7)
                    }
                )
                .build()

            val response = client.newCall(request).execute()
            // 解析响应...
            Result.success(generatedCode)
        } catch (e: Exception) {
            Result.failure(e)
        }
    }
}

3.2 复杂算法开发

Markdown
## 算法生成提示词

请用Kotlin实现一个高效的图片缓存算法,要求:

1. 使用LRU淘汰策略
2. 支持内存和磁盘二级缓存
3. 线程安全
4. 支持缓存大小限制
5. 添加单元测试

请提供:
- 完整的实现代码
- 复杂度分析
- 使用示例

4. AI 驱动测试

4.1 测试生成

Markdown
## 单元测试生成模板

请为以下类生成完整的单元测试:

```python

class UserRepository(
    private val API: UserApi,
    private val dao: UserDao
) {
    suspend fun getUser(id: String): Result<User> {
        return try {
            val user = API.getUser(id)
            dao.insert(user.toEntity())
            Result.success(user.toDomain())
        } catch (e: Exception) {
            dao.getUser(id)?.let {
                Result.success(it.toDomain())
            } ?: Result.failure(e)
        }
    }
}

```

要求:
1. 使用JUnit 5和MockK
2. 覆盖正常和异常场景
3. 测试网络失败时的缓存行为
4. 使用Given-When-Then格式
5. 测试命名清晰

4.2 UI 测试生成

Kotlin
// AI生成的Compose UI测试示例
@Test
fun loginScreen_displaysErrorWhenCredentialsInvalid() {
    // Given
    composeTestRule.setContent {
        LoginScreen(
            viewModel = LoginViewModel(
                loginUseCase = mockLoginUseCase
            )
        )
    }

    // When
    composeTestRule
        .onNodeWithText("Email")
        .performTextInput("invalid@email")

    composeTestRule
        .onNodeWithText("Password")
        .performTextInput("123")

    composeTestRule
        .onNodeWithText("Login")
        .performClick()

    // Then
    composeTestRule
        .onNodeWithText("Invalid credentials")
        .assertIsDisplayed()
}

5. 提示词工程

5.1 提示词设计原则

Markdown
## 高质量提示词结构

1. **角色定义**
   "你是一位经验丰富的Android开发专家..."

2. **上下文提供**
   "项目使用Kotlin、Jetpack Compose和MVVM架构..."

3. **具体任务**
   "请实现一个支持离线功能的Repository..."

4. **约束条件**
   "要求:
   - 使用协程和Flow
   - 支持错误处理
   - 添加单元测试"

5. **输出格式**
   "请提供:
   - 完整代码
   - 使用说明
   - 注意事项"

5.2 常用提示词模板

Markdown
## 模板1:代码生成

作为Android开发专家,请帮我实现[功能描述]。

技术栈:
- Kotlin
- Jetpack Compose
- Hilt
- Coroutines/Flow

代码要求:
- 遵循MVVM架构
- 添加错误处理
- 包含单元测试
- 使用Material Design 3

## 模板2:代码审查

请审查以下代码并提供改进建议:

```text

[代码]

```

审查维度:
1. 代码质量
2. 性能优化
3. 安全漏洞
4. 最佳实践
5. 可读性

## 模板3:问题排查

我的Android应用遇到以下问题:
[问题描述]

相关代码:
```text

[代码]

```

错误日志:
```text

[日志]

```

请帮我:
1. 分析问题原因
2. 提供解决方案
3. 预防建议

6. Android Studio Gemini 集成

6.1 Gemini AI 简介

Android Studio Narwhal ( 2025.1.1 )及更高版本深度集成了 Google 的 Gemini AI 助手,为 Android 开发者提供原生 AI 辅助开发体验。 Gemini AI 支持多模态输入(文本+图像),可以理解设计图并生成对应的 UI 代码。

核心功能

功能 说明
智能代码补全 基于上下文的代码生成和补全
多模态输入 支持上传图像生成 UI 代码
Agent Mode 自动化处理跨文件的多步骤开发任务
代码解释 解释复杂代码逻辑
错误诊断 分析编译错误并提供修复建议
重构建议 智能代码重构建议

6.2 启用 Gemini AI

在 Android Studio Narwhal 中启用 Gemini :

Text Only
Settings → Languages & Frameworks → Gemini → Enable Gemini

或使用快捷键: - Alt+Enter( Windows/Linux )或 Option+Enter( Mac )- 打开 Gemini 建议 - Ctrl+Shift+G - 打开 Gemini 聊天窗口

6.3 Gemini Agent Mode

Gemini Agent Mode 是 Android Studio 中的革命性功能,可以自动化处理跨文件的多步骤开发任务:

Kotlin
// 示例:让Gemini添加一个新的功能模块
// 在Gemini聊天窗口输入:

"""
请帮我添加一个用户认证模块:
1. 创建LoginScreen Composable
2. 创建LoginViewModel
3. 添加Retrofit API接口
4. 创建数据模型(LoginRequest/LoginResponse)
5. 添加输入验证逻辑
6. 创建单元测试

要求:
- 使用MVVM架构
- 使用Hilt进行依赖注入
- 使用Kotlin Coroutines处理异步操作
- 支持邮箱和密码验证
"""

Gemini 会自动: 1. 分析项目结构 2. 创建所需文件 3. 编写代码实现 4. 添加必要的依赖 5. 生成测试代码

6.4 多模态输入功能

Gemini 支持上传图像并生成对应的 Compose 代码:

Text Only
1. 在Gemini聊天窗口点击"Attach Image"
2. 上传UI设计图或截图
3. 输入提示:"请根据这个设计图生成Compose代码"
4. Gemini会分析图像并生成对应的UI实现

示例输出:

Kotlin
@Composable
fun ProfileCard(
    user: User,
    onEditClick: () -> Unit
) {
    Card(
        modifier = Modifier
            .fillMaxWidth()
            .padding(16.dp),
        elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
    ) {
        Row(
            modifier = Modifier.padding(16.dp),
            verticalAlignment = Alignment.CenterVertically
        ) {
            // 根据设计图生成的头像布局
            AsyncImage(
                model = user.avatarUrl,
                contentDescription = "Avatar",
                modifier = Modifier
                    .size(64.dp)
                    .clip(CircleShape),
                contentScale = ContentScale.Crop
            )

            Spacer(modifier = Modifier.width(16.dp))

            Column(modifier = Modifier.weight(1f)) {
                Text(
                    text = user.name,
                    style = MaterialTheme.typography.titleMedium
                )
                Text(
                    text = user.email,
                    style = MaterialTheme.typography.bodyMedium,
                    color = MaterialTheme.colorScheme.onSurfaceVariant
                )
            }

            IconButton(onClick = onEditClick) {
                Icon(Icons.Default.Edit, contentDescription = "Edit")
            }
        }
    }
}

6.5 与 GitHub Copilot 对比

特性 GitHub Copilot Android Studio Gemini
集成深度 编辑器级 IDE 级(深度集成)
多模态 不支持 支持图像输入
Agent Mode 不支持 支持
Android 专属 通用 Android 优化
上下文理解 文件级 项目级
代码解释 基础 详细

6.6 使用最佳实践

Kotlin
// ✅ 好的提示示例
"""
请帮我重构这个ViewModel:
1. 将状态管理从LiveData迁移到StateFlow
2. 添加错误处理逻辑
3. 优化内存泄漏风险
4. 添加单元测试

当前代码:
[paste code here]
"""

// ❌ 不好的提示示例
"帮我改代码" // 太模糊,缺乏上下文

6.7 隐私与安全

使用 Gemini 时需要注意:

  1. 代码隐私: Gemini 会分析代码上下文,敏感代码需谨慎
  2. 企业环境:检查公司政策是否允许使用 AI 工具
  3. 离线开发: Gemini 需要网络连接,离线时不可用
  4. 数据保留:了解 Google 的数据使用政策

7. 实践练习

练习 1 : AI 辅助开发工作流

任务:建立个人 AI 辅助开发工作流

要求: 1. 配置 Copilot 和 Claude Code 2. 创建常用提示词库 3. 建立代码审查流程 4. 记录使用心得

练习 2 : AI 生成完整功能

任务:使用 AI 工具生成一个完整功能模块

要求: - 从需求描述开始 - 使用 AI 生成架构设计 - 生成核心代码 - 生成单元测试 - 人工审查和优化


本章小结

核心要点

  1. GitHub Copilot是日常编码的强大助手
  2. Claude Code适合代码审查和重构
  3. Android Studio Gemini提供深度 IDE 集成的 AI 体验
  4. Gemini Agent Mode可自动化处理跨文件开发任务
  5. AI 驱动测试能显著提升测试覆盖率
  6. 提示词工程决定 AI 输出的质量
  7. AI 是辅助工具,需要人工审查和验证

AI 工具使用原则

场景 推荐工具 注意事项
日常编码 Copilot/Gemini 审查生成代码
代码审查 Claude/Gemini 结合人工判断
功能开发 Gemini Agent Mode 明确需求描述
UI 生成 Gemini 多模态 上传设计图参考
测试生成 Copilot/Codex 验证测试有效性
架构设计 Claude/Gemini 多方验证方案
问题排查 Claude/Gemini 提供完整上下文

下一步

完成本章学习后,请进入第 09 章:测试策略与质量保证


本章完成时间:预计 3-5 天