Android Studio 的过往版本

本文转自Android Studio 的过往版本  |  Android 开发者  |  Android Developers

本页面列出了 Android Studio 之前的每个主要版本的新功能和改进。如需了解最新版本的新功能,请参阅当前的 Android Studio 版本说明

如需了解与发布版本有关的最新资讯(包括每个预览版中的重要修正的列表),请参阅版本更新。如需了解 Android Gradle 插件中的新变化,请参阅其版本说明

Android Gradle 插件和 Android Studio 兼容性

Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。下表列出了各个 Android Studio 版本所需的 Android Gradle 插件版本。

如果您的项目不受某个特定版本的 Android Studio 支持,您仍然可以使用旧版 Android Studio 打开和更新您的项目。

Android Studio 版本所需插件版本
Flamingo | 2022.2.13.2-8.0
Electric Eel | 2022.1.13.2-7.4
Dolphin | 2021.3.13.2-7.3
Chipmunk | 2021.2.13.2-7.2
Bumblebee | 2021.1.13.2-7.1
Arctic Fox | 2020.3.13.1-7.0

如需了解 Android Gradle 插件的新变化,请参阅 Android Gradle 插件版本说明

Android Studio Chipmunk | 2021.2.1

支持使用 Jetpack Compose 创建应用

动画预览支持 animatedVisibility

Android Studio Chipmunk 支持在动画预览中使用 animatedVisibility API。如需将动画预览与 animatedVisibility 搭配使用,请使用 Compose 版本 1.1.0 或更高版本。如需详细了解动画预览,请参阅动画

支持从“库模块”部署预览对象

通过使用预览功能,您无需在实体设备上运行应用,即可在 Android Studio 中查看应用界面。在 Android Studio Chipmunk 中,您可以将特定 @Preview 从“库模块”部署到模拟器或实体设备。如需了解详情,请参阅部署预览对象

支持对应用进行性能分析

在 Android 12 及更高版本上检测卡顿

对于使用 Android 12 或更高版本的设备,已捕获的跟踪记录会显示在 CPU 性能分析器中 Display 窗格下的 Janky frames 轨道中。

如需检测卡顿,请按以下步骤操作:

  1. 从开发模拟器或设备启动应用。
  2. 在 Android Studio 中,依次选择 View > Tool Windows > Profiler,或点击工具栏中的 Profile 图标 

    如果 Select Deployment Target 对话框显示提示,请选择要将您的应用部署到哪个设备以进行性能分析。如果您已通过 USB 连接设备但系统未列出该设备,请确保您已启用 USB 调试

  3. 点击 CPU 时间轴上的任意位置以打开 CPU 性能分析器。

  4. 您应该会在 Display 下方看到 Janky frames 轨道。默认情况下,性能分析器只会将卡顿帧显示为有待调查的候选对象。在每个卡顿帧中,红色部分突出显示了相应帧超出其渲染截止时间的时长。 

  5. 发现卡顿帧后,点击该帧;可根据需要按 M 键调整缩放程度以聚焦到所选帧。相关事件将在以下主线程中突出显示:RenderThread 和 GPU completion。 

  6. 通过选中或取消选中 All Frames 和 Lifecycle 复选框,您可以根据需要查看所有帧或渲染时间的细分数据。 

如需了解详情,请参阅界面卡顿检测

补丁版本

以下是 Android Studio Chipmunk 中的补丁版本列表。

Android Studio Chipmunk | 2021.2.1 补丁 2(2022 年 8 月)

本次要更新包含以下更新和 bug 修复:

Android 平台支持

借助 Android Studio Chipmunk 补丁 2 和 Android Gradle 7.2.2,您可以通过设置 compileSdk=33 针对 Android 13 API 进行编译。支持的最低 SDK 版本最高可为 32。在 Android Gradle 插件 7.3.0-beta05 之前,不支持 minSdk = 33

已修复的问题
C++ 调试程序

问题 37119428

系统甚至会为调试 build 变体打包依赖项目中原生库的发布版本

设计工具

问题 232045613

按下 Ctrl+D 键或“show diff”按钮不显示 git diff

Dexer (D8)

问题 235325369

记录每个脱糖库版本所需的编译器版本

Gradle

问题 188871862

使用 Import Alias 时 lint UnusedResources 出现假正例

导入/同步

问题 234353685

在新版本中,当存在多个产品变种 (flavour) 时发生 build 问题

缩减器 (R8)

问题 236875523

IntSwitch 中的 ArrayIndexOutOfBoundsException

问题 236618700

R8 3.1.7-dev 及更高版本对枚举进行不当优化,导致出现 NoSuchFieldError

问题 223424356

R8 导致在 Scala 库上出现 VerifyError

问题 232379893

Gradle 7.2.0 导致 APK build 错误 com.android.tools.r8.CompilationFailedException

问题 236615030

缩减器 R8 版本 3.2.60 中的 NPE

问题 236294139

[R8 3.3.57] 出现 NoClassDefFound 错误,因为接口已替换为具有更高 SDK 要求的抽象类

问题 231030461

使用 3.3.35 时 FieldAssignmentTracker 中出现 NullPointerException

Android Studio Chipmunk | 2021.2.1 补丁 1(2022 年 5 月)

本次要更新包含以下 bug 修复:

已修复的问题
Dexer (D8)

问题 218298666

版本 8 之前的 Art/Dalvik 虚拟机不支持 JDK-8272564 的修复

IntelliJ

问题 225751091

文件观察器在 Ubuntu 20.04 上未能启动

问题 206465485

缺少 MBP 15" 2018 触控栏菜单。

运行

