Android with AI 解决方案

利用生成式 AI 全面提升 Android 应用的性能

在本学习路径中,您将了解如何使用 Google 技术,以更少的努力构建更具吸引力的 Android 应用。在接下来的部分中,您将构建和增强一个假想的膳食准备应用,该应用代表了您作为 Android 开发者目前可能正在开发的应用类型。

您将学习如何在 Android Studio 中使用 Gemini 更快地学习和开发,使用 Firebase 构建应用的存储层和登录功能,使用 Gemini 在应用中构建先进的生成式 AI 功能,以及使用 Firebase Remote Config、Google Analytics 和 Crashlytics 等工具为生产环境中的应用提供支持。

利用 Android Studio 中的 Gemini 强力助推 Android 开发

借助 Android Studio 中的 Gemini(您的 AI 赋能的编码助手),您可以比以往更轻松地构建 Android 应用。

Android Studio 中的 Gemini 可将 AI 直接集成到您每天使用的 IDE 中,在整个软件开发生命周期中为您提供帮助,让您能够更快速、更轻松地构建高品质 Android 应用。这意味着,您可以更快地学习新概念、轻松构建原型,并有更多时间专注于应用的重要部分。

在开始构建 Android 应用时,了解 Android Studio 中的 Gemini 如何助您大幅提升开发效率。
如果您刚刚接触 Android 或特定的 Android 开发领域,Android Studio 中的 Gemini 可以成为您不可多得的学习工具。

  • 即时解答问题:你可以直接在 Android Studio 的聊天窗口中向 Gemini 提问,询问 Android 基本概念、特定 API 或最佳实践。例如,你可以问“什么是深色主题?”或“在 Android 设备上获取位置信息的最佳方式是什么?”
  • 获取代码示例和指南:Gemini 可以生成代码段,并就实现各种功能(例如添加相机支持或创建 Room 数据库)提供指南。您甚至可以要求以 Kotlin 或专门针对 Jetpack Compose 的方式生成代码。
  • 了解错误并查找解决方案:如果您遇到构建或同步错误,可以向 Gemini 寻求相关说明和解决方案建议。Gemini 还可以帮助分析 App Quality Insights 中的崩溃报告,提供摘要并建议后续步骤。
例如,对于我们假设的膳食准备应用,您可以让 Gemini 帮助您设计一个新的 Compose 布局原型,以显示食谱卡片。使用 Gemini 的多模态功能,只需提供一个线框模拟,然后让 Gemini 为您的界面勾勒出代码。
在 Gemini in Android Studio 的预览阶段,个人版是免费的。

不过,对于隐私和管理要求更为严格的大型团队环境中的开发工作,面向企业的 Studio 中的 Gemini 提供了额外的宝贵优势,包括增强的隐私保护、安全性和代码自定义功能,并且可使用 Google Cloud 抵用金。

这些工具与 Gemini Code Assist 搭配使用,可让团队充满信心地利用 AI 的强大功能,满足重要的隐私保护、安全和管理需求。

适用于应用的 Firebase 构建块

在开发和运营任何应用时,应用开发中的常见功能(例如云端存储、用户身份验证和崩溃报告)都是必不可少的组成部分。

Firebase 提供了这些基本构建块,从而简化了 Android 应用开发流程,让您无需实现自己的后端。
例如,如果您要构建食谱准备应用,则需要将食谱、餐食计划和食材清单保留在设备之外(以防用户换手机)。您可以在 Cloud Firestore 中保留这些数据。

Cloud Firestore 是 Firebase 和 Google Cloud 提供的可伸缩 NoSQL 云数据库。它可以通过实时监听器在各个客户端应用之间实现实时数据同步,并为移动和 Web 应用提供离线支持,确保无论网络连接状况如何,应用都能快速响应。它可与其他 Firebase 和 Google Cloud 产品(包括 Cloud Functions)无缝集成。

用户身份验证至关重要,它可让切换设备的用户访问其数据,并确保他人无法访问其数据!

Firebase Authentication 是一款强大的工具,可简化向 Android 应用添加用户身份验证的过程。它提供了后端服务,以及一个内含现成界面库的 SDK,支持各种身份验证方法,包括电子邮件/密码登录、电话号码身份验证,以及与 Google、Facebook 和 Twitter 等热门联合身份提供方集成。
监控错误和崩溃至关重要,有助于确保应用稳定且成功运行。崩溃的应用会让用户感到沮丧并被卸载!

Firebase Crashlytics 是一个实时崩溃报告解决方案,可帮助您对影响应用质量的稳定性问题进行跟踪、确定优先解决顺序并加以修复。Crashlytics 会对崩溃进行智能分组并突出显示导致这些崩溃的环境因素,从而为您节省问题排查的时间。

Cloud Firestore 和 Firebase Authentication 都提供充足的免费层级;不过,如果您的应用需要这些服务提供的更多配额或高级功能,您需要订阅付费方案。不过别担心,您可以使用 Cloud 赠金来支付这些费用!无论您使用 Crashlytics 的次数如何,都无需支付费用。

