Android Studio 3.4是一个主要版本,具有各种新功能和改进。
IntelliJ IDEA 2018.3.4
- 自2018.3.4版起,Android Studio核心已通过IntelliJ IDEA的增强功能进行了更新
Android Gradle插件3.4.0
- 关于Android Gradle插件3.4.0中的新功能,请参见发行说明
新建项目结构对话框
- 新的“项目结构”对话框(PSD)使更新依赖项和配置项目的各个方面变得容易,例如模块,构建选项,签名配置和构建变量
- 您可以通过在菜单中选择“文件>项目结构”来打开PSD。 您也可以在Windows和Linux上通过Ctrl + Shift + Alt + S或Command +打开PSD。 (分号)在macOS上。 以下是PSD创新和更新的描述。
变数
模组
- 配置适用于模块中现有所有构建选项的属性,或使用“模块”部分将新模块添加到项目中。 例如,在这里您可以配置defaultConfig属性或管理签名配置
依存关系
请按照以下步骤检查并查看Gradle构建的项目的依赖关系图的每个依赖关系图:
- 在PSD的左窗格中,选择“依赖项”
- 在“模块”面板中,选择要查看其依赖性的模块
- 在PSD的右侧,打开“ Resolved Dependencies”面板,如下所示

您还可以通过选择模块并单击“声明的依赖项”部分中的“ +”按钮,然后选择要添加的依赖项类型,来快速找到依赖项并将其添加到项目中
根据您选择的依赖关系类型,您应该会看到一个类似于以下所示的对话框,该对话框可帮助您将依赖关系添加到模块中

组装选项
- 在PSD的这一部分中,将为项目中的每个模块创建和配置构建选项和版本(“产品口味”)。 您可以添加清单模板(“占位符”),ProGuard文件并分配签名密钥等。

小费
- 您可以在“建议”部分中看到项目的建议依赖关系更新和构建选项,如下所示

新的“资源经理”
在分析和调试APK时验证构建ID
- 当您在APK内部提供共享.so库的“调试符号文件”时,Android Studio会检查“ debugging符号文件”的内部版本ID是否与APK内部.so库的内部版本ID相匹配
- 如果您使用构建ID在APK中收集本机库,则Android Studio会检查“符号文件”的构建ID与本机库的构建ID是否匹配,如果不匹配,则重置“符号文件”。 如果您未使用构建ID进行构建,则在调试时提供不正确的“符号文件”可能会导致问题
默认情况下启用R8
R8一步将除糖,压缩,混淆,优化和解组结合在一起,从而显着提高了性能。 R8是在Android Gradle插件3.3.0中引入的,默认情况下,使用插件版本3.4.0或更高版本的应用程序和Android库项目均已启用R8
下图概述了R8之前的编译过程

现在,使用R8,可以一步完成除糖,压缩,混淆,优化和分解(D8),如下所示

R8旨在与您现有的ProGuard规则配合使用,因此您无需采取任何措施即可利用R8。 同时,由于这项技术不同于专为Android项目设计的ProGuard,因此压缩和优化可能包括删除ProGuard不会删除的代码。 因此,在这种不太可能的情况下,您可能需要添加其他规则以将此代码保存在最终程序集中
如果您在使用R8时遇到问题,请阅读R8兼容性常见问题解答,以检查是否有现成的解决方案。 如果尚未记录解决方案,请报告错误 。 您可以通过将以下说明之一添加到项目的gradle.properties文件中来禁用R8:
<i>#仅对Android库模块禁用R8 </ i>
android.enableR8.libraries = false </ p>
<p> <i>#禁用所有模块的R8 </ i>
android.enableR8 =否
注意:对于指定的程序集类型,如果您在应用程序模块的build.gradle文件中为useProguard设置为false,则无论是否在项目的gradle.properties文件中禁用了R8,Android Gradle插件都将使用R8压缩此类程序集的应用程序代码。
导航编辑器现在支持所有类型的参数
- 导航编辑器现在支持导航组件支持的所有类型。 有关支持的类型的更多信息,请参阅在目标之间传递数据
布局编辑器中的改进
快速导入依赖项的新操作提示
- 如果您开始在代码中使用特定的Jetpack和Firebase类,则新的操作提示建议将必要的Gradle库依赖项添加到项目中(如果尚未添加)。 例如,如果您是第一次引用WorkManager类,则需要android.arch.work:work-runtime依赖项,并且操作提示使您可以单击添加它,如下所示

- 特别是因为 Jetpack是在单独的软件包中提供的(这使得管理和更新它们更加容易),操作快捷方式可帮助您快速添加仅所用Jetpack组件所需的依赖项
3.4.0已知问题
- 在运行Android Q Beta的设备上部署应用程序时,性能分析被禁用
- 当使用数据绑定库时,LiveDataListener.onChanged()可能会附带NullPointerException。 此问题的修复程序将包含在Android Studio 3.4.1中,并且已在最新的 Android Studio 3.5 预览版中提供 (请参见Bug 122066788 )