Android Studio 中引入的 Gemini

Android Studio 中引入的 Gemini

在现代开发环境中,人工智能已经成为提升开发效率的重要工具。为了帮助开发者更高效地创建高质量的 Android 应用,在今年,Android Studio 官方在 Youtube 上发布了一个视频,视频中表示他们将会推出了 Gemini —— 一个强大的 AI 编程助手。Gemini 旨在简化开发流程,让用户在构建 Android 应用时更加得心应手,提升工作效率。

在这篇博客中,我们将深入探讨 Gemini 的最新功能,以及它如何帮助开发者在实际工作中解决难题,提升开发效率。

一. Gemini 简介

那么 Gemini 是什么呢?从三个角度来讲:

1. 从模型来讲:

Gemini 是谷歌 DeepMind 开发的一款多模态大模型,支持处理文本、图像、音频和视频等多种数据类型。通过优化的 Transformer 解码器架构,Gemini 能够高效地进行大规模预训练和推理,提供强大的多任务处理能力。

2. 从编程能力来讲:

Gemini 不仅能够理解并生成多种编程语言(如 Python、Java、C++)的代码,还可以为开发者提供代码重构、简化以及自动化编程建议,极大提高编码效率。

3. 从安全性与应用性来讲:

Gemini 在安全性方面经过全面评估,确保在处理敏感数据时的高安全性。随着其不断集成到谷歌的多个服务中,Gemini 将为用户提供更智能的体验,并逐步在 Android Studio 中应用,帮助开发者更高效地解决问题。

所以无论是加速应用开发、提高代码质量,还是优化性能,Gemini 都能成为用户不可或缺的伙伴。如果用户正在寻找提高开发效率的新方法,或是想探索更多关于应用和游戏开发的机会,Google Play 上的最新更新也提供了丰富的资源。

二. Gemini 在 Android Studio 中的配置及使用

在 Android Studio 中,Gemini 不仅能为你提供智能的代码建议,还能帮助用户分析崩溃报告,提供优化应用稳定性的深度洞察。通过集成 Firebase Crashlytics 和 Android Vitals 数据,Gemini 能在应用开发的各个环节为你提供支持,无需切换工具,提升开发效率。

1. 配置方法:怎样启用 Gemini 工具窗口

打开 Android Studio,点击菜单栏中的 View > Tool Windows > Gemini,即可启用 Gemini 工具窗口。

2.Gemini 在什么情况下会被使用
a. 为代码生成建议

一旦启用 Gemini,你就可以在代码编辑器中通过右键菜单来触发 Gemini 的代码建议功能:在代码编辑器中,右键选择需要优化或重构的代码片段。从上下文菜单中选择 Gemini > Transform selected code,此时会显示提示框,你可以输入希望 Gemini 执行的任务,比如简化代码、重构为规范化代码,或者生成新的函数。Gemini 会根据你的需求生成代码差异(code diff),让你逐行检查、选择接受你想要的修改。

b. 分析崩溃报告

除了代码建议,Gemini 还可以帮助你分析崩溃报告,提供修复建议:通过 App Quality Insights 功能,Gemini 能集成 Firebase Crashlytics 和 Android Vitals 的数据,自动分析崩溃日志。

用户可以在 Gemini 工具窗口中查看每个崩溃报告的总结,了解问题的根源,并获得进一步的解决方案。

c. 生成崩溃修复建议

在分析崩溃报告后,Gemini 会为你提供下一步的推荐,包括修复代码示例和相关文档链接,帮助你快速解决问题。这些建议可以帮助用户从根本上提升应用的稳定性,减少崩溃和用户流失,确保应用在各种环境下顺畅运行。

三. Gemini 在 Android Studio 的运行实例

运行实例也分为几个大方面

1. 官方发布的编码功能包括:
a.Gemini Code Transforms---- 使用自定义提示修改和重构代码。

b. 提交消息生成 ---- 分析更改并提出 VCS 提交消息以简化版本控制操作。

c. 重新思考和重命名 ---- 为用户的类、方法和变量生成直观的名称。

