Android studio3新特性,Android Studio 3.4 新特性 2019-4-20

IntelliJ IDEA 2018.3.4

The core Android Studio IDE has been updated with improvements from IntelliJ IDEA through the 2018.3.4 release.

先来看Android Gradle plugin 3.4.0 更新

For information on what’s new in Android Gradle plugin 3.4.0, see its release notes.

3.4.0 (April 2019)

此版本的Android插件需要以下内容:

等级5.1.1或更高。要了解更多信息,请阅读有关更新Gradle的部分。

SDK生成工具28.0.3或更高版本。

新特性

新的lint-check依赖配置:lint checks的行为已经改变,引入了一个新的依赖配置lintpublish,可以让您更好地控制哪些lint检查打包在Android库中。

lint checks:这是一个现有的配置,应该用于只在本地构建项目时运行的lint检查。如果以前使用lint checks依赖项配置在已发布的AAR中包含lint检查,则需要将这些依赖项迁移到使用下面描述的新lintpublish配置。

lintpublish:在库项目中使用这个新的配置来进行要包含在已发布的AAR中的lint检查,如下所示。这意味着使用库的项目也会应用这些lint检查。

以下代码示例在本地Android库项目中使用两种依赖项配置。

dependencies {

// Executes lint checks from the ':lint' project at build time.

lintChecks project(':lint')

// Packages lint checks from the ':lintpublish' in the published AAR.

lintPublish project(':lintpublish')

}

一般来说,打包和签名任务应该看到总体构建速度的提高。如果您注意到与这些任务相关的性能回归,请报告一个bug。

行为改变

Android Instant Apps功能插件拒绝警告:如果您仍在使用com.android.feature插件构建即时应用程序,android Gradle插件3.4.0将向您发出拒绝警告。为了确保您仍然可以在插件的未来版本上构建即时应用程序,请将即时应用程序迁移到使用动态功能插件,该插件还允许您从单个Android应用程序包发布已安装和即时应用程序体验。

默认情况下启用R8: R8集成了脱糖、收缩、混淆、优化和去索引等所有功能,从而显著提高了构建性能。R8是在Android Gradle Plugin 3.3.0中引入的,现在使用Plugin 3.4.0和更高版本的应用程序和Android库项目都默认启用了R8。

下图提供了R8引入之前编译过程的高级概述。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

现在,有了R8,脱糖(desugaring)、收缩、混淆、优化和dexing(D8)都是一步完成的,如下图所示。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

请记住,R8是为配合您现有的Proguard规则而设计的,因此您可能不需要采取任何措施来从R8中获益。但是,由于它与专为Android项目设计的Proguard是不同的技术,因此缩小和优化可能会导致删除Proguard可能没有的代码。因此,在这种不太可能的情况下,您可能需要添加额外的规则来将代码保存在构建输出中。

如果您在使用R8时遇到问题,请阅读R8兼容性常见问题解答以检查是否有解决方案。如果没有记录解决方案,请报告错误。通过向项目的gradle.properties文件中添加以下行之一,可以禁用r8:

Disables R8 for Android Library modules only.

android.enableR8.libraries = false

Disables R8 for all modules.

android.enableR8 = false

不推荐使用ndkcompile:如果尝试使用ndkbuild编译本机库,则会出现生成错误。您应该使用CMake或NDK构建来将C和C++代码添加到项目中。

已知问题

当前未强制正确使用唯一的包名称,但对插件的后续版本将更加严格。在Android Gradle插件3.4.0版上,您可以选择通过在gradle.properties文件中添加下面的行来检查您的项目是否声明了可接受的包名称。

android.uniquePackageNames = true

再来看Android Studio IDE的新特性

配置窗口 Project Structure

快捷键呼出(Ctrl+Shift+Alt+S)

98f733ee75a9?utm_source=desktop&utm_medium=timeline

Project Structure.png

配置Variables

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

Quickly view and edit build variables that already exist in your project’s Gradle build scripts.

Add new build variables at a project- or module-level directly from the PSD.

配置Modules

配置应用于现有模块中所有生成变量的属性,或从模块部分向项目添加新模块。例如,您可以在这里配置defaultconfig属性或管理签名配置。

配置Dependencies

通过以下步骤,检查并可视化项目的依赖关系图中的每个依赖关系(在项目同步期间由Gradle解决):

在PSD的左窗格中,选择依赖项

在模块窗格中,选择要检查已解析依赖项的模块。

在PSD的右侧,打开已解析依赖项窗格,如下所示。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

您还可以通过首先从PSD的Dependencies部分选择一个模块,单击Declared Dependencies部分中的(+)按钮,然后选择要添加的依赖项类型,来快速搜索并向项目添加依赖项。

根据您选择的依赖项类型,您应该看到一个与下面类似的对话框,帮助您将依赖项添加到模块中。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

配置 Variants

在PSD的这一部分中,为项目中的每个模块创建和配置构建变体和产品风格。您可以添加清单占位符、添加Proguard文件和分配签名密钥等。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

快速查看和编辑项目的渐变构建脚本中已经存在的构建变量。

直接从PSD在项目或模块级别添加新的构建变量。

Modules