问题 232134751

即使应用模块可用,“Devices”选项也不显示且无法运行该应用。

缩减器 (R8)

问题 228791247

为什么 R8 不向后移植默认接口方法,但 D8 会这么做?

问题 218400336

循环引用:com.android.tools.r8.internal.R10:转换为原始类型时出现非预期类型:OBJECT

Android Studio Bumblebee | 2021.1.1

Android Studio Bumblebee 是一个主要版本,包含以下功能和改进。

默认启用 Compose 互动式预览

从 Android Studio Bumblebee 开始,互动式预览功能默认处于启用状态。借助互动式预览,您可以与预览互动,就像在设备上操作一样。互动式预览处于沙盒环境中,并与其他预览相互隔离,您可以在其中点击元素并在预览中输入用户输入。通过这种模式,您可以快速测试可组合项的不同状态和手势,例如勾选或清空复选框。

预览互动模式直接在 Android Studio 中运行,并未运行模拟器,因此存在一些限制:

  • 无法访问网络。
  • 无法访问文件。
  • 有些 Context API 不一定完全可用。

动画形式的矢量可绘制对象 (AVD) 预览

动画形式的矢量可绘制对象工具使您能够预览动画形式的可绘制资源。此工具可帮助您在 Android Studio 中预览 <animation-list><animated-vector> 和 <animated-selector> 资源,使您能够更轻松地优化自定义动画。

更新了设计工具的设备选择器

为了简化针对各种 Android 设备设计应用的流程,我们在各种设计工具窗口(例如布局编辑器和布局验证)中更新了设备选择器,其中包含的参考设备能反映每种设备外形规格的热门尺寸。从手机到平板电脑,从 Wear 设备到 Android TV,您现在可以更轻松地在最能代表真实设备大小的屏幕上预览、验证或修改布局。

KMP 测试执行

您可以从 Android Studio Bumblebee 针对 Kotlin Multiplatform (KMP) 项目运行测试。

为了确保测试从 Android Studio 成功运行,您必须满足以下所有要求:

  • AGP 7.0.0-alpha08 或更高版本
  • Gradle 6.8.2 或更高版本。
  • Kotlin 插件 1.4.30 或更高版本

非传递 R 类默认处于开启状态

非传递 R 类现在默认处于开启状态。可以将非传递 R 类与 Android Gradle 插件一起使用,以便为具有多个模块的应用构建更快的 build。这样做有助于确保每个模块的 R 类仅包含对其自身资源的引用,而不会从其依赖项中提取引用,从而帮助防止资源重复。这样可以获得较新的 build,以及避免编译的相应优势。

如需使用此功能,请依次转到 Refactor > Migrate to Non-transitive R Classes...

Apple Silicon 支持更新

对于在 Apple Silicon (arm64) 硬件上使用 macOS 的用户,自去年以来,Android Studio Arctic Fox 和 Android 模拟器已支持这种新架构。不过,在此版本中,我们已将 Android SDK 平台工具 v32.0.0(包含 adb 和 fastboot)和构建工具 v32.1.0(包含 aapt)更新为通用二进制文件,这样 Android 开发者工具不再需要 Rosetta 二进制转译器既可运行。请参阅 SDK 平台工具版本说明

布局检查器中的新功能

捕获布局层次结构快照

借助布局检查器,您现在可以保存正在运行应用的布局层次结构快照,以便轻松地与他人分享或日后查看。

快照会捕获您在使用布局检查器时通常会看到的数据,包括布局的详细 3D 渲染、视图的组件树、Compose 或混合布局,以及每个界面组件的详细属性。如需保存快照,请执行以下操作:

  1. 将您的应用部署到搭载 API 级别 23 或更高级别的设备中
  2. 依次选择 View > Tool Windows > Layout Inspector,打开布局检查器。
  3. 布局检查器应该会自动连接到您的应用进程。如果未自动连接,请从下拉菜单中选择相应应用进程。
  4. 如果要捕获快照,请点击布局检查器工具栏中的 Export snapshot 

  5. 在出现的系统对话框中,指定快照的名称和保存位置。请务必以 *.li 扩展名保存文件。

如需加载布局检查器快照,您需要从主菜单栏中依次选择 File > Open,然后打开 *.li 文件。

支持检查 Compose 语义

在 Compose 中,Semantics 以无障碍服务和测试框架可以理解的替代方式描述您的界面。在 Android Studio Bumblebee 中,您现在可以使用布局检查器检查 Compose 布局中的语义信息。

选择 Compose 节点时,请使用 Attributes 窗口检查它是否直接声明语义信息以及/或者是否合并其子元素中的语义。如需快速识别哪些节点包含已声明或合并的语义,请在 Component Tree 窗口中选择 View options 下拉菜单,然后选择 Highlight Semantics Layers。这样只会突出显示树中包括语义的节点,您可以使用键盘在节点之间快速导航。

避免重启 Activity

将布局检查器连接到旧版 Android Studio 上正在运行的应用会导致应用的 Activity 重启。设置设备标记以检查应用布局时,必须这样。

在 Android Studio Bumblebee 中,您可以通过以下任一步骤提前设置此标记,从而避免在连接布局检查器时重启 Activity:

  • 启用 Run Configuration 选项

    1. 从主菜单栏中依次选择 Run > Edit Configurations。此时将显示运行/调试配置对话框。
    2. 转到要使用的运行配置。
    3. 在 Layout Inspector options 部分,选中 Connect to Layout Inspector without restarting activity 旁边的复选框。
    4. 下次要使用布局检查器检查应用时,请使用运行配置。
  • 从命令行设置此标记:

    1. 在连接到设备的计算机上打开终端窗口
    2. 使用以下命令为您的应用设置设备标记:

    adb shell settings put global debug_view_attributes_application_package <my_package_name>
    
    1. 将您的应用部署到设备并连接布局检查器。Android Studio 会检查该标记是否已设置,并尽可能避免重启 Activity。

