Android Studio 4.1 发布,全方位提升开发体验

5,513 阅读11分钟

我们很高兴发布了 Android Studio 4.1 稳定版,为大家带来一系列针对常见的编辑、调试和优化工作的功能。4.1 版本的重点诉求之一是帮助您在使用 Android Jetpack 库 (即 Android 的开发库套件) 时遵循最佳实践和提升代码编写效率。基于大家的反馈,我们直接在 IDE 中集成了诸多常用的 Android 库,从而改善了编写代码的体验。

Android Studio 4.1 的一些亮点如下: 引入全新的 Database Inspector,用于查询应用的数据库;支持浏览使用 Dagger 或 Hilt 进行依赖项注入的项目;支持在 Android 项目中使用 TensorFlow Lite 模型,进一步增强了对设备端机器学习的支持。我们还对 Apply Changes 进行了更新,以加快部署速度。我们根据大家的反馈进行了一些更改,引入了新的原生内存性能分析器和独立分析工具来为游戏开发者提供助力。

产品质量仍然是团队的主要关注点,我们一直在努力解决错误和性能问题。从大家的反馈来看,许多开发者十分认同我们专注于提高性能和可靠性的举措。很高兴地告诉大家,在本次发布周期中,我们修复了 2,370 个错误,解决了 275 个公共问题。高品质是我们一贯坚持的目标,因为我们知道这是提高开发者工作效率的关键。

许多用户在预览版中提供了早期反馈,在此对大家表示感谢。正是有了各位的反馈,Android Studio 4.1 中的功能才得以迭代和改进。如果您已准备好使用这个全新的稳定版本,通过一系列全新的功能提升工作效率,可以在这里 下载 并开始使用。

下面按关键开发流程列出了 Android Studio 4.1 中的所有 新功能

设计

Material Design 组件更新

现在,创建新项目 (New Project) 对话框中的 Android Studio 模板使用 Material Design 组件 (MDC),并且默认支持最新版的主题和样式设计指南。如此一来,开发者可以更轻松地使用推荐的 Material 样式模式,以及支持现代界面功能 (如深色主题)。

△ 项目模板中的 Material Design 组件更新

△ 项目模板中的 Material Design 组件更新

更新包括:

  • MDC: 项目使用 build.gradle 中的 com.google.android.material:material。基础应用主题使用 Theme.MaterialComponents 父级,并覆盖更新后的 MDC 颜色和 "on" 属性。
  • 颜色资源colors.xml 中的颜色资源使用字面名称 (例如,使用 purple_500 而不是 colorPrimary)。
  • 主题资源: 主题资源位于 themes.xml (而非 styles.xml) 中并使用 Theme.<ApplicationName> 名称。
  • 深色主题: 基础应用主题使用 DayNight 父级,并分为 res/values 和 res/values-night
  • 主题属性: 在布局和样式中将颜色资源称为主题属性 (例如 ?attr/colorPrimary),以避免硬编码颜色。

开发

Database Inspector

我们希望借助新的 Database Inspector 来简化应用数据库的检查、查询和修改操作。首先,将您的应用部署到运行 API 26 或更高级别的设备,然后从菜单中依次选择 View > Tool Windows > Database Inspector。无论您的应用是直接使用 Jetpack Room 开发库还是 Android 平台版本的 SQLite,您现在都可以轻松检查正在运行的应用中的数据库和表,或运行自定义查询。

由于 Android Studio 在您检查应用时会保持实时连接,因此您也可以使用 Database Inspector 对数值进行修改,并在运行的应用中查看结果。如果您使用 Room 持久库,Android Studio 还会在代码编辑器的每个查询旁边插入运行按钮,以帮助您快速运行在 @Query 注解中定义的查询。您可以阅读 官方文档 了解详情。

△ 使用 Database Inspector 检查、查询和修改应用数据库

△ 使用 Database Inspector 检查、查询和修改应用数据库

直接在 Android Studio 中运行 Android 模拟器

