Android Studio Arctic Fox 大版本更新,快来了解下吧
↓推荐关注↓
Android Studio 的新大版本又来了,大家快来躺坑。原本链接:developer.android.com/studio/rele…[1]
Android Studio Arctic Fox 是属于大版本更新,其中包含各种新功能和改进,其中主要有:版本号规则变更,支持新的测试模式,更高级的调试跟踪,更方便的导出数据库,支持 Compose 等等
新版本号
更新了 Android Studio 的版本号
本次更改了 Android Studio 的版本号规则,与 IntelliJ IDEA[2](Android Studio 所基于的 IDE)更加一致。
在之前的版本号中,版本的编号规则为 Android Studio 4.3 或版本 4.3.0.1 ,而有了新的版本编号规则后,以后会是 Android Studio - Arctic Fox | 2020.3.1 或 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 4.2 之后的下一个版本是 AGP 7.0 。
有关更多详细信息,请参阅 AGP 中的 版本控制更改[3]
Android Gradle 插件 7.0.0
单元测试现在使用 Gradle 测试运行器
为了提高测试执行的整体一致性,Android Studio 现在默认使用 Gradle 运行所有单元测试,当然在一般情况下,此更改不会影响在 IDE 中的测试工作流。
例如,当单击上下文菜单中的Run命令(在右键单击某个测试类时可见)或其对应的 gutter action 时,Android Studio 将默认使用 Gradle 运行配置来运行单元测试。
但是 Android Studio 不再识别现有的 Android JUnit 运行配置,因此需要将项目文件的 Android JUnit 运行配置迁移到 Gradle 运行配置。
要创建 Gradle 测试配置,请按照创建新的运行/调试配置中[4]的说明选择 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 Library[5] 2.5.0 或更高版本的设备,然后从菜单栏中选择View > Tool Windows > App Inspection。
你可以通过单击 worker 查看更多详细信息,例如可以看到 worker 的描述,它是如何执行的,它的 worker 链的细节,以及执行的结果。
你还可以通过从表中选择一个 worker 并单击工具栏中的 Show Graph View 来 查看 worker 链的可视化,然后可以选择链中的任何工作程序以查看其详细信息,或者如果它当前正在排队或正在运行,你也可以选择停止它。
如果要返回表格,请单击 Show List View 。
为了帮助调查执行失败的工作线程问题,开发者可以通过从表中选择并单击工具栏中的 Cancel Selected Worker 线程来停止当前正在运行或排队的工作线程,还可以使用 All tags 下拉菜单,通过标签过滤来选择表中的 workers。
从数据库检查器导出数据
现在开发者可以轻松地从 Database Inspector 导出数据库、表和查询结果,以在本地保存、共享或重新创建。
当你在 Android Studio 中打开一个应用程序项目并在 Database Inspector 中检查 该项目的应用程序时,你可以通过以下方式之一开始导出数据:
在 Databases 面板中选择一个数据库或表,然后单击面板顶部附近的 Export to file 。 右键单击 Databases 面板中的数据库或表,然后从上下文菜单中选择 Export to file。 在选项卡中检查表或查询结果时,单击表或查询结果上方的 Export to file。
选择导出操作后,可以使用 Export 对话框来帮助完成最后的步骤,如下所示,你可以选择以下列一种或多种格式导出数据:DB、SQL 或 CSV。
Updated UI for recording in Memory Profiler
我们为不同的记录活动整合了 Memory Profiler 用户界面 (UI),例如捕获堆转储和记录 Java、Kotlin 和本机内存分配。
该 Memory Profiler[6] 提供了以下选项:
Capture heap dump:查看应用程序中在特定时间点使用内存的对象。 Record native allocations:查看每个 C/C++ 对象在一段时间内是如何分配的。 Record Java/Kotlin allocations:查看每个 Java/Kotlin 对象在一段时间内是如何分配的。
以下是如何使用这三个选项:
要捕获堆转储,请选择 Capture heap dump,然后选择 Record ,在分析器完成对堆转储的捕获后,内存分析器 UI 将转换到显示堆转储的单独页面。
要在运行 Android 10 及更高版本的设备上使用 Record native allocations,请选择 Record native allocations ,然后选择 Record ,而后记录将保持到单击 Stop 为止,之后 Memory Profiler UI 将转换为显示 native 记录的单独页面。
在 Android 9 及更低版本上,Record native allocations 选项不可用。
要记录 Java 和 Kotlin 分配,请选择 Record Java / Kotlin allocations,然后选择 Record。如果设备运行的是 Android 8 或更高版本,Memory Profiler UI 将转换为显示正在进行的记录的单独页面,开发者可以与纪律上方的迷你时间线进行交互(例如,更改选择范围),而如果要完成录制,可以选择 Stop 。
在 Android 7.1 及更低版本上,内存分析器使用传统分配记录,它会在时间线上显示记录,直到单击 Stop 。
更新链接的 C++ 项目
新版本已将与配置无关的 .cxx/
文件从文件夹移动到 build/
文件夹中。
CMake C++ 构建需要一个在配置阶段用于执行编译和链接步骤的 Ninja 项目,通过 CMake 生成的项目成本比较高,所以有望在 gradle clean 中不被清理。
因此,它们存储在文件夹.cxx/
旁边的一个名为的 build/
文件夹中,通常 Android Gradle 插件会注意到配置更改并自动重新生成 Ninja 项目。但是并非所有情况都可以检测到,发生这种情况时,可以使用 “Refresh Linked C++ Project” 选项手动重新生成 Ninja 项目。
用于多设备测试的新测试矩阵
Instrumentation tests 现在可以在多个设备上并行运行,并且可以使用专门的 Instrumentation tests 结果面板进行调查。使用此面板可以确定测试是否由于 API 级别或硬件属性而失败。
在各种 API 级别和形式因素上测试应用程序,是确保所有用户在使用您的应用程序时获得出色体验的最佳方法之一。
要利用此功能:
1、在 IDE 顶部中心的目标设备下拉菜单中选择 Select Multiple Devices 。
2、选择目标设备并单击OK。
3、运行测试。
要在 Run 面板中查看测试结果,请转到 View > Tool Windows > Run 。
新的测试结果面板允许按状态、设备和 API 级别过滤测试结果。此外可以通过单击标题对每列进行排序,通过单击单个测试单独查看每个设备的日志和设备信息。
StateFlow
支持数据绑定
对于使用协程的 Kotlin 应用程序,现在可以使用 `StateFlow`[7] 对象作为数据绑定源来自动通知 UI 数据的变化。数据绑定将具有生命周期感知能力,并且只会在 UI 在屏幕上可见时触发。
要在 StateFlow
绑定类中使用对象,需要指定生命周期所有者来定义 StateFlow
对象的范围,并在布局中 ViewModel
使用绑定表达式将组件的属性和方法分配给相应的视图,如下所示例子:
class ViewModel() {
val username: StateFlow<String>
}
<TextView
android:id="@+id/name"
android:text="@{viewmodel.username}" />
如果在使用 AndroidX 的 Kotlin 应用程序中 StateFlow
,数据绑定的功能中会自动包含支持,包括协程依赖项。
要了解更多信息,请参阅使用可观察数据对象[8]。
改进了建议的导入
改进了建议导入功能支持的库数量,并更频繁地更新索引。
建议导入可帮助开发者快速轻松地将某些 Google Maven 工件导入类和 Gradle 项目,当 Android Studio 从某些 Google 库中检测到未解析的符号时,IDE 会建议将库导入到类和项目中。
支持构建分析器中的配置缓存
Build Analyzer[9]现在可识别项目何时未启用配置缓存[10],并将其作为优化提供。Build Analyzer 运行兼容性评估,以在启用之前通知项目中的配置缓存是否存在任何问题。
改进的 AGP 升级助手
Android Gradle 插件[11]的 升级助手[12] 现在有一个持久的工具窗口,其中包含将要完成的步骤列表。
附加信息也显示在工具窗口的右侧,如果需要还可以选择不同版本的 AGP 进行升级,单击Refresh 按钮更新相应的更新步骤。
非传递性 R 类的重构
可以将非传递性 R 类与 Android Gradle 插件结合使用,为具有多个模块的应用程序实现更快的构建。
这样做有助于防止资源重复,确保每个模块的 R 类只包含对其自身资源的引用,而不从其依赖项中提取引用。这会带来更多最新的构建以及避免编译的相应好处。
可以通过转到 Refactor > Migrate to Non-transitive R Classes 来访问此功能。
支持 Jetpack Compose 工具
我们现在为预览和测试使用Jetpack Compose 的[13] 应用程序提供额外支持。
为了获得使用 Jetpack Compose 开发的最佳体验,应该使用最新版本的 Android Studio Arctic Fox 以开发者可以体验 smart editor features[14],例如新项目模板和立即预览 Compose UI 的能力。
Compose preview
@Preview 方法[15] 的以下参数现在可用:
showBackground:打开和关闭预览的背景。 backgroundColor:设置仅在预览表面中使用的颜色。 uiMode:这个新参数可以采用任何 Configuration.UI\_\*[16] 常量,并允许您更改预览的行为,例如将其设置为夜间模式以查看主题的反应。
Interactive preview
可以使用此功能与你的 UI 组件交互,单击它们,然后查看状态如何更改,这是获取有关 UI 反应和预览动画的反馈的快速方法。启用它可单击 Interactive 图标预览将切换模式。
要停止时单击顶部工具栏中的 Stop Interactive Preview。
Deploy to device
可以使用此功能将 UI 片段部署到设备,这有助于测试设备中代码的一小部分而无需启动整个应用程序。
单击 @Preview
注释旁边或预览顶部的 Deploy to Device 图标 ,Android Studio 会部署到连接的设备或模拟器。
Live Edit of literals
我们添加了文字的实时编辑预览,以帮助使用 Compose 的开发人员快速编辑其代码中的文字(字符串、数字、布尔值)并立即查看结果而无需等待编译。
此功能的目标是通过在预览、模拟器或物理设备中近乎即时地显示代码更改来帮助提高开发者的工作效率。
Compose support in the Layout Inspector
该 Layout Inspector 可以让开发这看到连接设备应用程序布局的丰富细节,应用程序交互并查看工具中的实时更新,以快速调试可能出现的问题。
开发者可以检查使用新的 Android 声明式 UI 框架 Jetpack Compose 编写的布局,无论应用程序使用完全由 Compose 编写的布局,还是使用 Compose 和 Views 的混合布局,布局检查器都 可以帮助开发者了解布局在运行设备上的呈现方式。
开始
首先,将应用程序部署到连接的设备,然后通过选择 View > Tool Windows > Layout Inspector 打开 Layout Inspector 窗口。
如果 Layout Inspector 没有自动连接到应用程序进程,请从进程下拉列表中选择所需的应用程序进程,应该很快就会在工具窗口中看到应用程序布局。
要开始检查 Compose 布局,请选择渲染中可见的布局组件 Component Tree 中 选择它。
Attributes 窗口将显示目前所选择的组合功能的详细信息。在此窗口中可以检查函数的参数及其值,包括修饰符和 lambda 表达式。
对于 lambda 表达式,检查器提供了一个快捷方式来帮助导航到源代码中的表达式。
Layout Inspector 显示调用堆栈的所有功能,组件到应用的布局。在许多情况下,这包括 Compose 库在内部调用的 Compose 函数。如果只想查看应用程序直接调用的 Component Tre中的 Compose 函数,可单击过滤器操作,这可能有助于将树中显示的节点数量减少到可能想要检查的数量。
改进部署下拉菜单
设备下拉列表现在可以区分选择的设备配置中的不同类型的错误。
图标和样式更改现在区分 错误(导致配置损坏的设备选择)和 警告(可能导致意外行为但仍可运行的设备选择)。
此外如果尝试将项目启动到出现错误或相关警告的设备,Android Studio 现在会发出警告。
新的 Wear OS 配对助手
新的 Wear OS 配对助手可指导开发人员直接在 Android Studio 中将 Wear OS 模拟器与物理或虚拟手机配对。
该助手可以帮助在手机上安装正确的 Wear OS Companion 应用,并在两台设备之间建立连接,你可以通过转到设备下拉菜单 > Wear OS Emulator Pairing Assistant 。
响应式布局模板
Android Studio Arctic Fox 现在包含一个新的布局模板,可适应各种显示尺寸和应用调整大小,例如手机、可折叠设备、平板电脑和分屏模式。
创建新项目或模块时,选择响应式活动模板以创建具有动态调整大小的组件的布局。
通过 File > New,选择 New Project 或 New Module,然后选择 Responsive Activity 模板。
补丁不适用于 Windows for v3.6-v4.1
Windows 平台上 v3.6-v4.1 到 Android Studio Arctic Fox 稳定版的补丁可能不起作用。
参考资料
https://developer.android.com/studio/releases
[2]https://www.jetbrains.com/idea/
[3]https://developer.android.com/studio/releases/gradle-plugin#versioning-update
[4]https://developer.android.com/studio/run/rundebugconfig#creating
[5]https://developer.android.com/jetpack/androidx/releases/work
[6]https://developer.android.com/studio/profile/memory-profiler
[7]https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-state-flow/
[8]https://developer.android.com/topic/libraries/data-binding/observability#lifecycle-objects
[9]https://developer.android.com/studio/build/build-analyzer
[10]https://docs.gradle.org/current/userguide/configuration_cache.html
[11]https://developer.android.com/studio/releases#agp-upgrade-assistant
[12]https://developer.android.com/studio/releases#agp-upgrade-assistant
[13]https://developer.android.com/jetpack/compose/setup
[14]https://developer.android.com/jetpack/compose/tooling
[15]https://developer.android.com/jetpack/compose/tooling#preview-features
[16]https://developer.android.com/reference/android/content/res/Configuration#UI_MODE_NIGHT_MASK
转自:恋猫de小郭
https://juejin.cn/post/6990174358228434951
- EOF -
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️