配置应用于现有模块中所有生成变量的属性,或从模块部分向项目添加新模块。例如,您可以在这里配置defaultconfig属性或管理签名配置。

Dependencies

通过以下步骤,检查并可视化项目的依赖关系图中的每个依赖关系(在项目同步期间由Gradle解决):

在PSD的左窗格中,选择Dependencies。

在模块窗格中,选择要检查已解析依赖项的模块。

在PSD的右侧,打开“已解析的依赖项”窗格,如下所示。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

您还可以通过首先从PSD的Dependencies部分选择一个模块,单击Declared Dependencies部分中的(+)按钮,然后选择要添加的依赖项类型,来快速搜索并向项目添加依赖项。

根据您选择的依赖项类型,您应该看到一个与下面类似的对话框,帮助您将依赖项添加到模块中。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

Variants

在PSD的这一部分中,为项目中的每个模块创建和配置构建变体和产品风格。您可以添加清单占位符、添加Proguard文件和分配签名密钥等。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

Suggestions

请参见建议部分中的项目依赖项和构建变量的建议更新,如下所示。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

新的资源管理器New Resource Manager

资源管理器是一个新的工具窗口,用于导入、创建、管理和使用应用程序中的资源。通过从菜单栏中选择“视图>工具窗口>资源管理器”,可以打开工具窗口。资源管理器允许您执行以下操作:

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

可视化资源:您可以预览绘图、颜色和布局,以快速找到所需的资源。

批量导入:通过将多个可提取资产拖放到“资源管理器”工具窗口或使用导入可提取资产向导,可以一次导入多个可提取资产。要访问向导,请选择工具窗口左上角的(+)按钮,然后从下拉菜单中选择“导入绘图”。

将SVG转换为VectorDrawable对象:可以使用导入Drawables向导将SVG图像转换为VectorDrawable对象。

拖放资源:从“资源管理器”工具窗口中,可以将可绘图文件拖放到布局编辑器的设计视图和XML视图上。

查看替代版本:现在可以通过双击工具窗口中的资源来查看资源的替代版本。此视图显示您创建的不同版本以及包含的限定符。

平铺和列表视图:您可以更改工具窗口中的视图,以不同的方式可视化资源。

To learn more, read the guide about how to Manage app resources.

分析和调试APK时检查生成ID

当您为APK内的.so共享库提供调试符号文件时,Android Studio将验证所提供符号文件的生成ID是否与APK内的.so库的生成ID匹配。

如果使用构建ID在APK中构建本机库,android studio将检查符号文件中的构建ID是否与本机库中的构建ID匹配,如果不匹配,则拒绝符号文件。如果没有使用生成ID生成,则提供不正确的符号文件可能会导致调试问题。

R8 enabled by default

R8集成了脱糖(desugaring)、收缩、混淆、优化和dexing,一步到位,显著提高了构建性能。R8是在Android Gradle Plugin 3.3.0中引入的,现在使用Plugin 3.4.0和更高版本的应用程序和Android库项目都默认启用了R8。

下图提供了R8引入之前编译过程的高级概述。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

现在,有了R8,脱糖(desugaring)、收缩、混淆、优化和dexing(D8)都是一步完成的,如下图所示。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

image.png

请记住,R8是为配合您现有的Proguard规则而设计的,因此您可能不需要采取任何措施来从R8中获益。但是,由于它与专为Android项目设计的Proguard是不同的技术,因此缩小和优化可能会导致删除Proguard可能没有的代码。因此,在这种不太可能的情况下,您可能需要添加额外的规则来将代码保存在构建输出中。

如果您在使用R8时遇到问题,请阅读R8兼容性常见问题解答以检查是否有解决方案。如果没有记录解决方案,请报告错误。通过向项目的gradle.properties文件中添加以下行之一,可以禁用r8:

Disables R8 for Android Library modules only.

android.enableR8.libraries = false

Disables R8 for all modules.

android.enableR8 = false

导航编辑器现在支持所有参数类型

导航组件支持的所有参数类型现在都支持在导航编辑器中。有关受支持类型的详细信息,请参阅在目标之间传递数据。

布局编辑器改进

布局编辑器中的“属性”窗格已简化为一个页面,其中包含可展开以显示可配置属性的部分。“属性”窗格还包括以下更新:

新的已声明属性部分列出布局文件指定的属性,并允许您快速添加新属性。

当属性的值是资源引用时,“属性”窗格现在还具有每个属性旁边的指示器,否则为空。

出现错误或警告的属性现在突出显示。红色突出显示表示错误(例如,使用无效布局值时),橙色突出显示表示警告(例如,使用硬编码值时)。

快速导入依赖关系的新intention操作

如果您开始在代码中使用某些jetpack和firebase类,一个新的意图操作建议将所需的Gradle库依赖项添加到您的项目中,如果您还没有这样做的话。例如,如果您引用WorkManager类而不首先导入所需的android.arch.work:Work运行时依赖项,那么一个意图操作可以让您在一次单击中轻松做到这一点,如下所示。

98f733ee75a9?utm_source=desktop&utm_medium=timeline

特别是,因为jetpack将支持库重新打包为更易于管理和更新的离散包,所以这个意图操作可以帮助您快速地只添加您想要使用的jetpack组件所需的依赖项。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值