跳转至

第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天