[译]Android Studio 3.6 新特性概览

[译]Android Studio 3.6 新特性概览


设计

设计编辑器

设计编辑器(比如布局编辑器和导航编辑器)现在提供了一个拆分视图模式,能够同时查看 UI 界面的 Design 视图和 Code 视图。拆分视图取代并改进了早期的预览窗口,并且可以对每个文件进行设置,并且可以保存上下文信息,比如:缩放比例和设计视图选项等。想要开启拆分视图,单击编辑器窗口右上角的拆分图标即可。相关文档:https://medium.com/androiddevelopers/android-studio-design-tools-ux-changes-split-view-dcde75e88a0c

设计编辑器的分割视图

颜色资源选择器

在这个版本中,通过颜色资源选择器可以快速的在应用程序中选择和替换颜色资源值。在设计工具和 XML 编辑器都可以使用颜色资源选择器。

颜色选择器资源选项卡

开发

View binding

View binding 是一个新特性,它通过在代码中引用视图时提供编译时安全性,使我们能够更容易地编写与视图交互的代码。如果启用,视图绑定将为模块中的每个 XML 布局文件生成绑定类。在大多数情况下,视图绑定取代 findViewById 方法。我们可以在代码中引用所有具有 ID 的 view,但不会有空指针或类强制转换的错误风险。这些差异意味着布局和代码之间的不兼容将导致编译时而不是运行时的构建失败。要在项目中启用视图绑定,请在每个模块的 build.gradle 文件中包含以下内容:

android {
    viewBinding.enabled = true
}

一位 GDE 写的 View binding 相关 blog:https://medium.com/google-developer-experts/exploring-view-binding-on-android-44e57ba11635

Android NDK 更新

以下 Android Studio 中的 NDK 特性,以前在 Java 中支持,现在在 Kotlin 也支持:

  • 从 JNI 声明跳转到 C/C++ 中相应的实现函数。通过将鼠标悬停在源代码文件中靠近行号的 C/C++ 项标记上来查看函数的映射
  • 为 JNI 声明自动创建一个 stub 实现函数。首先定义 JNI 声明,然后在 C/C++ 文件中输入“ JNI” 或方法名称来激活

更多详细信息:https://developer.android.google.cn/studio/preview/features/#3.6-ndk-updates

IntelliJ Platform 更新

Android Studio 包含 IntelliJ 2019.2 版本的所有特性。 这个 IntelliJ 版本包括许多改进,从新的服务工具窗口到大大改进的启动时间。更多详情:https://blog.jetbrains.com/idea/2019/07/intellij-idea-2019-2-java-13-preview-features-profiling-tools-services-tool-window-and-more/

Add classes with Apply Changes

现在可以添加一个类,然后通过单击 Apply Code ChangesApply Changes and Restart Activity 按钮将代码变更部署到正在运行的应用程序中。关于 Apply Cahnges 的更多详情:https://developer.android.google.cn/studio/run#apply-changes

构建

Android Gradle 插件更新

Android Gradle 插件 3.6 以及更高版本包括对 Maven Publish Gradle 插件的支持,这个插件可以让我们将构建产物发布到 Apache Maven 仓库中。Android Gradle 插件为应用程序或库模块中的每一个 build variant 创建一个组件,我们可以使用该组件将构建产物发布到自定义的 Maven 仓库中。这一变更将使我们更容易地管理各种 targets 的发布周期。更多详情:https://developer.android..google.cn/studio/releases/gradle-plugin#maven-publish

新的打包工具

Android 构建团队一直在努力的改进构建性能,在这个版本中,将开发调试模式时的默认打包工具改为了 zipflinger。这样在调试开发的时候构建速度将会有所提高,但是我们也可以在 gradle.properties 文件中设置 android.useNewApkCreator=false 来改用旧的打包工具。

编辑 gradle.properties 文件以禁用新的打包工具

Test

Android 模拟器-谷歌地图界面

Android Emulator 29.2.12 为 App 开发人员提供了一种新的操纵模拟设备位置的新方法。在扩展控件菜单中嵌入了谷歌地图用户界面,方便开发人员更容易地指定位置,也可以根据两个地点位置创建导航路线。而且单个一个位置还可以保存并重新作为虚拟位置发送到模拟器,路线导航也可以通过输入地址或单击两个点来生成。这些路线导航可以可以实时回放,路线导航沿线的位置信息也会被发回到模拟器的系统内。

带有实时定位流的 Android 模拟器定位 UI

多个屏幕支持

Emulato 29.1.10 更新了对多个虚拟屏幕的初步支持。随着越来越多的设备可以使用多个屏幕,在多种屏幕配置上测试你的应用程序是非常重要的。可以通过设置菜单(扩展控件设置)配置多个屏幕。

Android 模拟器中的多显示支持

在 Android 模拟器扩展控件面板中配置辅助显示

断点续传下载 SDK

当使用 Android Studio SDK Manager 下载 Android SDK 组件和工具时,Android Studio 现在可以继续之前中断的下载(例如,由于网络问题) ,而不是从头重新下载。在网络连接不可靠的情况下,这个更新对需要下载大的 SDK 组件和工具时非常有帮助,比如 Android 模拟器或系统映像。

暂停并继续 SDK 下载

In-place updates for imported APKs

Android Studio 允许我们导入外部构建的 APKs 来调试和分析它们。以前,当对这些 apk 进行更改时,我们必须再次手动导入它们并且需要重新添加符号表和源代码。Android Studio 3.6 现在可以自动检测导入的 APK 文件所做的更改,并且会提供一个重新导入该文件的选项。

Attach Kotlin sources to imported APKs

我们增加了对将 Kotlin 源文件附加到导入的 apk 的支持。 要了解更多信息,请参见 Attach Kotlin/Java 源代码。

将 Kotlin/Java 源代码附加到导入的 APKs

优化

在内存分析器中检测内存泄漏

根据反馈,Android Studio 开发团队在内存分析器中添加了检测可能泄漏的活动和片段实例的功能。首先,在内存分析器中捕获或导入堆转储文件,然后选中 activity/fragments Leaks 复选框就会生成检测结果。相关文档:https://developer.android.google.cn/studio/profile/memory-profiler#profiler-memory-leak-detection

检测内存分析器中泄漏的活动和片段

Deobfuscate class and method bytecode in APK Analyzer

当使用 APK 分析器检查 DEX 文件时,现在可以对类和方法字节码进行去混淆处理。 在 DEX 文件查看器中,加载正在分析的 APK 的 ProGuard 映射文件。 加载后,就可以通过右键单击要检查的类或方法,然后选择 Show Bytecode 来去除混淆。

在 APK 分析器中通过选择 Show Bytecode 来消除类和方法字节码的混淆

作者:Scott Swarthout 原文地址:https://android-developers.googleblog.com/2020/02/android-studio-36.html

版权声明

禁止一切形式的转载-禁止商用-禁止衍生 申请授权

脉脉不得语
脉脉不得语
Zhengzhou Website
Android Developer | https://androiddevtools.cn and https://androidweekly.io WebMaster | GDG Zhengzhou Funder & Ex Organizer | http://Toast.show(∞) Podcast Host

你已经成功订阅到 Android 开发技术周报
太棒了!接下来,完成检验以获得全部访问权限 Android 开发技术周报
欢迎回来!你已经成功登录了。
Unable to sign you in. Please try again.
成功!您的帐户已完全激活,您现在可以访问所有内容。
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.