Android Studio 3.4 新特性 2019-4-20

搬运->https://developer.android.com/

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引入之前编译过程的高级概述。

image.png

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

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)

Project Structure.png

配置Variables

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解决):

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

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

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

image.png

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

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

image.png

配置 Variants

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

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

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

Modules

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

Dependencies

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

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

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

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

image.png

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

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

image.png

Variants

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

image.png

Suggestions

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

image.png

新的资源管理器New Resource Manager

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

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引入之前编译过程的高级概述。

image.png

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

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运行时依赖项,那么一个意图操作可以让您在一次单击中轻松做到这一点,如下所示。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342