1. 准备工作
通过 Firebase AI Logic,Gemini Developer API 可让您使用 Gemini 模型系列中的生成式 AI 模型,还可以打造迄今为止尚未实现的新体验。
此 Codelab 将指导您向 Jetnews 应用添加总结功能。Jetnews 是一款新闻阅读应用,构建该应用所用的 Jetpack Compose 属于 compose-samples 代码库的一部分。

在此 Codelab 中,您将执行以下操作:
- 在 Google AI Studio 中编写提示,用于总结新闻报道,
- 将 Firebase AI Logic SDK 集成到 Jetnews 中。
- 在报道视图顶部添加“Gemini 摘要”部分,在底部栏中添加“总结”按钮。

Jetnews 应用的总结功能由 Gemini API 提供支持。
前提条件
- 具备 Kotlin 基础知识
- 熟悉如何使用 Android Studio,以及如何在搭载 Android API 级别 23 或更高版本的模拟器或实体设备中测试应用
- 一个用于访问 Firebase 的 Google 账号
2. 设计提示
提示是指您的应用通过 Gemini API 发送给 Gemini 模型的消息,其中可以包括文本、图片、音频和视频文件。
为特定用例设计理想的提示与其说是科学,不如说是艺术,而且通常需要多次迭代。Google AI Studio 是一种 Google 工具,用于快速设计生成式 AI 模型的原型以及对此类模型进行测试,是设计提示的绝佳工具。

在此 Codelab 中,您需要将一篇技术文章的内容总结为四个要点。此提示的目标是确保摘要相关且为纯文本,且不带任何 Markdown 格式。
经过几次迭代后,您可能会发现效果特别好的提示。如下所示:
Summarize the core findings of the following article in 4 concise bullet points. Ensure each bullet point is specific, informative and relevant. Return just the bullet points as plain text. Don't use markdown.
[article body]
对输出结果满意后,您就可以将 Gemini API 集成到 Android 应用中。
3. 查看代码
首先,查看 GitHub 中的起始源代码:
git clone https://github.com/android/codelab-gemini-summary
Jetnews 应用是完全从零设计的,能够针对各种大小的移动设备进行扩缩。如需查看展示 Android 架构最佳实践的示例,您可以看看 Now In Android。
详细了解 Jetnews 支持大屏设备的实现方法。
如果 Jetnews 应用的源代码让您感到难以理解,请不要担心。要添加由 Gemini 提供支持的总结功能,您只需修改 GeminiRepositoryImpl 类中的代码。我们已为您实现可在应用中触发总结并显示摘要的代码。
最终实现
您可以通过查看此分支来直接访问源代码的最终实现:
git clone https://github.com/android/codelab-gemini-summary git switch final
您需要按照本 Codelab 的第 4 步中详述的说明创建和设置 Firebase 项目。
4. 设置 Firebase 项目
创建 Firebase 项目
在 Firebase 控制台中创建 Firebase 项目。在“创建项目”工作流的第一步中输入新项目名称,创建一个新的 Firebase 项目。系统会自动创建底层 Google Cloud 项目。
在项目中,打开 AI 下拉菜单,然后选择“AI Logic”。

点击“get started”,然后启用 Gemini Developer API,这样您就可以免费开始使用,并获享丰厚的配额:

最后,启用 Gemini Developer API:

