前言

今天 Carson 来聊一个大部分 Android 开发者都很想做、但又觉得门槛高的事------给你的 App 加端侧 AI 能力。
不用训练模型、不用调云端 API、不用花一分钱计费、数据不离开设备。
听起来是不是太理想?但 Google 的 ML Kit GenAI API + Gemini Nano 已将其变成了现实。

1. 它是什么?
一张图看懂完整架构:

Gemini Nano 不是一个单独的 SDK。它是一个三层协作体系:
| 层级 | 组件 | 职责 |
|---|---|---|
| 应用层 | ML Kit GenAI APIs | 开发者直接调用的高级接口 |
| 系统层 | AICore | 模型管理(下载/更新)、硬件加速、安全过滤 |
| 模型层 | Gemini Nano | Google 端侧基础模型(多模态) |
用大家最熟悉的网络框架 Retrofit做对比:
- ML Kit GenAI API 就像
Retrofit - AICore 就像
OkHttp - Gemini Nano 就像底层的
TCP 连接
这个分层设计最大的好处是:你不需要管模型文件有多大、放在哪、怎么更新。AICore 帮你搞定一切,你只管调 API就能使用。
2. 核心原理:AICore 到底干了什么?
AICore 是一个系统级模块(类似 Google Play Services),核心职责有四个:
① 模型分发与更新
- Gemini Nano 的模型文件由 AICore 统一管理;
- 设备上所有 App 共享同一份模型,不重复下载;
- 模型更新通过 Google Play 系统更新推送,开发者无感知。
好处:你的 App 体积完全不受影响。不像自己集成 TFLite 模型那样动辄增加几百 MB。
② 硬件加速
- AICore 自动利用设备端的 NPU / GPU / DSP 做加速;
- 开发者不需要关心底层是高通、联发科还是 Tensor 芯片;
- 推理延迟通常在 100-500ms(短文本场景)。
③ 安全过滤
- 所有输入和输出都经过内置的安全评估;
- 自动过滤有害内容;
- 开发者不需要自己做 content moderation。
④ 隐私隔离(Private Compute Core)
AICore 遵循 Android 的 Private Compute Core 原则:
- 无直接互联网权限;
- 所有网络请求(包括模型下载)通过开源的 Private Compute Services 路由;
- 处理完成后不存储任何输入/输出数据。
总结
AICore 的设计哲学是开发者做最少的事,系统承担最重的活。
这和 Apple 的 Core ML 思路很像,但 Google 做得更激进:连模型文件都不需要你关心。

3. 什么时候该用 Gemini Nano?
Android 同时具备 端侧AI (Gemini Nano) 和 云端 AI(Gemini Pro/Flash),那么该如何区分使用场景?
选型对比
| 维度 | Gemini Nano(端侧) | Gemini Pro/Flash(云端) |
|---|---|---|
| 网络依赖 | ❌ 完全离线可用 | ✅ 必须联网 |
| API 费用 | 免费 | 免费额度 + 按量计费 |
| 隐私 | 数据不离开设备 | 数据上传 Google Cloud |
| 上下文窗口 | 较小(适合短文本) | 极大(100 万 token+) |
| 多模态能力 | 文本 + 图片 + 音频 | 文本 + 图片 + 音频 + 视频 |
| 推理速度 | 首 token 快,长文本慢 | 依赖网络,大文本反而快 |
| 设备要求 | Pixel 9+/旗舰机型 | 任何设备 |
| 自定义能力 | 有限(6 个固定 API) | 完全自定义 Prompt |
选型原则
-
1:隐私优先 → 选端侧 聊天消息校对、本地笔记总结、医疗/金融类文本处理------数据绝对不能出设备;
-
2:复杂推理 → 选云端 需要超长上下文、代码生成、多轮复杂对话------端侧模型能力不够
-
3:两者结合 → 用 Hybrid Routing Firebase AI Logic 支持
PREFER_ON_DEVICE模式,优先端侧,不行自动回退云端。
使用场景
- 如果 AI 功能是「辅助性的」,如校对、摘要、快捷回复,那么使用端侧Gemini Nano足矣。
- 如果是「核心功能」,如智能搜索、内容生成,那么建议走 Hybrid 方案。
4. 使用API 速览

ML Kit GenAI 目前提供 6 个开箱即用的 API:
| API | 输入 | 输出 | 典型场景 |
|---|---|---|---|
| Prompt | 自定义文本 / 多模态 | 生成文本 | 通用生成、问答、分类 |
| Summarization | 长文本 / 对话 | 项目符号列表摘要 | 聊天记录总结、文章摘要 |
| Proofreading | 短文本 | 修正后的文本 | 输入框实时校对 |
| Rewriting | 短文本 + 目标风格 | 重写后的文本 | 一键改写(正式/轻松/简短) |
| Image Description | 图片 | 文字描述 | 无障碍、图片搜索标签 |
| Speech Recognition | 音频流 | 转写文本 | 语音输入、会议记录 |
Prompt API 是核心
其他 5 个 API 本质上是 Prompt API 的「预置模板」。如果你的场景不在上面 5 个之内,直接用 Prompt API 自己写 prompt。
两种响应模式
- 流式:生成过程中逐步返回 token,适合长文本、实时显示打字效果;
- 非流式:等全部生成完一次性返回,适合短回答或后台批处理。
总结
6 个 API 覆盖了 80% 的「辅助型 AI」场景。
如果你的需求只是校对、摘要、快捷回复,根本不需要自己写 prompt------用专用 API 效果更好,因为 Google 已经帮你调优过了。
5. 实战展示:轻松跑通一个端侧 AI 功能