d. 提示库 ---- 保存和管理用户最常用的提示。

e. 生成文档 ---- 只需右键单击即可获取所选代码片段的文档。
2.Gemini 在可视化功能上:
a. 将 AI 集成到 UI 工具中

Android Studio 通过将 AI 引入 Compose 工作流程,使构建用户界面更加便捷。Gemini 能够通过 AI 自动生成与上下文相关的 Composable 预览,帮助开发者更高效地在设计阶段可视化 UI,减少了手动创建预览参数所需的时间。

b. 多模态支持的探索

开发团队正在实验多模态支持,以进一步加速 UI 开发周期。即将推出的功能包括允许将图片作为上下文输入,利用 Gemini 的多模态理解能力,帮助开发者更轻松地创建美观、富有吸引力的用户界面。

3.Gemini 在提升应用质量方面的应用

Gemini 的智能功能可以帮助开发者分析代码、测试代码并提供修复建议,从而提高应用质量。它逐步集成到 Android Studio 的 “应用质量洞察” 工具窗口中,协助开发者分析 Google Play Console 和 Firebase Crashlytics 报告的崩溃问题。通过最新的 Ladybug 功能,开发者还能利用本地代码上下文生成更深入的洞察,从而更快速地修复错误,减少用户遇到的崩溃情况,提高应用的稳定性和用户体验。具体案例如下

a. 单元测试场景生成

根据本地代码上下文,自动生成单元测试场景,提升测试效率。

b. 构建 / 同步错误分析

提供更全面的构建和同步错误覆盖范围,帮助快速定位问题。

c. 应用质量洞察

针对 Android Vitals 和 Firebase Crashlytics 中报告的崩溃问题,提供详细的解释和修复建议,并支持结合本地代码上下文,生成更深入的分析结果。

四. Gemini 模型和其他 ai 模型的对比

在了解 Gemini 之前,我使用过的内置 ai 的编辑器是 cursor,所以这里我主要写一下 cursor 和 Gemini 比较的优劣势。

Gemini 的简介和应用已经在前文写过了,下面来分析一下我认为的 Gemini 的优点和缺点

1.Gemini 优点

它作为深度集成开发工具。Gemini 在与 Android Studio 深度集成后,专注于 Android 应用开发场景,这种定制化支持特别适合 Android 开发者

它不仅处理文本代码,并且在探索图片等多模态输入,能更好地结合上下文设计用户界面,做到了多模态支持。

Gemini 能做到生态闭环,它依托于 Google 的 Play Console 和 Firebase。

2.Cursor 优点

它的通用性较强,Cursor 作为一个独立的 AI 工具,更多面向通用代码生成和编写辅助,支持多种语言和开发场景,对于多栖开发者或跨平台项目更为适用。

Cursor 的迭代较快,由于 Cursor 模型可以直接应用于多种 IDE 或文本编辑器,它更新快、使用门槛低,适合快速试验和多样化需求。

(图片为 Cursor 可选择的模型)

3.Gemini 缺点

局限性较强,虽然在 Android 开发领域表现优异,但它的能力主要集中在 Android Studio 中,针对其他开发场景的适配较弱,不适合跨平台开发者。

Gemini 的多模态功能和深度质量洞察等特性还处于实验阶段,部分功能未完全成熟。

4.Cursor 缺点

Cursor 的通用性是其优势,但也导致它在特定场景(如 Android UI 设计、崩溃日志分析等)无法提供像 Gemini 那样深度定制的解决方案。

而且相比 Gemini 在 Google 生态下的无缝集成,Cursor 缺乏类似 Firebase 或 Play Console 的平台支持,难以提供从开发到发布的全面工具链服务。

从上面的这些比较可以看出,两种不同的 ai 模型应用在不同的领域,在进行编码时,要根据自己的实际需求选择 ai 模型。

五. 我对 Gemini 的实际应用