将应用连接到 Firebase
现在,您已经设置好 Firebase 项目,接下来您需要将 Android 应用连接到该项目。
- 在 Firebase 控制台中,选择您的项目。
- 点击“添加应用”,然后选择“Android”。
- 按照屏幕上的说明操作,通过提供应用的软件包名称来注册您的应用。
- 下载
google-services.json文件,并将其添加到应用的模块(应用级)根目录中。 - 继续按照屏幕上的说明操作,将 Google 服务 Gradle 插件和 Firebase 物料清单 (BoM) Gradle 依赖项添加到您的应用中。
!注意:不得将 google-services.json 公开提交到源代码控制系统。拥有公开访问权限的其他人可以使用该项目,但需要支付费用。
5. 更新 Gradle 导入项
Jetnews 应用使用 Gradle 版本目录功能,可帮助集中管理依赖项的版本。
- 如需为 Firebase AI Logic SDK 添加 Gradle 导入项,请将以下代码添加到
libs.versions.toml文件中: 请注意,您无需为 firebase-ai 指定版本。使用最新版本的 Firebase BoM 会自动指定最新版本的 Firebase AI Logic SDK。[versions] ... firebase-bom = "34.4.0" // get the latest version from the Firebase documentation [libraries] ... firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref ="firebase-bom" } firebase-ai = { group = "com.google.firebase", name = "firebase-ai" } - 更新
build.gradle.kts:implementation(platform(libs.firebase.bom)) implementation(libs.firebase.ai) - 点击“立即同步”,以提取 Gradle 工件。
如果您不想使用 Gradle 版本目录,可以直接在 build.gradle.kts 中添加导入项:
implementation(platform("com.google.firebase:firebase-bom:34.4.0"))
implementation("com.google.firebase:firebase-ai")
6. Kotlin 集成
您已经添加了相应的依赖项,接下来请更新 Kotlin 代码。
打开 GeminiRepositoryImpl 类。此类将包含与 Gemini API 交互的所有代码。
Gemini 模型初始化
将 GenerativeModel 实例化:
private val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "gemini-2.5-flash",
generationConfig = generationConfig {
temperature = 0f
},
safetySettings = listOf(
SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.DANGEROUS_CONTENT, HarmBlockThreshold.LOW_AND_ABOVE),
)
)
在此示例中,您访问的是 Gemini 2.5 Flash 模型。此模型能够处理此示例的文本总结用例。如需详细了解可用的 Gemini 模型,请参阅 Firebase AI Logic 文档。
此示例还将温度值设为 0,从而更好地确保摘要生成的一致性。如需详细了解模型配置参数,请参阅 Firebase AI Logic 文档。
最后,此示例定义了安全设置,以确保模型在回答中使用恰当的语言。如需详细了解安全设置功能,请参阅 Firebase AI Logic 文档。
使用 Gemini 进行总结
接下来,更新 summarizePost() 函数,对作为参数传递的帖子进行总结。
首先,通过将帖子的所有段落合并成一个字符串来获取文本,然后将其传递给模型:
val postString = StringBuilder()
for (paragraph in post.paragraphs) {
postString.append(paragraph.text)
}
根据本 Codelab 的第 2 步中设计的提示创建 prompt,并传入帖子内容:
val prompt =
"Summarize the following article in 4 concise bullet points. " +
"Ensure each bullet point is specific, informative and relevant. " +
"Return just the bullet points as plain text. " +
"Use plain text, don't use markdown. \n $postString"
最后,将提示传递给模型并返回回答:
return generativeModel.generateContent(prompt).text
测试实现
如需测试实现,请在 Android Studio 中点击“Run app”,然后在模拟器或实体设备上安装 Jetnews 应用。
在首页打开任意报道,然后点击底部栏中的“总结”按钮:

您应该会看到报道顶部显示的“Gemini 摘要”部分,该部分位于报道插图下方:

Jetnews 应用架构
Jetnews 旨在展示 Jetpack Compose 的最新界面功能。它是为了支持不同的屏幕尺寸而实现的(如需了解详情,请参阅这篇博文)。
此 Codelab 的目的并非深入了解 Jetnews 应用架构的细节。Gemini 集成主要发生在 GeminiRepositoryImpl 类中。
不过,如果您想了解按钮如何触发总结,可以查看 JetnewsIcons.kt 中的 SummaryButton()。您还可以查看 PostContent.kt 中 SummarySection() 函数中的总结界面的界面实现。
7. 总结
在此 Codelab 中,您学习了如何执行以下操作:
- 在 Google AI Studio 中创建并测试提示。
- 在 Firebase 中设置项目以使用 Firebase AI Logic SDK,
- 配置 Gradle 依赖项,以便在 Android 应用中使用 Firebase AI Logic,
- 从 Kotlin 代码调用 Gemini 2.5 Flash。
如果您想探索 Firebase AI Logic,可以查看 Android AI 代码示例和文档。