Android + Kiro 软件开发实战教程
文章目录
- [Android + Kiro 软件开发实战教程](#Android + Kiro 软件开发实战教程)
-
- [一、Kiro 简介](#一、Kiro 简介)
-
- [1.1 Kiro 与传统 IDE 的区别](#1.1 Kiro 与传统 IDE 的区别)
- [1.2 适用场景](#1.2 适用场景)
- 二、环境搭建
-
- [2.1 安装 Kiro](#2.1 安装 Kiro)
- [2.2 打开 Android 项目](#2.2 打开 Android 项目)
- [2.3 推荐配置](#2.3 推荐配置)
- 三、实战流程:以蓝牙文件接收功能为例
-
- [3.1 第一步:代码分析](#3.1 第一步:代码分析)
- [3.2 第二步:需求描述](#3.2 第二步:需求描述)
- [3.3 第三步:迭代修复](#3.3 第三步:迭代修复)
- [3.4 第四步:日志分析](#3.4 第四步:日志分析)
- [3.5 第五步:功能优化](#3.5 第五步:功能优化)
- [四、Kiro 核心功能在 Android 开发中的应用](#四、Kiro 核心功能在 Android 开发中的应用)
-
- [4.1 代码搜索与分析](#4.1 代码搜索与分析)
- [4.2 跨文件修改](#4.2 跨文件修改)
- [4.3 布局文件生成](#4.3 布局文件生成)
- [4.4 字符串资源管理](#4.4 字符串资源管理)
- [4.5 文档生成](#4.5 文档生成)
- [4.6 Steering 规范引导](#4.6 Steering 规范引导)
- [4.7 Hooks 自动化](#4.7 Hooks 自动化)
- 五、高效使用技巧
-
- [5.1 对话技巧](#5.1 对话技巧)
- [5.2 上下文管理](#5.2 上下文管理)
- [5.3 模式选择](#5.3 模式选择)
- [5.4 大型项目策略](#5.4 大型项目策略)
- 六、常见问题
-
- [Q1:Kiro 修改的代码编译不过怎么办?](#Q1:Kiro 修改的代码编译不过怎么办?)
- [Q2:Kiro 修改后固件中没有新代码?](#Q2:Kiro 修改后固件中没有新代码?)
- [Q3:Kiro 对 Android 系统 API 不熟悉怎么办?](#Q3:Kiro 对 Android 系统 API 不熟悉怎么办?)
- [Q4:对话太长 Kiro 忘记之前的上下文?](#Q4:对话太长 Kiro 忘记之前的上下文?)
- [Q5:如何让 Kiro 生成的代码风格一致?](#Q5:如何让 Kiro 生成的代码风格一致?)
- 七、实战项目总结
- 八、附录
-
- [8.1 本项目修改文件清单](#8.1 本项目修改文件清单)
- [8.2 调试命令速查](#8.2 调试命令速查)
- Kiro并不是万能的,但是它算是一个很好的开发助手。
一、Kiro 简介
Kiro 是 AWS 推出的 AI 辅助开发 IDE,基于 VS Code 内核,集成了 AI Agent 能力。
它能理解代码上下文、执行文件操作、运行命令、搜索代码,并通过对话式交互帮助开发者完成复杂的编码任务。
最近我用Kiro解决了不少Android Studio 应用的问题和系统源码应用的问题;
使用Kiro写Android代码确实可以减少 80%的精力,并且生成和修改的代码简洁,功能完善,还有总结文档。
下面是Kiro的使用介绍。
1.1 Kiro 与传统 IDE 的区别
| 特性 | 传统 IDE | Kiro |
|---|---|---|
| 代码补全 | 基于语法的补全 | AI 理解上下文的智能补全 |
| 代码搜索 | 文本搜索 | 语义理解 + 正则搜索 |
| 重构 | 手动修改多个文件 | AI 自动分析依赖并批量修改 |
| 调试分析 | 手动阅读日志 | 粘贴日志让 AI 分析根因 |
| 文档生成 | 手动编写 | AI 根据代码自动生成 |
1.2 适用场景
- AOSP 系统级应用开发(蓝牙、Settings、SystemUI 等)
- Android App 开发
- 跨文件重构和代码分析
- 日志分析和 Bug 定位
- 代码审查和文档生成
二、环境搭建
2.1 安装 Kiro
-
下载 Kiro 安装包:https://kiro.dev
-
Windows 双击安装,安装完成后启动
-
登录GitHub、 AWS 账号或 Builder ID
可以先登录GitHub 使用免费账号体验,我是用的公司收费账号(20¥/月)
Kiro没有复杂的配置过程,下载安装后,登录就可以使用。
2.2 打开 Android 项目
方式1:直接打开模块目录
File → Open Folder → 选择 packages/modules/Bluetooth/android/app/
方式2:打开整个 AOSP 源码(大型项目建议只打开需要修改的模块)
File → Open Folder → 选择 release
让Kiro分析蓝牙部分代码:packages/modules/Bluetooth/
如下图所示:

登录后左下角会有显示用户,open目录后代码显示在左边,可以在右边提问题:解决bug或者实现功能;
运行后一次也可以吧报错的log文件放到根目录,让它帮忙分析解决就可以了;
主要工作就是:提需求,验证测试。
2.3 推荐配置
在项目根目录创建 .kiro/steering/android-dev.md,添加开发规范:
markdown
---
inclusion: always
---
# Android AOSP 开发规范
- 使用 java.time.* 替代 java.util.Date(errorprone 检查)
- LocalTime.now() 必须传入 ZoneId.systemDefault()
- 日志关键字统一使用 lwzbt 便于过滤
- 所有新增字符串需要同步添加中英文资源
- 修改后确认 AndroidManifest.xml 中组件注册正确
三、实战流程:以蓝牙文件接收功能为例
3.1 第一步:代码分析
对话示例:
用户:分析 opp 目录的代码的作用
Kiro 会自动:
- 扫描
src/com/android/bluetooth/opp/目录下所有文件 - 分析每个类的职责和调用关系
- 生成结构化的分析报告
关键技巧:
- 让 Kiro 先分析再动手,避免盲目修改
- 可以要求生成 .mk 文档保存分析结果
- 对于大型文件,Kiro 会自动分段读取
3.2 第二步:需求描述
对话示例:
用户:分析蓝牙应用源码,修改如下需求:
1、目前系统没有下拉框和状态栏,需要拦截蓝牙文件接收,弹框确认
2、确认接收后,弹出传输进度对话框
3、接收完成后 toast 提示并隐藏对话框
4、支持缩小为悬浮窗
5、接收失败显示异常标记
技巧:
- 一次性描述完整需求,Kiro 会统筹规划
- 如果有参考图片,可以拖拽到对话框中
- 需求越具体,生成的代码越准确
3.3 第三步:迭代修复
Android AOSP 开发中,编译错误是常见的。Kiro 的优势在于快速分析和修复。
对话示例:
用户:修改后编译报错分析解决:
packages/modules/Bluetooth/android/app/src/com/android/bluetooth/opp/
BluetoothOppTransferDialogActivity.java:213: error: [JavaUtilDate]
Date has a bad API that leads to bugs; prefer java.time.Instant or LocalDate.
Kiro 会:
- 识别 errorprone 检查规则
- 自动替换为符合规范的代码
- 检查是否有其他同类问题一并修复
3.4 第四步:日志分析
对话示例:
用户:点击缩小传输过程的对话框报错日志分析:
04-14 10:50:06.289 4102 4102 E AndroidRuntime:
java.lang.RuntimeException: Unable to start service
com.android.bluetooth.opp.BluetoothOppFloatService:
android.view.WindowManager$BadTokenException:
permission denied for window type 2003
Kiro 会:
- 识别 window type 2003 = TYPE_APPLICATION_OVERLAY
- 分析权限缺失原因
- 提供多种解决方案并实施
3.5 第五步:功能优化
开发过程中不断发现问题并优化:
用户:目前还发现几个需要优化的地方:
1、隐藏传输过程重新显示后,未显示已接收的文件信息
2、缩小的悬浮框默认位置改为左下角
3、悬浮框去掉白边,透明背景蓝色图案
4、悬浮框显示接收文件进度 N/M
技巧:
- 多个优化点可以一次性提出
- Kiro 会分析每个问题的根因并逐一修复
- 修复后会自动更新相关联的文件
四、Kiro 核心功能在 Android 开发中的应用
4.1 代码搜索与分析
用户:搜索 BluetoothOppObexServerSession 中 onPut 方法的完整实现
Kiro 使用 readCode 工具智能读取代码,大文件自动提取函数签名,指定函数名可以精确定位实现。
4.2 跨文件修改
用户:添加一个 prop 属性判断 persist.sys.skg.bluetooth_aosp,
true 走自定义逻辑,false 走原生逻辑
Kiro 会:
- 识别所有需要添加判断的入口点
- 在多个文件中同时添加 SystemProperties 检查
- 自动添加必要的 import 语句
4.3 布局文件生成
用户:创建传输对话框布局,包含标题栏、文件信息、进度条、已接收文件列表
Kiro 生成完整的 XML 布局文件,包含合理的 id 命名和样式。
4.4 字符串资源管理
用户:添加的字符串帮忙添加中英文的字符串
Kiro 会同步更新:
res/values/strings.xml(英文)res/values-zh-rCN/strings.xml(简体中文)res/values-zh-rTW/strings.xml(繁体中文)res/values-zh-rHK/strings.xml(香港繁体)
如果有需要添加所有国家的语言也是可以的。
4.5 文档生成
用户:总结修改的全部内容,生成 mk 文档,包含文件清单、移植说明、问题排查
Kiro 会遍历所有修改过的文件过程,生成结构化的技术文档。
注意:
Kiro可以生成文件、文档,但是无法直接生成图片;
比如某个代码流程图,它可能会生成mmd文件,但是没啥用;
正确的做法是:让它把XXX内容的流程图生成html文件,然后打开网页直接查看或者可以导出成图片,试过是可以的。
4.6 Steering 规范引导
在 .kiro/steering/ 目录下创建 markdown 文件,Kiro 会在每次对话中自动加载:
markdown
# 编码规范
- 不使用 java.util.Date
- 广播接收器使用 RECEIVER_EXPORTED
- 新增组件必须在 AndroidManifest.xml 注册
这样 Kiro 在生成代码时会自动遵守这些规范。
4.7 Hooks 自动化
创建 Hook 在文件保存时自动检查:
用户:创建一个 hook,当 java 文件编辑后,提醒检查是否有 errorprone 问题
五、高效使用技巧
5.1 对话技巧
| 场景 | 推荐写法 | 避免写法 |
|---|---|---|
| 分析代码 | "分析 opp 目录代码的文件接收流程" | "看看代码" |
| 修复 Bug | 直接粘贴完整报错日志 | 只说"编译报错了" |
| 需求开发 | 列出 1、2、3 具体需求点 | 模糊描述"改一下界面" |
| 优化 | 描述现象 + 期望效果 | 只说"有问题" |
5.2 上下文管理
- 使用
#File引用特定文件让 Kiro 聚焦 - 使用
#Folder引用整个目录 - 使用
#Problems查看当前文件的问题 - 使用
#Terminal引用终端输出 - 使用
#Git Diff查看当前修改
5.3 模式选择
- Autopilot 模式:Kiro 自动修改文件,适合信任度高的场景
- Supervised 模式:每次修改后可以 revert,适合谨慎操作
5.4 大型项目策略
AOSP 项目文件量巨大,建议:
- 只打开需要修改的模块目录,不要打开整个 AOSP
- 先让 Kiro 分析目标模块的结构
- 使用 steering 文件预设项目规范
- 复杂修改分步进行,每步验证
六、常见问题
Q1:Kiro 修改的代码编译不过怎么办?
直接把编译错误粘贴给 Kiro,它会分析错误原因并修复。
AOSP 的 errorprone 检查比较严格,常见问题包括:
JavaUtilDate:用java.time.*替代JavaTimeDefaultTimeZone:LocalTime.now()加ZoneId.systemDefault()UnusedMethod:删除未使用的方法
Q2:Kiro 修改后固件中没有新代码?
- 确认编译路径正确
- AOSP 增量编译可能不会重新编译未变更的模块
- 尝试删除 out 目录下对应模块的中间产物后重新编译
Q3:Kiro 对 Android 系统 API 不熟悉怎么办?
- 提供相关源码文件让 Kiro 阅读
- 粘贴 Android 官方文档链接
- 指出具体的 API 用法,Kiro 会学习并应用
Q4:对话太长 Kiro 忘记之前的上下文?
- 使用 "CONTEXT TRANSFER" 总结之前的对话要点
- 在新对话开头粘贴关键信息摘要
- 使用 steering 文件持久化项目规范
Q5:如何让 Kiro 生成的代码风格一致?
- 创建
.kiro/steering/规范文件 - 在对话中明确指出代码风格要求
- 提供现有代码作为参考样例
七、实战项目总结
以本次蓝牙 OPP 文件接收功能开发为例,整个过程:
| 阶段 | Kiro 的作用 | 人工操作 |
|---|---|---|
| 需求分析 | 分析源码结构,生成分析文档 | 提出需求 |
| 方案设计 | 确定修改点,规划数据流 | 审核方案 |
| 编码实现 | 生成 Java/XML/字符串资源 | 审核代码 |
| 编译修复 | 分析报错并自动修复 | 粘贴错误日志 |
| 运行调试 | 分析 logcat 日志定位问题 | 提供设备日志 |
| 迭代优化 | 根据反馈修改代码 | 描述问题现象 |
| 文档输出 | 生成完整技术文档 | 审核文档 |
整个开发过程中,Kiro 完成了约 90% 的编码工作,
开发者主要负责需求描述、方案审核、设备测试和问题反馈。
项目完成后,最好让它生成一个总结文档。
八、附录
8.1 本项目修改文件清单
新增文件:
src/com/android/bluetooth/opp/BluetoothOppTransferDialogActivity.java
src/com/android/bluetooth/opp/BluetoothOppFloatService.java
res/layout/bt_file_transfer_dialog.xml
res/layout/bt_file_transfer_item.xml
res/layout/bt_file_transfer_float.xml
修改文件:
AndroidManifest.xml
src/com/android/bluetooth/opp/BluetoothOppNotification.java
src/com/android/bluetooth/opp/BluetoothOppIncomingFileConfirmActivity.java
src/com/android/bluetooth/opp/BluetoothOppObexServerSession.java
src/com/android/bluetooth/opp/BluetoothOppReceiver.java
res/values/strings.xml
res/values-zh-rCN/strings.xml
res/values-zh-rTW/strings.xml
res/values-zh-rHK/strings.xml
res/values/styles.xml
8.2 调试命令速查
bash
# 过滤自定义日志
adb logcat | grep lwzbt
# 授予悬浮窗权限
adb shell appops set com.android.bluetooth SYSTEM_ALERT_WINDOW allow
# 查看 prop 开关状态
adb shell getprop persist.sys.skg.bluetooth_aosp
# 开启自定义弹框模式
adb shell setprop persist.sys.skg.bluetooth_aosp true
# 关闭自定义弹框模式(使用原生通知栏)
adb shell setprop persist.sys.skg.bluetooth_aosp false
# 重启蓝牙服务使 prop 生效
adb shell am force-stop com.android.bluetooth
Kiro并不是万能的,但是它算是一个很好的开发助手。
Kiro确实是对Android比较有用的,没用的人赶紧试试。
AI可能会淘汰很多人,但是先淘汰的是不会使用AI工具的人。