现在,您可以直接在 Android Studio 中运行 Android 模拟器。此功能有助于节省屏幕空间,您可以使用热键在模拟器和编辑器窗口之间快速导航,并在一个应用窗口中组织您的 IDE 和模拟器工作流。您可以在 Studio 中管理快照以及旋转和截图等常见的模拟器操作,但要使用全部功能选项,仍然需要使用稳定的模拟器。您可以按照这个菜单路径启用此功能: File → Settings → Tools → Emulator  → Launch in Tool Window

△ 在 Android Studio 中运行 Android Emulator

△ 在 Android Studio 中运行 Android Emulator

Dagger 导航支持

Dagger 是 Android 上常用的依赖项注入库。Android Studio 提供了新的 gutter 操作并扩展了 Find Usages 窗口中的支持,使得在 Dagger 相关代码之间导航更加简单。例如,点击使用给定类型的方法旁边的  gutter 操作,会将您导航到提供该类型的位置。相反,点击  gutter 操作会将您导航到将类型用作依赖项的位置。Android Studio 还支持对使用 Jetpack Hilt 库定义的依赖项执行导航操作。您可以阅读 官方文档 了解详情。

△ 使用 gutter 操作在 Dagger 相关代码之间导航

△ 使用 gutter 操作在 Dagger 相关代码之间导航

使用 TensorFlow Lite 模型

目前,Android 开发者纷纷利用机器学习来打造新颖、实用的体验TensorFlow Lite 是常见的用于编写移动端机器学习模型的开发库,我们希望简化将这些模型导入 Android 应用的过程。与视图绑定类似,Android Studio 会生成易于使用的类,帮助您精简运行模型所需的代码并提升类型安全性。ML Model Binding (ML 模型绑定) 当前的实现支持图像分类和风格转换模型,前提是它们通过元数据得到了增强。

要查看导入模型的详细信息以及如何在应用中使用,请双击项目中的 .tflite 模型文件以打开模型查看器页面。您可以阅读 官方文档 了解详情。

△ 在 Android Studio 4.1 中查看 TensorFlow Lite 模型元数据

△ 在 Android Studio 4.1 中查看 TensorFlow Lite 模型元数据

构建和测试

Android 模拟器 - 可折叠设备铰链信息支持

Android Studio

除了最近新增的 5G 移动网络测试 功能,我们还在 Android 模拟器中增加了对可折叠设备的支持。在 Android 模拟器 30.0.26 及更高版本中,您可以使用多种折叠设计和配置对可折叠设备进行设置。设置完毕后,模拟器将提供铰链角度传感器和姿态变化信息,方便您测试应用在这些机型上的响应情况。请参阅博文《使用 Android 模拟器在 Android 11 上进行开发》了解更多。

Apply Changes 更新

更快的构建有助于开发者更轻松、快速地更改应用。为了帮助您提高应用迭代效率,我们对 Android 11 或更高版本设备的 Apply Changes 进行了多项增强。

我们在优化迭代速度上进行了大力投入,开发出一种无需安装应用即可在设备上部署和保存更改的方法。现在,在完成初始部署后,通过 Apply Code Changes 或 Apply Changes and Restart Activity 对 Android 11 设备进行后续部署的速度大幅提升。我们还在 Apply Changes 中 增加了对其他代码更改的支持。现在,在您添加一个方法后,可点击 Apply Code Changes 或 Apply Changes and Restart Activity 按钮将这些更改部署到正在运行的应用中。

从 AAR 中导出 C/C++ 依赖项

Android Gradle Plugin 4.0 增加了 在 AAR 依赖项中导入 Prefab 软件包 的功能。我们希望扩展此功能以共享原生库。AGP 4.1 支持在 Android 库项目的 AAR 中从外部原生构建中导出库。要导出原生库,请将以下内容添加到库项目 build.gradle 文件的 android 块中:

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
        headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}

原生代码崩溃报告符号化解析

当原生代码发生崩溃或 ANR 时,系统会生成堆栈轨迹,即程序崩溃前所调用的嵌套函数序列的快照。这些快照可以帮助您识别和修复源代码中的问题,但是必须首先将它们符号化,以将计算机地址转换回人类可读的函数名。