注意:在不使用布局检查器的情况下设置此设备标记可能会影响应用的性能,虽然通常并不明显。

文档布局检查器快照

您现在可以捕获应用布局层次结构的快照,以便保存、分享或日后检查。快照会捕获您在使用布局检查器时通常会看到的数据,包括布局的详细 3D 渲染、视图的组件树、Compose 或混合布局,以及每个界面组件的详细属性。检查正在运行的应用的布局时,点击布局检查器工具栏中的 Export snapshot 图标 

,并以 *.li 扩展名的形式保存快照。然后,您可以通过以下方式加载布局检查器快照:从主菜单栏中依次选择 File > Open,然后打开 *.li 文件。快照会显示在编辑器窗口的标签页中,便于您轻松将其与正在运行的应用进行比较。

App Inspection 中的新功能

Android Studio Bumblebee 在 App Inspection 窗口中新增了一些工具和功能。您可以从主菜单栏中依次选择 View > Tool Windows > App Inspection,打开 App Inspector

Network Inspector

Profilers 工具窗口中的网络性能分析器现已移至 App Inspection 工具窗口。如果您之前使用过网络性能分析器,则所有相同的功能和丰富的网络流量数据仍然可用。只需将您的应用部署到搭载 API 级别 26 及更高级别的设备上,然后依次打开 App Inspector > Network Inspector 标签页即可。

检查作业、警报和唤醒锁

现在,除了支持检查工作器外,您还可以使用后台任务检查器检查应用的作业、警报和唤醒锁。现在,每种类型的异步任务都会显示在检查器标签页的相应标题下,便于您轻松监控其状态和进度。与工作器类似,您可以在 Task Details 面板中选择相应作业、警报或唤醒锁,以检查其详细信息。

注意:此功能已从能耗性能分析器中迁出。因此,现在您应该使用后台任务检查器检查应用的所有异步任务。

由于工作器在后台使用作业和唤醒锁,因此工作器调度的这些任务会显示为每个工作器的子级。请注意,您只能在图表模式下看到工作器。

无线调试

Android Studio Bumblebee 支持在搭载 Android 11 及更高版本的设备上使用无线调试功能。无需使用 USB 线或使用命令行管理 Android 调试桥 (adb) 连接,即可通过 Wi-Fi 从 Android Studio 配对和部署应用。如需使用此功能,请找到设备选择菜单中的 Pair devices using Wi-Fi 选项,并选择一个二维码或配对 PIN 码。然后,在 Android 11 及更高版本的设备上,在开发者选项下,找到无线调试屏幕,接着通过 Android Studio 初始化并与 adb 会话进行无线连接。如需详细了解无线调试设置,请参阅通过 Wi-Fi 连接到设备 (Android 11+)

统一 Gradle 测试运行程序

Android Gradle 插件 7.1.0 和 Android Studio Bumblebee 及更高版本使用 Gradle 自己的 Android 插桩测试运行程序实现来运行插桩测试。如果同样使用这个测试运行程序,那么无论您是使用 AGP 从命令行运行测试(例如在持续集成服务器上),还是从 Android Studio 运行测试,结果很可能是一致的。

以前版本的 Android Studio 使用 IntelliJ Android 插桩测试运行程序,而非 Gradle 的 Android 插桩测试运行程序。因此,如果您使用的不是最新版本的 Android Studio,可能会看到不同的测试结果(具体取决于您是从 Android Studio 运行测试,还是使用 Gradle 插件从命令行运行测试),例如在使用一个运行程序时测试结果为通过,而在使用另一个运行程序时则为失败。

如果您已将插桩测试配置保存到项目中,它们将使用 Gradle 在您连接的设备上运行测试。您可以使用测试类或方法旁边的边线操作创建新的插桩测试配置,如下所示。

运行插桩测试时,您可以通过检查 Test Matrix for Gradle 任务输出中的测试输出,来确认 Android Studio 使用的是不是 Gradle 测试运行程序。尽管我们在针对 Android Studio 的每个版本改进此功能,但仍存在一些已知问题。如果您遇到问题,请报告 bug。您还可以停用新的测试流水线,以还原到旧行为。

Android 模拟器现在默认直接在 Android Studio 中运行

默认情况下,Android 模拟器会直接在 Android Studio 中运行。这样,您就可以节省屏幕空间,使用热键在模拟器窗口和编辑器窗口之间快速导航,并在单个应用窗口中整理 IDE 和模拟器工作流。

当模拟器运行时,您将能够使用常见模拟器操作(如旋转),以及扩展控制选项(如导航播放)。如需在单独的窗口中运行模拟器,请依次转到 File > Settings > Tools > Emulator(在 macOS 设备中则依次转到 Android Studio > Preferences > Tools > Emulator),并取消选择 Launch in a tool window

停用新的测试流水线

默认情况下,Android Studio Bumblebee 会使用 Gradle 运行其插桩测试。如果您遇到问题,可以按以下方法停用此行为:

  1. 依次选择 File > Settings > Build, Execution, Deployment > Testing(在 MacOS 设备上,则依次选择 Android Studio > Preferences > Build, Execution, Deployment > Testing)。
  2. 取消选中 Run Android instrumented testing using Gradle 旁边的方框,然后点击 OK