以最通用的 Prompt API 为例,从零到运行。
步骤 1:添加依赖
kotlin
// build.gradle.kts (Module)
dependencies {
implementation("com.google.mlkit:genai:1.0.0-beta01") // 👈 ML Kit GenAI
}
⚠️ 截至 2026 年 7 月,GenAI API 仍处于 Beta 阶段。API 可能有变化。
步骤 2:检查设备是否支持
kotlin
import com.google.mlkit.genai.common.GenerativeAIException
import com.google.mlkit.genai.prompt.PromptApi
// 检查端侧模型是否可用
val isAvailable = PromptApi.isAvailable(context)
if (!isAvailable) {
// 👈 该设备不支持 Gemini Nano,走降级逻辑
fallbackToCloudApi()
return
}
步骤 3:创建 PromptApi 实例
kotlin
import com.google.mlkit.genai.prompt.PromptApi
import com.google.mlkit.genai.prompt.PromptRequest
val promptApi = PromptApi.create(context) // 👈 创建实例
步骤 4:发起推理请求
kotlin
// 非流式调用
val request = PromptRequest.builder()
.setPrompt("用一句话总结:Android 17 正式发布了 Gemini Intelligence 功能")
.build()
val response = promptApi.generateContent(request)
println(response.text) // 👈 输出生成的文本
步骤 5:流式调用(适合 UI 实时显示)
kotlin
// 流式调用 ------ 像 ChatGPT 一样逐字显示
promptApi.generateContentStream(request).collect { chunk ->
textView.append(chunk.text) // 👈 逐步追加到 UI
}
🧪 完整可运行示例
kotlin
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.google.mlkit.genai.prompt.PromptApi
import com.google.mlkit.genai.prompt.PromptRequest
import kotlinx.coroutines.launch
class GenAiDemoActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_demo)
lifecycleScope.launch {
// 1. 检查可用性
if (!PromptApi.isAvailable(this@GenAiDemoActivity)) {
showToast("当前设备不支持端侧 AI")
return@launch
}
// 2. 创建实例
val api = PromptApi.create(this@GenAiDemoActivity)
// 3. 构建请求
val request = PromptRequest.builder()
.setPrompt("列出 Kotlin 协程的 3 个核心概念")
.build()
// 4. 流式生成
api.generateContentStream(request).collect { chunk ->
binding.tvResult.append(chunk.text) // ✅ 逐字追加
}
}
}
}
总结
从添加依赖到看到 AI 输出,只需5 步。这可能是 Android 历史上最低门槛的 AI 集成方案------比接个 Retrofit 网络请求还简单!
这些坑你一定要避开!

实际接入时,这些坑你大概率会踩:
| # | 坑 | 说明 | 解决方案 |
|---|---|---|---|
| 1 | 设备不支持 | 低端 / 老旧设备没有 Gemini Nano | 必须做 isAvailable() 检查 + 降级方案 |
| 2 | 每应用配额 | AICore 对单个 App 有推理次数限制 | 收到 ErrorCode.BUSY 时做排队重试 |
| 3 | 每日电池配额 | 长时间高频调用会触发电池保护 | 收到 BATTERY_USE_QUOTA_EXCEEDED 时停止调用 |
| 4 | 仅前台可用 | 后台 App 无法发起推理 | 收到 BACKGROUND_USE_BLOCKED 时引导用户回前台 |
| 5 | 版本差异 | nano-v2 和 nano-v3 输出不一致 | 两个版本分别测试 + prompt 做兼容性调优 |
| 6 | 安全过滤误伤 | AICore 内置 content filter 可能拒绝合法请求 | 调整 prompt 措辞,避免敏感关键词 |
| 7 | Beta 阶段 | API 签名可能变化 | 锁定版本号,关注 Release Notes |
最容易忽略的:降级策略
端侧 AI 的「不支持就降级」逻辑,和当年 AndroidX 处理旧版本兼容的思路一模一样。把它当作一个特性检测来做就对了
不是所有用户的设备都支持 Gemini Nano。你必须准备一个降级方案:
kotlin
suspend fun smartGenerate(prompt: String): String {
return if (PromptApi.isAvailable(context)) {
// ✅ 端侧推理
val api = PromptApi.create(context)
val request = PromptRequest.builder().setPrompt(prompt).build()
api.generateContent(request).text
} else {
// ⚠️ 降级到云端 Gemini
firebaseAI.generateContent(prompt).text
}
}
总结

用一张表收尾全文核心信息:
| 问题 | 答案 |
|---|---|
| 它是什么? | 侧 AI 方案 = ML Kit GenAI API + AICore + Gemini Nano |
| 要钱吗? | 不要。端侧推理完全免费 |
| 要联网吗? | 不要。离线可用 |
| 我的数据安全吗? | 安全。数据不离开设备,Private Compute Core 架构 |
| 支持哪些功能? | 6 个 API:Prompt / 总结 / 校对 / 重写 / 图片描述 / 语音识别 |
| 哪些设备能用? | Pixel 9+、三星 S26+、小米 15+、OnePlus 13+ 等旗舰 |
| 集成难度? | 5 步搞定,比接 Retrofit 还简单 |
| 最大的坑? | 设备覆盖率有限,必须做降级方案 |
你的 App 打算接端侧 AI 吗?准备用在哪个场景?评论区聊聊!
📎 参考资料
- Gemini Nano | AI | Android Developers:developer.android.com/ai/gemini-n...
- The latest Gemini Nano with on-device ML Kit GenAI APIs:android-developers.googleblog.com/2025/08/the...
- On-device GenAI APIs as part of ML Kit:android-developers.googleblog.com/2025/05/on-...