如果您的应用或游戏是使用 C++ 之类的原生代码开发的,那么您现在可以将每个版本应用的调试符号文件上传到 Play 管理中心。Play 管理中心使用这些调试符号文件来符号化您应用的堆栈轨迹,从而简化崩溃和 ANR 分析。如果要将调试符号包含在 App Bundle 中,请将下方内容添加到项目的 build.gradle 文件中:

android.buildTypes.release.ndk.debugSymbolLevel = 'SYMBOL_TABLE'

优化

System Trace 界面改进

在 Android Studio 4.1 中,我们对 System Trace 进行了全面改进,该优化工具可让您实时了解应用对系统资源的使用情况。通过框选模式还可以更轻松地选择跟踪记录,此外,我们还添加了新的分析标签页,并添加了更多的帧渲染数据,以帮助您调查应用界面中的渲染问题。您可以阅读 官方文档 了解详情。

框选 : 在 Threads 部分中,您现在可以拖动鼠标来框选一个矩形区域,并点击右上角的 Zoom to Selection 按钮 (或使用键盘快捷键 M) 来放大该区域。当您将相似的线程拖放到一起后,可以跨多个线程进行框选以同时检查所有线程。

△ 使用框选模式可以更轻松地选择跟踪记录

△ 使用框选模式可以更轻松地选择跟踪记录

Summary 选项卡: Analysis 面板中全新的 Summary 选项卡会显示以下内容:

  • 特定事件的所有实例的汇总统计信息,例如实例计数和最小/最大持续时间。
  • 选定实例的跟踪事件统计信息。
  • 有关线程状态分布的数据。
  • 所选跟踪事件内运行时间最长的实例。

△ 在 Summary 选项卡中查看汇总统计信息

△ 在 Summary 选项卡中查看汇总统计信息

显示数据: 在 Display 部分,SurfaceFlinger 和 VSYNC 的新时间轴可帮助您调查应用界面中的渲染问题。

独立分析器

现在可以在独立于 Android Studio 主窗口的单独窗口中访问 Android Studio 分析器。在优化使用其他工具 (如 Unity 或 Visual Studio) 构建的 Android 游戏时,此功能十分有用。

要运行独立分析器,请执行以下操作:

  1. 确保您的系统现在没有运行 Android Studio 中的分析器。

  2. 转到安装目录并导航到 bin 目录:

Windows/Linux

 <studio-installation-folder>\bin

macOS

 <studio-installation-folder>/Contents/bin

  1. 根据您的操作系统,运行 profiler.exe 或 profiler.sh

独立分析器可连接到 Android Emulator 或其他已连接的设备上。

△ 使用独立 Android Studio 分析器优化您的应用

△ 使用独立 Android Studio 分析器优化您的应用

原生内存性能分析器

跟踪原生内存的使用情况对于游戏开发者和其他使用 C++ 的开发者十分重要,他们可以据此优化其应用的内存使用。Android Studio 内存性能分析器 (Memory Profiler) 现在包含一个原生内存性能分析器 (Native Memory Profiler),专门用于运行在 Android 10 或更高版本的实体设备上的应用。原生内存性能分析器可以跟踪特定时间段内原生代码中对象的分配 / 销毁情况,并提供内存总体分配和系统堆剩余大小的信息。

要启动记录,请点击 Memory Profiler 窗口顶部的 Record native allocations:

△ 使用原生内存性能剖析器查看原生内存分配情况

△ 使用原生内存性能剖析器查看原生内存分配情况

总结

简要回顾一下,Android Studio 4.1 包括以下新增及改进功能:

设计

  • Material Design 组件更新

开发

  • Database Inspector
  • 直接在 Android Studio 中运行 Android 模拟器
  • Dagger 导航支持
  • 使用 TensorFlow Lite 模型

构建和测试

  • Android 模拟器 - 可折叠设备铰链信息支持
  • Apply Changes 更新
  • 从 AAR 中导出 C/C++ 依赖项
  • 原生代码崩溃报告符号化解析

优化

  • System Trace 界面改进
  • 独立分析器
  • 原生内存性能分析器

本文作者 / Scott Swarthout, 产品经理

文中资料并非由 Unity Technologies 或其附属公司赞助或与其有关联。“Unity”是 Unity Technologies 或其附属公司在美国和其他地区的商标或注册商标。