您还可以通过执行以下操作之一来还原到之前的行为:

  • 从命令行运行 Gradle 任务时,使用以下命令行参数: -Pandroid.experimental.androidTest.useUnifiedTestPlatform=false
  • 将以下参数添加到项目的 gradle.properties 文件中:android.experimental.androidTest.useUnifiedTestPlatform=false

为了帮助解决您可能遇到的问题,请报告 bug

新的设备管理器

设备管理器是 AVD 管理器的替代工具,可在 Android Studio 的欢迎屏幕上或在打开项目后找到。设备管理器引入了一些新功能,可让您更轻松地创建和管理所有本地测试设备,例如:

  • 一种更灵活的界面,支持停靠在 Android Studio 中、悬浮起来或以单独的窗口显示,就像其他 Android Studio 工具窗口一样。这样,您就可以更轻松地访问设备,而不会妨碍 Android Studio 的其他窗口。
  • 一个 Virtual 标签页,可让您创建、管理和部署虚拟设备,一目了然地查看每个设备的详细信息,也可以直接在“设备文件浏览器”中一键检查设备。
  • 一个 Physical 标签页,可让您使用 adb Wifi 快速与新设备配对,并一目了然地查看每个实体设备的详细信息。此外,您只需点击按钮,即可使用设备文件浏览器快速检查每台设备的文件系统。

要打开新的设备管理器,请执行以下操作之一:

  • 在 Android Studio 欢迎屏幕上,依次选择 More Actions > Virtual Device Manager

注意:您目前只能通过欢迎屏幕创建和管理虚拟设备。

  • 打开项目后,从主菜单栏中依次选择 View > Tool Windows > Device Manager

界面卡顿检测

使用搭载 Android 11(API 级别 30)或更高版本的设备分析应用性能时,CPU 性能分析器现在会显示一组新的轨迹,描述了 Frame Lifecycle 下每个帧的阶段:ApplicationWait for GPUComposition 和 Frames on display。每个轨迹都通过帧编号标记帧,并用颜色标示矩形,便于您直观了解特定帧处在其生命周期的哪个阶段,并提供了可切换的辅助线,便于您与 Vsync 事件进行对比。您可以通过此数据了解应用中可能出现卡顿的位置,并调查根本原因。在 Analysis 面板中,现在有一个 Frames 标签页,可以方便地汇总所有帧的渲染信息。如需了解详情,请参阅界面卡顿检测

可分析应用的性能分析支持

在对应用进行性能分析时,请务必使用与您的用户将安装的应用版本最相符的应用版本生成准确的数据。为此,您现在可以在应用清单中包含 <profileable> 属性,以对不可调试的应用进行性能分析,如以下代码所示。

<profileable android:shell="true"/>

“可分析”是 Android 10 中引入的清单配置,可用于 CPU 和内存性能分析任务。使用可分析标记代替可调试标记具有降低性能衡量开销的关键优势;不过,某些性能分析功能(例如 Event 时间轴、API 发起的 CPU 性能分析、堆转储或实时位置记录)不适用于可分析 build。如需了解详情,请参阅可分析应用

收起调用堆栈帧

现在,在性能分析器工具窗口中检查调用堆栈示例记录时,您可以收起与调查无关的帧。调用堆栈有助于您了解已执行代码的哪个部分,以及调用该部分的原因。不过,Java/Kotlin 程序的调用堆栈通常不仅包含 Java/Kotlin 代码,还包含来自原生代码的帧,可能会对用户造成干扰。如需详细了解如何优化调用堆栈视图,请参阅检查调用堆栈帧

补丁版本

以下是 Android Studio Bumblebee 中的补丁版本列表。

