Android Gradle Plugin 3.6.0更新

Android Gradle Plugin 3.6.0 (2020 二月)

这个版本的Android插件需要:

Gradle 5.6.4. 了解更多关于Gradle升级部分。

SDK Build Tools 28.0.3或者更高.

新功能

此版本的Android Gradle插件包含以下新功能。

View Binding

在代码中引用视图时,View binging提供了编译时安全性。现在可以用自动生成的绑定类引用替换findViewById()。要开始使用View binding,请在<font color=red>每个模块的build.gradle</font>文件中包含以下内容:

android {
    viewBinding.enabled = true
}

想了解更多, 请看View Binding文档.

Maven Publish plugin 支持

Android Gradle插件包括对Maven Publish Gradle插件的支持,它允许您将构建工件发布到apachemaven仓库。Android Gradle插件为应用程序或库模块中的每个构建变体工件创建一个组件,您可以使用该组件将自定义发布到Maven仓库。

要了解更多信息,请转到有关如何使用Maven Publish插件的页面。

新的默认打包工具

在构建应用程序的调试版本时,插件使用名为zipflinger的新打包工具来构建APK。这个新工具应该可以提高构建速度。如果新的打包工具不能按预期工作,请报告一个错误。要恢复旧的打包工具只需在gradle.properties文件中包含以下内容,

android.useNewApkCreator=false

原生构建属性

现在可以确定Clang在项目中建立和链接每个C/C++文件所需的时间长度。Gradle可以输出一个Chrome跟踪,其中包含这些编译器事件的时间戳,这样您就可以更好地理解构建项目所需的时间。要输出此生成属性文件,请执行以下操作:

执行Gradle构建命令时添加属性

 -Pandroid.enableProfileJson=true   

如:

gradlew assembleDebug -Pandroid.enableProfileJson=true

打开Chrome浏览器并输入chrome://tracing

单击加载按钮并导航到project-root/build/android-profile以查找文件。文件名为profile-timestamp.json.gz。

您可以在查看器顶部附近看到本机生成属性数据:

习惯改变

使用此版本的插件时,可能会遇到以下行为的变化。

默认NDK版本

如果您下载了多个版本的NDK,Android Gradle插件现在将选择一个默认版本来编译源代码文件。此前,插件选择了NDK的最新下载版本。使用模块build.gradle文件中的android.ndkVersion属性覆盖所选插件的默认值。

简化R类的生成

Android Gradle插件通过为项目中的每个库模块仅生成一个R类并与其他模块依赖项共享这些R类,简化了编译类路径。这种优化应该会导致更快的生成,但它要求您记住以下几点:

  1. 因为编译器与上层模块依赖项共享R类,所以项目中的每个模块使用唯一的包名称是很重要的
  2. 一个库的R类对其他项目的可见依赖是由将该库作为依赖项包含在内的配置决定。例如,如果库A包含库B作为“api”依赖项,则库A和其他依赖于库A的库可以访问库B的R类。但是,如果库A使用实现依赖项配置,则其他库可能无法访问库B的R类。要了解更多信息,请阅读依赖配置

移除默认配置中的资源

对于库模块,如果包含的语言资源未包含在默认资源集中(例如,如果将hello_world作为字符串资源包含在/values-es/strings.xml中,但未定义) /values/strings.xml中的资源-编译项目时,Android Gradle插件不再包含该资源。 此行为更改应导致更少的“找不到资源”运行时异常,并提高了构建速度。

D8现在遵守CLASS注释保留策略

现在在编译你的应用程序时,D8会考虑注释何时应用CLASS保留策略,并且这些注释在运行时不再可用。 将应用程序的Target SDK设置为API级别23时,也会发生此行为,该行为以前允许在运行时使用较旧版本的Android Gradle插件和D8编译应用程序时访问这些批注。

其他变化

  • aaptOptions.noCompress 在所有平台上都不再区分大小写(对于APK和Bundle),并遵守使用大写字符的路径。

  • 默认情况下,数据绑定现在是增量的。要了解更多信息,请参阅问题#110061530.

  • 所有单元测试,包括Roboelectric单元测试,现在都是完全可缓存的。要了解更多信息,请参阅问题#115873047.

已知问题

丢失Manifest类文件

如果您的应用程序在其清单中定义了自定义权限,Android Gradle插件通常会以字符串常量的方式定义这些自定义权限并生成manifest.java类。插件将这个类与你的应用程序打包在一起,这样你就可以更容易地在运行时引用这些权限。

生成清单类在Android Gradle插件3.6.0中已损坏。 如果使用此版本的插件构建应用程序,并且该应用程序引用了清单类,则可能会看到ClassNotFoundException异常。 要解决此问题,请执行以下任一操作:

  • 通过标准名称引用您的自定义权限. 如: "com.example.myapp.permission.DEADLY_ACTIVITY".
  • 定义自己的常量,如下所示:
public final class CustomPermissions {
  public static final class permission {
    public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
  }

附录

版本更新对应表

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

推荐阅读更多精彩内容