如需了解 Firebase 提供的其他解决方案,请访问 Firebase 网站
scope.launch {
  val response = model.generateContent(
    "Create a shopping list with $cuisineStyle ingredients")
}
以食谱应用为例,Gemini 2.0 Flash 可以创建包含食材的购物清单,以便按照特定烹饪风格烹饪一餐。您甚至可以要求模型生成 JSON 字符串,以便在应用中轻松解析,以便渲染到界面中。如需生成列表,只需使用文本提示调用函数 `generateContent()` 即可。

如需详细了解,请参阅 Android 开发者指南

Android 上的生成式 AI

我们可以通过多种方式在 Android 餐食准备应用中集成生成式 AI。下面简要概述了每种方案:
Gemini Nano 是 Gemini 系列中经过优化以在设备端运行的模型。它通过 AICore 直接集成到 Android OS。您可以使用它来提供生成式 AI 体验,而无需连接到网络或将数据发送到云端。

对于以低延迟、低成本和隐私保护为主要考量的用例,设备端 AI 是一个绝佳选择。例如,在餐前应用中,Gemini Nano 可用于根据不同的菜系和用户的用餐记录提供餐食建议。

您可以在 Android 文档中详细了解 Gemini Nano 的技术架构。

如需在您自己的应用中试用 Gemini Nano,请参阅下文中有关使用实验版 Google AI Edge SDK 在设备端运行 Gemini Nano 的步骤。
经过优化以在云端运行的生成式 AI 模型通常比设备端 AI 模型更强大。

作为 Android 开发者,您可以使用 Firebase 中的 Vertex AI 在 Android 应用中快速实现生成式 AI 功能,具体方法是使用 Gemini Pro 和 Flash 模型处理文本生成任务,使用 Imagen 处理图片生成任务。

Gemini Pro 和 Flash 系列 AI 模型是多模态模型,可以处理各种各样的任务。它们接受图片、音频和视频输入,并生成可采用 JSON、XML 和 CSV 格式的文本输出。最新的 Gemini 模型甚至可以生成多模态输出,例如音频和图片!

例如,在膳食准备应用中,您可以使用 Gemini 模型创建包含特定类型烹饪所需食材的购物清单。

您还可以使用 Google Cloud 赠金来支付对 Gemini 模型的这些调用费用!

如需了解如何在应用中使用云托管的 Gemini 模型,请参阅下文中的“通过 Vertex AI 在 Firebase 中使用 Gemini”步骤。
Imagen 3 是 Google 最新的图片生成模型。您可以通过 Vertex AI in Firebase 访问它,从而快速、顺畅地将图片生成功能添加到 Android 应用。

例如,在膳食准备应用中,您可以使用 Imagen 3 模型生成食谱插图。

您的 Google Cloud 抵用金可以抵扣相关费用。

如需了解如何在应用中使用 Imagen 3,请参阅下文中的“使用 Imagen 3 生成图片”步骤。
您还可以通过后端集成添加生成式 AI 功能:

  • Genkit 是一个开源框架,可简化 AI 赋能的应用的开发、部署和监控。
  • 对于更高级的 MLOps 需求,Google Cloud 的 Vertex AI 提供了全托管式服务,并通过 Vertex AI Model Garden 提供丰富的模型。您还可以使用 Google Cloud 赠金来支付这些服务的任何费用。


如果您想在 Gemini Nano 之外的设备上运行 AI 推理,还可以试用 LiteRT 和 MediaPipe:
  • LiteRT(以前称为 TFLite)是 Google 面向设备端 AI 的高性能运行时,旨在直接在设备上高效执行机器学习模型。
  • MediaPipe 是一个开源框架,可让开发者构建机器学习流水线,以实时处理多媒体数据(例如视频和音频)。


如需详细了解 Android GenAI 产品,请参阅 Android 文档中的 AI 部分
借助 Google AI Edge SDK,Android 应用开发者可以集成和实验 Gemini Nano 的设备端 GenAI 功能,以增强其应用。 具体步骤如下:
  • 加入 aicore-experimental Google 群组
  • 选择加入 Android AICore 测试计划
    。完成上述步骤后,Play 商店(“管理应用和设备”下)中的 AICore 应用名称应从“Android AICore”更改为“Android AICore(Beta 版)”。
  • 按照以下步骤操作,确保 APK 和二进制文件已正确下载到您的设备上。
  • 然后,添加以下依赖项以更新应用的 Gradle 配置:implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
    并确保将最低 SDK 目标版本设为 31。
implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
接下来,您可以配置模型以控制其回答。这涉及提供上下文,并可选择性地设置以下参数:

  • 温度:控制随机程度。值越高,输出的多样性就越大。
  • Top K:指定在生成输出时要考虑的排名最高的词元的数量。
  • 候选数量:设置要返回的回答数量上限。
  • 输出令牌数上限:设置响应的长度上限。