Android Studio Bumblebee | 2021.1.1 补丁 3(2022 年 4 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • R8 报告的重复类问题
  • build 变体
    • 如果变体的版本名称是通过新的 onVariants API 设置的,versionNameSuffix 将无法正常运行
  • Compose 预览
    • 修复了与性能和稳定性相关的 bug。
    • 解决了使用“实时修改字面量”功能时偶尔发生的冻结问题。
  • Network Inspector
    • Bumblebee 更新后,新的 Network Inspector 发生崩溃
    • 在最新版本的 Android Studio 上连接调试程序时,我总是遇到这个错误。
    • TrackedHttpURLConnection.getHeaderField 会崩溃并出现 NullPointerException

如需了解详情,请参阅 Android Studio Bumblebee 补丁 3 博文

Android Studio Bumblebee | 2021.1.1 补丁 2(2022 年 2 月)

本更新包含以下 bug 修复:

  • C++ build
    • ModelCache.safeGet(androidProjectResult.androidProject::getNdkVersion, "") 不得为 null
  • 代码编辑器
    • Android Studio Live Templates 中的 bug:className() 表达式无法解析类名称
  • D8/R8
    • java.lang.NoSuchMethodError:无静态方法 $jacocoInit
    • Android 测试覆盖率因 Mockito 错误而损坏
    • 需要针对 API 31 上的已损坏 CAS 实现提供解决方法
    • 不支持密封类
    • 在 Chrome 中启用水平类合并时出现 NullPointerException
    • 合并虚拟方法后出现 AbstractMethodError
    • init 类 out-type 不正确,无法验证堆栈帧
    • Dex 输入使用未定义的寄存器
    • 版本分支中的 StringBuilderOptimizerAnalysisTest 失败了
    • R8 中的非确定性问题
  • 部署
    • 运行设备所有者应用项目失败,并显示“无法终止现有进程”这一错误消息
  • 设计工具
    • 启用非传递 R 类时,Compose 预览无法从其他模块查找资源
    • Android Studio 在构建时卡顿。
  • 嵌入式模拟器
    • 其他性能和稳定性改进。
  • 导入/同步
    • 启动 Bumblebee 时出现 IDE 错误:输出列表 build 文件不适用于 IdeBuildTasksAndOutputInformationImp 中的输出类型 Apk
  • IntelliJ
    • 从 Mac OS X Monterey Dock 启动时,未确定环境变量的来源
  • Jetpack (androidx) > 导航
    • 升级了 SafeArgs,使其在最新的稳定 AGP 上构建
  • Tools Windows
    • 无法运行 Android 设备管理器
    • BumbleBee 中的 Network Inspector 无法以可读格式显示 API 响应

如需了解详情,请参阅 Android Studio Bumblebee 补丁 2 博文

Android Studio Bumblebee | 2021.1.1 补丁 1(2022 年 2 月)

本次要更新包含以下 bug 修复:

  • 模拟器
    • 升级到 Bumblebee 后,无法连接到嵌入式模拟器 (Mac M1)
  • IntelliJ
    • 从 Mac OS X Monterey Dock 启动时,未确定环境变量的来源

如需了解详情,请参阅 Android Studio Bumblebee 补丁 1 博文

Android Studio Arctic Fox | 2020.3.1

Android Studio Arctic Fox 是一个主要版本,包含以下功能和改进。

Android Studio Arctic Fox | 2020.3.1 补丁 4(2021 年 12 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • 为 VariantOutput.verison 设置 Provider 可能会因为配置缓存而中断
    • 在签名以供发布时未更新 gradeResValues.xml
  • D8/R8
    • 在由 R8 压缩的 build 中,在类的构造函数中抛出 java.lang.ClassCastException
    • dex 合并期间无法达到的类型调整
    • java.lang.VerifyError:验证程序验证失败,因为无法从 Reference.java.lang.Object 类型的对象访问实例字段
  • lint
    • 停用 MediaCapabilities lint 检查
    • 启用 shrinkResources 后,Lint 会报告假正例[可实例化]错误
  • 模板
    • Import Module 选项呈灰显状态

如需了解详情,请参阅 2020.3.1 补丁程序 4 博文

Android Studio Arctic Fox | 2020.3.1 补丁程序 3(2021 年 10 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • lint 独立插件无法正确处理 gradleApi() 依赖项
    • 在 Studio 之外运行 Gradle build 时触发了 JPS build
    • 如果某个项目中的 KSP 和 Kapt 都包含可生成源代码的处理器,则在同时启用 KSP 和 Kapt 时会中断 BundleLibraryClassesInputs
  • C++ 编辑器
    • 在后台进行长时间的 JniReferencesSearch 计算时界面会卡顿
  • Database Inspector
    • 允许保存数据库
    • 如果路径中含有空格,就无法使用 App Inspection/Database Inspector导出数据
  • Dexer (D8)
    • 在为子类创建子类时,Java lambda 会导致出现意外行为
  • 缩减器 (R8)
    • r8 缩减大小过程中会出现 Cannot constrain type 错误
    • 执行 R8 3.0.69(来自 AGP 7.0.2)和 3.0.72 时会出现问题

如需了解详情,请参阅 2020.3.1 补丁程序 3 博文

Android Studio Arctic Fox | 2020.3.1 补丁程序 2(2021 年 9 月)

本次要更新包含以下 bug 修复:

  • Android Gradle 插件
    • 在从 AS Arctic Fox Canary 7 升级到 Canary 8 的过程中,Gradle 同步启动了 10 次
    • 脱糖和可重现的 build
  • C++ build
    • 如果使用了 tasks.whenTaskAdded 闭包,Android Gradle 插件 7.0.0 不会在 APK 中包含 jniLibs
  • 修改
    • MergedManifestRefreshListener 在 Arctic Fox 中陷入无限循环
  • lint
    • “针对 lint 检查的 lint 检查”未运行
  • 缩减器 (R8)
    • 在 AGP7 中使用 R8 运行 build 时抛出 ClassNotFoundException

如需了解详情,请参阅 2020.3.1 补丁程序 2 博文

Android Studio Arctic Fox | 2020.3.1 补丁程序 1(2021 年 8 月)

此更新修复了以下问题:

  • Android Gradle 插件
    • TypedefRemover 使用 ASM5,与需要使用 ASM7 的 JDK 11 源代码不兼容
    • 无法在 AGP 7.0.0 中通过 Groovy DSL 使用部分新的 DSL 代码块
    • AGP 7.0.0 稳定版在执行到 libraryVariants.all{applicationId} 时会抛出 ExternalApiUsageException
  • C++ 调试程序
    • 在 Mac M1 上启动原生调试会话时,系统会出现 AS Arctic Fox 错误“Found broken LLDB configuration”
  • Resource Manager
    • (Windows) New > Vector Asset > picture.svg:生成的 xml 文件中的“减号”字符 (-) 无效
  • 缩减器 (R8)
    • BridgeHoisting 中的 NPE
    • 升级到 7.0.0 后,R8 会崩溃,并显示“Unexpected usage left in method after inline”错误

如需了解详情,请参阅 2020.3.1 补丁程序 1 博文

新版本编号系统

更新了 Android Studio 的版本编号系统

我们更改了 Android Studio 的版本编号系统,使其与 IntelliJ IDEA(Android Studio 所基于的 IDE)更一致。

在以前的编号系统中,此版本应为 Android Studio 4.3 或 4.3.0.1。采用全新的编号系统后,现在版本为 Android Studio - Arctic Fox | 2020.3.1 或 2020.3.1。

Intellij 版本旧名称旧 - 编号系统新 - 年份系统新版本名称
2020.34.34.3.02020.3.1Arctic Fox | 2020.3.1

今后,Android Studio 版本号的确定方式如下:

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>.<Studio minor/patch version>

  • 前两组数字表示特定 Android Studio 版本所基于的 IntellIj 平台版本。对于此版本,即为 2020.3。
  • 第三组数字表示 Studio 的主要版本,从 1 开始,每个主要版本递增 1。
  • 第四组数字表示 Studio 的次要版本/补丁程序版本,从 1 开始,每个次要版本递增 1。
  • 此外,我们还将为每个主要版本提供版本名称,分别以 A 到 Z 的动物来命名。此版本名为 Arctic Fox。

更新了 Android Gradle 插件的版本编号系统

我们更新了 Android Gradle 插件 (AGP) 的版本编号系统,以使其更接近底层 Gradle 构建工具。因此,AGP 7.0 是继 AGP 4.2 之后的下一个版本。

如需了解详情,请参阅 AGP 版本说明中的版本编号变更

Android Gradle 插件 7.0.0

最新版本的 Android Gradle 插件包含许多更新。如需了解详情,请阅读完整的 Android Gradle 插件版本说明

单元测试现在使用 Gradle 测试运行程序

为提高测试作业的总体一致性,现在 Android Studio 在默认情况下使用 Gradle 运行所有单元测试。在很多情况下,此更改不会影响 IDE 中的测试工作流。

例如,当您点击上下文菜单中的 Run 命令(在您右键点击测试类时可见)或对应的边线操作 

 时,Android Studio 将默认使用 Gradle 运行配置来运行单元测试。

但是,Android Studio 不再识别现有的 Android JUnit 运行配置,因此您应将可能另存为项目文件的 Android JUnit 运行配置迁移到 Gradle 运行配置。

如需创建 Gradle 测试配置,请按照创建新的运行/调试配置中的说明选择 Gradle 模板。创建新配置后,配置会显示在 Gradle 部分的 Edit Configurations 对话框中:

如果您要检查不再识别的 Android JUnit 配置,可以执行以下两种操作之一:

  • 在文本编辑器中打开手动保存的配置。这些文件的位置由用户指定,但文件通常显示在 <my-app>/.idea/runConfigurations/ 中。
  • 在 <my-app>/.idea/workspace.xml 中查找临时配置,并在 <component name="RunManager" ...> 节点下查找。例如:

    <component name="RunManager" selected="Gradle.PlantTest">
    …
    <configuration name="PlantTest" type="AndroidJUnit" factoryName="Android JUnit" nameIsGenerated="true">
          <module name="Sunflower.app" />
          <useClassPathOnly />
          <extension name="coverage">
            <pattern>
              <option name="PATTERN" value="com.google.samples.apps.sunflower.data.*" />
              <option name="ENABLED" value="true" />
            </pattern>
          </extension>
          <option name="PACKAGE_NAME" value="com.google.samples.apps.sunflower.data" />
          <option name="MAIN_CLASS_NAME" value="com.google.samples.apps.sunflower.data.PlantTest" />
          <option name="METHOD_NAME" value="" />
          <option name="TEST_OBJECT" value="class" />
          <option name="PARAMETERS" value="" />
          <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
          <method v="2">
            <option name="Android.Gradle.BeforeRunTask" enabled="true" />
          </method>
        </configuration>
    

新增了后台任务检查器

您可以使用新增的后台任务检查器直观呈现、监控和调试应用的后台工作器。如需开始使用,请将您的应用部署到搭载 WorkManager 库 2.5.0 或更高版本的设备中,然后从菜单栏中依次选择 View > Tool Windows > App Inspection

点击工作器可查看更详细的信息。例如,可以查看工作器的说明、执行方式、工作器链的详细信息以及执行结果。

还可以从表中选择一个工作器并点击工具栏上的 Show Graph View 图标 

,查看工作器链的直观呈现形式。然后,可以选择链中的任意工作器以查看其详细信息,如果某工作器当前已加入队列或正在运行,还可停止运行该工作器。如需返回表,请点击 Show List View 图标 。

为帮助调查执行失败的工作器出现的问题,您可以停止当前正在运行或已加入队列的工作器,方法是从表中选择相应工作器,然后点击工具栏中的 Cancel Selected Worker 图标 

。您还可以使用 All tags 下拉菜单,根据您为工作器分配的标记来过滤表中的工作器。

更新了 Database Inspector

Database Inspector 现已包含在新的 App Inspection 工具窗口中,在该窗口中,您还可以找到新的后台任务检查器。从工具窗口栏打开 App Inspection 工具窗口,或从菜单栏依次选择 View > Tool Windows > App Inspection

从 Database Inspector 中导出数据

在 Arctic Fox 中,您可以轻松地从 Database Inspector 中导出数据库、表和查询结果,以便在本地保存、共享或重新创建。在 Android Studio 中打开一个应用项目并在 Database Inspector 中检查该项目的应用时,可以采用以下任一方法开始导出数据:

  • 在 Databases 面板中选择数据库或表,然后点击面板顶部附近的 Export to file
  • 右键点击 Databases 面板中的数据库或表,然后从上下文菜单中选择 Export to file
  • 在标签页中检查表或查询结果时,点击表或查询结果上方的 Export to file

选择导出操作后,请使用 Export 对话框帮助您完成最后的步骤,如下所示。根据是否需要尝试导出数据库、表或查询结果,可以选择使用以下一种或多种格式导出数据:DB、SQL 或 CSV。

更新了内存分析器中的录制界面

我们整合了内存分析器界面 (UI),用于不同的录制活动,例如捕获堆转储和录制 Java、Kotlin 以及原生内存分配。

内存分析器提供以下选项:

  • Capture heap dump:查看应用中在特定时间点使用内存的对象。
  • Record native allocations:查看每个 C/C++ 对象在一段时间内的分配情况。
  • Record Java/Kotlin allocations:查看每个 Java/Kotlin 对象在一段时间内的分配情况。

三个选项的使用方式如下:

  • 如需捕获堆转储,请选择 Capture heap dump,然后选择 Record。在分析器捕获堆转储后,内存分析器界面将转换到显示堆转储的单独屏幕上。

  • 如需在搭载 Android 10 及更高版本的设备上录制原生分配情况,请选择 Record native allocations,然后选择 Record。录制会持续到您点击 Stop 图标 

     后,内存分析器界面会转换到显示原生录制的单独屏幕。

    在 Android 9 及更低版本中,Record native allocations 选项不可用。

  • 如需录制 Java 和 Kotlin 分配情况,请选择 Record Java / Kotlin allocations,然后选择 Record。如果设备搭载的是 Android 8 或更高版本,则内存分析器界面将转换为显示正在进行录制的单独屏幕。可以与录制上方的迷你时间轴进行交互(例如,更改选择范围)。如需完成录制,请选择 Stop 图标 

    在 Android 7.1 及更低版本上,内存分析器使用旧版分配录制功能,它会在时间轴上显示录制,直到您点击 Stop

更新了关联的 C++ 项目的刷新

我们已将与配置无关的文件从 .cxx/ 文件夹移到了 build/ 文件夹中。CMake C++ 构建需要一个配置阶段,该阶段生成用于执行编译和链接步骤的 Ninja 项目。由 CMake 生成的项目开销高昂,并且在 Gradle 清除操作后仍应保留下来。因此,它们会存储在 build/ 文件夹旁的 .cxx/ 文件夹中。通常,Android Gradle 插件会注意到配置变更,并自动重新生成 Ninja 项目。然而,并非所有情况都能被检测到。如果发生未被检测到的情况,可以使用“Refresh Linked C++ Project”选项手动重新生成 Ninja 项目。

用于多设备测试的新测试矩阵

现在可以在多台设备上并行运行插桩测试,并且可以使用专门的插桩测试结果面板进行调查。利用此面板,可以确定测试失败的原因在于 API 级别还是硬件属性。

为确保所有用户都获得良好的应用使用体验,最好的方法之一就是采用各种 API 级别和设备类型测试您的应用。

为了充分利用这项功能,请执行以下操作:

  1. 在 IDE 正上方的目标设备下拉菜单中选择 Select Multiple Devices

  2. 选择目标设备,然后点击 OK

  3. 运行测试。

如需在 Run 面板中查看测试结果,请依次转到 View > Tool Windows > Run

使用新的测试结果面板,您可以按状态、设备和 API 级别过滤测试结果。此外,您还可以点击各列的标题对列进行排序。点击单个测试,可以单独查看每种设备的日志和设备信息。

数据绑定中的 StateFlow 支持

对于使用协程的 Kotlin 应用,您现在可以使用 StateFlow 对象作为数据绑定来源,自动将数据变化通知给界面。数据绑定将具有生命周期感知能力,并且仅在屏幕上显示界面时才会触发。

如需将 StateFlow 对象与绑定类一起使用,需要指定生命周期所有者,以定义 StateFlow 对象的范围,并在布局中使用绑定表达式将 ViewModel 组件的属性和方法分配给相应的视图,如下面的示例所示:

class ViewModel() {
   val username: StateFlow<String>
}

<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

如果您当前正在使用运行 AndroidX 的 Kotlin 应用,StateFlow 支持将自动包含在数据绑定功能(包括协程依赖项)中。

如需了解详情,请参阅使用可观察的数据对象

改进了建议导入的内容

我们改进了建议导入的内容功能支持的库数量,并更频繁地更新索引。建议导入的内容功能可帮助您快速轻松地将某些 Google Maven 工件导入类和 Gradle 项目。当 Android Studio 检测到来自某些 Google 库的未解析符号时,IDE 会建议将相应的库导入该类和项目中。

在 Build Analyzer 中支持配置缓存

现在,Build Analyzer 可以识别项目何时没有启用配置缓存,并将其作为优化建议提供。Build Analyzer 在启用项目配置缓存前,会运行兼容性评估,以告知您项目中的配置缓存是否存在任何问题。

改进了适用于 AGP 的升级助理

适用于 Android Gradle 插件的升级助理现在有一个持久性工具窗口,其中列出了将完成的步骤列表。 工具窗口的右侧还会显示其他信息。如有需要,还可以选择其他 AGP 版本进行升级。点击 Refresh 按钮将更新相应的更新步骤。

重构非传递 R 类

可以将非传递 R 类与 Android Gradle 插件一起使用,以便为具有多个模块的应用构建更快的 build。这样做有助于确保每个模块的 R 类仅包含对其自身资源的引用,而不会从其依赖项中提取引用,从而帮助防止资源重复。这样可以获得较新的 build,以及避免编译的相应优势。

如需使用此功能,请依次转到 Refactor > Migrate to Non-transitive R Classes

注意:以前,将非传递 R 类与 AGP 结合使用的选项仅适用于库。现在,在 AGP 4.2 及更高版本中,此选项适用于所有模块。

支持 Jetpack Compose 工具

我们现已对使用 Jetpack Compose 的预览和测试应用提供额外的支持。为了在使用 Jetpack Compose 进行开发时获得最佳体验,您应使用最新版本的 Android Studio Arctic Fox,以便从智能编辑器功能中受益,这些功能包括“新建项目”模板以及即时预览 Compose 界面等。

Compose 预览

@Preview 方法现在提供以下参数:

  • showBackground:开启和关闭预览的背景。
  • backgroundColor:设置仅在预览界面中使用的颜色。
  • uiMode:此新参数可采用任何 Configuration.UI_* 常量,且允许更改预览的行为,例如,将其设置为夜间模式以了解主题背景如何反应。

互动式预览

可以使用此功能与界面组件交互,点击组件并查看状态如何变化。通过这种方式,可以快速获得有关界面如何反应的反馈,并可快速预览动画。如要启用此模式,只需点击 Interactive 图标 

,系统即会切换预览模式。

如需停止此模式,请点击顶部工具栏中的 Stop Interactive Preview

部署到设备

可以使用此功能将界面代码段部署到设备。这有助于测试设备中的一小部分代码,而无需启动整个应用。

点击 @Preview 注解旁边或预览顶部的 Deploy to Device 图标 

,Android Studio 会将该 @Preview 部署到连接的设备或模拟器上。

实时修改字面量

我们添加了实时编辑文本功能,以帮助使用 Compose 的开发者快速编辑代码中的文本(字符串、数字、布尔值),并立即查看结果,而无需等待编译。此功能的目标是在预览、模拟器或物理设备中近乎即时地显示代码更改,从而帮助提高工作效率。

布局检查器中的 Compose 支持

通过布局检查器,可以深入了解在连接设备上运行的应用布局的相关详细信息。在该工具中,您可以与您的应用交互并查看实时更新,以快速调试可能出现的问题。

可以检查使用全新 Android 声明式界面框架(即 Jetpack Compose)编写的布局。无论您的应用是使用完全用 Compose 编写的布局,还是使用 Compose 和 View 的混合布局,布局检查器都可以帮助您了解您的布局如何在正在运行的设备上渲染。

使用入门

如需开始使用,请将您的应用部署到连接的设备上,然后通过依次选择 View > Tool Windows > 布局检查器 打开 布局检查器 窗口。如果布局检查器未自动连接到您的应用进程,请从进程下拉菜单中选择所需的应用进程。您应该很快就会在工具窗口中看到应用的布局。如需开始检查 Compose 布局,请选择渲染中显示的布局组件,或从 Component Tree 中选择该组件。

Attributes 窗口会显示有关当前所选 Compose 函数的详细信息。在该窗口中,您可以检查函数的参数及其值,包括修饰符和 lambda 表达式。对于 lambda 表达式,检查器提供了一个快捷方式,可帮助您导航到源代码中的表达式。

布局检查器会显示调用堆栈中所有用于向应用的布局发送组件的 Compose 函数。在许多情况下,这包括 Compose 库在内部调用的 Compose 函数。如果只想在应用直接调用的 Component Tree 中看到 Compose 函数,请点击过滤器 

 操作,这可能有助于将树中的节点数量减少为您可能要检查的节点数量。

改进了部署下拉菜单

设备下拉菜单现在会区分所选设备配置中的不同类型的错误。图标和样式的变更现在分成了错误(导致配置失败的设备选择)和警告(可能导致意外行为但仍可运行的设备选择)。

此外,如果尝试将项目启动到存在相关错误或警告的设备,Android Studio 将发出警告。

新增了 Wear OS 配对助理

新增的 Wear OS 配对助理直接在 Android Studio 中逐步引导开发者将 Wear OS 模拟器与实体或虚拟手机配对。该配对助理可以帮助您在手机上安装正确的 Wear OS Companion 应用,并在两台设备之间建立连接。如需开始使用,请依次转到 device dropdown > Wear OS Emulator Pairing Assistant

自适应布局模板

Android Studio Arctic Fox 现在包含一个全新的布局模板,该模板可以适应不同的显示尺寸和应用大小(例如手机、可折叠设备、平板电脑和分屏模式)。创建新项目或模块时,请选择 Responsive Activity 模板,以创建包含可动态调整大小的组件布局。

  

如需开始使用,请转到 File > New,选择 New Project 或 New Module 中的任意一项,然后选择 Responsive Activity 模板。

Arctic Fox 的已知问题

本部分将介绍 Android Studio Arctic Fox 当前已知的问题。

补丁程序无法在安装了 v3.6-v4.1 的 Windows 上正常使用

补丁程序可能无法在安装了从 v3.6-v4.1 到 Android Studio Arctic Fox 稳定版的 Windows 平台上正常使用。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
根据引用和引用的内容,出现错误"AttributeError: module 'distutils' has no attribute 'version'"的原因是setuptools版本问题。可以按照以下解决方案进行处理: 1. 打开对应的环境。 2. 输入以下代码卸载setuptools:pip uninstall setuptools。 3. 安装较旧版本的setuptools:pip install setuptools==59.5.0。 这样就可以解决美团yolov6报错"AttributeError: module 'distutils' has no attribute 'version'"的问题了。123 #### 引用[.reference_title] - *1* [YOLOV7:AttributeError: module ‘distutils‘ has no attribute ‘version‘ 的解决方案](https://blog.csdn.net/xty123abc/article/details/125862656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [AttributeError: module ‘distutils‘ has no attribute ‘version‘解决跑pytorch代码报错](https://blog.csdn.net/qq_42076902/article/details/129261266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [AttributeError: module ‘distutils‘ has no attribute ‘version](https://blog.csdn.net/hahhahahhaja/article/details/128003170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值