Gemini 目前还未引入 Android Studio 的正式版,我后面举的例子是和 Google 的 gemini 对话得到的。在之前的 NotePad 项目中,我遇到的问题有下:1. 新的安卓版本和旧代码不兼容  2. 数据库无法通过 update() 方法更新  3. 导出笔记功能的权限修改出现错误

通过上述对 Gemini 的理解和学习,我认为如果有开发工具 Gemini,它能够针对我的情况提供实时、针对性的解决方案,大幅减少调试和排查问题的时间。具体示例如下:

1. 新的安卓版本和旧代码不兼容

问题分析:
  新版 Android 经常弃用旧的 API 或限制某些功能,比如权限管理变化、Context 的使用方式修改等,导致旧代码报错或失效

  • Gemini 的帮助:

    1. 自动代码迁移:

      检测项目中已弃用的 API(如 getExternalStorageDirectory())并建议替代方案。提供升级后的代码片段,例如使用 MediaStore 进行文件管理,而不是直接操作存储路径。

    2. 兼容性检测:

      自动检测项目中哪些代码可能在目标 SDK(如 Android 13)下失效,提醒你需要增加兼容性处理逻辑。提供分版本处理建议,比如在不同的 API 级别调用不同的实现。

    3. 即时文档查询:

      自动查找相关 API 的官方文档,解释新的限制或推荐的实践方案

2. 数据库无法通过 update() 方法更新

问题分析:
update() 方法失败可能是由于 SQL 查询条件不正确、数据类型不匹配,或者数据库的表结构和代码定义不一致。

Gemini 的帮助:

1.SQL 调试助手:

自动分析你的 update() 语句和条件,并指出可能的逻辑问题。

2. 数据模型检查:

检测表的定义是否与代码中使用的模型类匹配,比如字段类型或字段名是否一致。

3. 生成调试脚本:

提供完整的 SQL 测试语句,便于在 SQLite 数据库工具中直接测试更新功能。

下面是 gemini 生成的调试日志,对应了帮助用户找出代码问题的功能。这段代码在运行后可以在 logcat 查看运行结果,然后根据输出结果进一步找出问题。

ContentValues values = new ContentValues();
values.put("title", newTitle);
int rowsUpdated = db.update("notes", values, "id = ?", new String[]{String.valueOf(noteId)});
if (rowsUpdated == 0) {
    Log.e("DB_ERROR", "No rows updated. Check your WHERE clause or data consistency.");
}
3. 导出笔记功能的权限修改出现错误

问题分析:
Android 新版权限管理(如 Scoped Storage 和动态权限)可能导致文件读写失败。

Gemini 的帮助:

1. 权限诊断

检测项目中是否已正确声明权限(如 WRITE_EXTERNAL_STORAGE)。

2. 替代解决方案

提供符合 Scoped Storage 的导出方法建议,比如通过 MediaStoreContentResolver               进行文件存取,而不是直接使用文件路径。

下面是 Gemini 给我提供的解决方案,这个代码是在 Android 新的 Scoped Storage 模式下,导出笔记文件到设备的文档目录。

ContentResolver resolver = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DISPLAY_NAME, "note_export.txt");
values.put(MediaStore.MediaColumns.MIME_TYPE, "text/plain");
values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOCUMENTS);
Uri uri = resolver.insert(MediaStore.Files.getContentUri("external"), values);
try (OutputStream out = resolver.openOutputStream(uri)) {
    out.write(noteContent.getBytes());
} catch (IOException e) {
    Log.e("EXPORT_ERROR", "File export failed", e);
}

六. 总结

总的来说,Gemini 的引入为 Android Studio 的开发体验注入了强大的 AI 支持,从 UI 可视化到代码质量分析,它简化了开发流程,提高了效率。无论是自动生成预览、智能分析崩溃,还是优化测试场景,Gemini 都通过深度集成和创新功能帮助开发者专注于创造更高质量的应用。未来,随着多模态能力的完善,Gemini 有望成为开发者不可或缺的助手,让我们期待它为 Android 的开发带来更多可能性吧。

作者:徐雅妮

原文地址 blog.csdn.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值