val generationConfig = generationConfig {
  context = ApplicationProvider.getApplicationContext()
  temperature = 0.2f
  topK = 16
  maxOutputTokens = 256
}
创建一个可选的 downloadCallback 函数。此回调函数用于模型下载。它还会返回可用于调试目的的消息。使用您之前创建的生成配置和可选的下载配置生成 `GenerativeModel` 对象。
val downloadConfig = DownloadConfig(downloadCallback)
val generativeModel = GenerativeModel(
  generationConfig = generationConfig,
  downloadConfig = downloadConfig // optional
)
最后,通过将问题传递给模型来启动推理。由于 GenerativeModel.generateContent() 是一个挂起函数,因此请确保它位于适当的协程作用域内。

在示例的膳食准备应用中,Gemini Nano 可以提供膳食灵感,建议与膳食历史记录不同的各种菜系和膳食。
scope.launch {
  val input = "Suggest different types of cuisines and easy to cook dishes that are not $recentMealList"
  val response = generativeModel.generateContent(input)
  print(response.text)
}
Gemini Nano 模型的输入词元数量上限为 12,000。如需详细了解 Gemini Nano 实验版访问权限,请参阅 Android 文档的 Gemini Nano 部分。

通过 Vertex AI in Firebase 使用 Gemini

借助 Vertex AI in Firebase,您可以使用 Gemini Cloud 模型构建由 genAI 赋能的功能,同时无缝部署和管理 Firebase 生态系统。

dependencies {
...
// Import the BoM for the Firebase platform
implementation(platform("com.google.firebase:firebase-bom:"))

// Add the dependency for the Vertex AI in Firebase library
// When using the BoM, you don't specify versions in Firebase
// library dependencies
implementation("com.google.firebase:firebase-vertexai")
}
首先,在 Vertex AI Studio 中试用提示。它是一个用于提示设计和原型设计的交互式界面。您可以上传文件来测试包含文字和图片的提示,并保存提示以供日后再访问。

当您准备好从应用调用 Gemini API 时,请按照 Vertex AI in Firebase 入门指南中的说明设置 Firebase 和 SDK。

然后,将 Gradle 依赖项添加到您的项目中:

val generativeModel = Firebase.vertexAI
  .generativeModel(
  "gemini-2.0-flash",
  generationConfig = generationConfig {
        responseMimeType = "application/json"
        responseSchema = jsonSchema
  }
    )
现在,您可以从 Kotlin 代码调用 Gemini API。首先,初始化 Vertex AI 服务并创建 `GenerativeModel` 实例:
scope.launch {
  val response = model.generateContent("
    Create a shopping list with $cuisineStyle ingredients")
}
以食谱应用为例,Gemini 2.0 Flash 可以创建包含食材的购物清单,以便按照特定烹饪风格烹饪一顿饭。您甚至可以要求模型生成 JSON 字符串,以便在应用中轻松解析,以便渲染到界面中。如需生成列表,只需使用文本提示调用函数 `generateContent()` 即可。

如需详细了解,请参阅 Android 开发者指南

用于生成图片的 Imagen 3

您可以通过 Vertex AI in Firebase 使用 Imagen 3,将图片生成功能无缝集成到 Android 应用中。作为 Google 最先进的图片生成模型,Imagen 3 可生成细节出众、伪影极少且光效逼真的高品质图片,为图片生成树立了新标准。

例如,Imagen 3 可以让用户生成自己的个人资料头像,或创建素材资源来展示现有的界面流程。例如,在膳食准备应用中,您可以使用 Imagen 3 为食谱屏幕生成图片。

Image generated by Imagen 3 with the prompt: A cartoon style illustration of a top overview of a kitchen countertop with beautiful ingredients for a Mediterranean meal.
dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.10.0"))

    implementation("com.google.firebase:firebase-vertexai")
}
集成 Imagen 3 与在 Firebase 中通过 Vertex AI 访问 Gemini 模型类似。

首先,将 Gradle 依赖项添加到 Android 项目:
val imageModel = Firebase.vertexAI.imagenModel(
modelName = "imagen-3.0-generate-001",
generationConfig = ImagenGenerationConfig(
  imageFormat = ImagenImageFormat.jpeg(compresssionQuality = 75),
  addWatermark = true,
  numberOfImages = 1,
  aspectRatio = ImagenAspectRatio.SQUARE_1x1
)
然后,在 Kotlin 代码中,通过传递模型名称和(可选)模型配置来创建 `ImageModel` 实例:
val imageResponse = imageModel.generateImages(
prompt = "A cartoon style illustration of a top overview of a kitchen countertop
  with beautiful ingredients for a $cuisineStyle meal."
)
最后,通过使用文本提示调用 `generateImages()` 来生成图片:
val image = imageResponse.images.first()
val uiImage = image.asBitmap()
从 `imageResponse` 检索生成的图片,并将其显示为位图:
如需详细了解如何使用 Imagen 3,请参阅 Android 开发者博客Android 开发者文档

使用 Firebase 为正式版做好准备

在应用中实现 genAI 功能后,请执行以下关键后续步骤,以便将应用部署到生产环境: 此外,请注意用户隐私和负责任的 AI 使用,并向用户坦诚说明可能出现的意外模型行为。请阅读以下 博文,详细了解如何使用 Vertex AI in Firebase 做好生产准备。