Android + Kiro AI软件开发实战教程

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

  1. 下载 Kiro 安装包:https://kiro.dev

  2. Windows 双击安装,安装完成后启动

  3. 登录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.* 替代
  • JavaTimeDefaultTimeZoneLocalTime.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工具的人。

相关推荐
流星雨在线2 小时前
安卓路由技术选型调研
android·therouter·arouter
Engineer邓祥浩2 小时前
JVM学习笔记(10) 第三部分 虚拟机执行子系统 第9章 类加载及执行子系统的案例与实战
jvm·笔记·学习
自信150413057592 小时前
重生之从0开始学习c++之内存管理
c++·学习
千里马学框架2 小时前
Ubuntu 24 搭建aosp源码环境详细笔记
android·linux·ubuntu·framework·安卓·aosp·源码环境
m0_716765232 小时前
数据结构--单链表的插入、删除、查找详解
c语言·开发语言·数据结构·c++·笔记·学习·visual studio
_李小白2 小时前
【OSG学习笔记】Day 53: Text3D( 三维文字)
笔记·学习·3d
石榴树下的七彩鱼2 小时前
Python OCR 文字识别 API 接入完整教程
开发语言·人工智能·后端·python·ocr·api·图片识别
Memory_荒年2 小时前
别让用户“剁手”把你搞破产:接口幂等性与防重的终极防线
后端
空中海2 小时前
安卓 第六章:主题、样式与国际化
android