【问题标题】:Gradle error 'variant.getMergeResources()' on Android Studio 3.5.0Android Studio 3.5.0 上的 Gradle 错误“variant.getMergeResources()”
【发布时间】:2019-09-02 05:39:52
【问题描述】:

我使用 Android Studio 3.5.0 和 Gradle 版本 5.6.1、5.6、5.4.1,但仍然得到相同的结果:

INFO: API 'variant.getMergeResources()' is obsolete and has been replaced with 'variant.getMergeResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.

我所有的 gradle 文件都包含在这里

https://gist.github.com/derohimat/b7832dc4973a125c289c804998519518

【问题讨论】:

  • 分享你的 gradle 文件..

标签: android gradle android-gradle-plugin


【解决方案1】:

就我而言,它是由 gms services 4.3.1 引起的。所以我不得不将其更改为:

com.google.gms:google-services:4.2.0

我通过运行找到了这个:

gradlew sync -Pandroid.debug.obsoleteApi=true

在终端中。转到查看 -> 工具窗口 -> Android Studio 中的终端。

希望你的问题能解决

【讨论】:

  • 我尝试降级google-services to 4.2.0,但仍然报错
  • 错误变为Cause: buildOutput.apkData must not be null
  • 是的,我已经看到并通过这个答案解决了stackoverflow.com/a/57698879/898404
【解决方案2】:

信息:API 'variant.getMergeResources()' 已过时,已替换为 'variant.getMergeResourcesProvider()'。 将于 2019 年底移除。

首先,这只是告诉您有关 API 弃用的正常信息,这是多个 Gradle 主要版本的常见弃用过程。所以,不用太担心。

其次,从 Gradle 5.1 开始,建议在自定义插件创建任务时使用配置避免 API。见Task Configuration Avoidance

第三,您自己的 gradle 构建脚本看起来不包含任何关于 variant.getMergeResources() 的语句,但这并不意味着 您应用的 gradle 插件也不包含参考variant.getMergeResources,因此您需要查看所有插件,例如

apply plugin: 'com.android.application'
apply plugin: 'jacoco'
apply plugin: 'com.github.ben-manes.versions'
apply plugin: 'io.fabric'
apply plugin: 'com.google.gms.google-services'

上面的插件实现可能至少有一个对variant 对象的引用。

编辑#1

运行以下命令以获取有关您项目的详细构建信息:

./gradlew build --scan

例如,您将看到如下所示的内容

有关构建故障排除的更多信息,请访问 Gradle Build Troubleshooting

【讨论】:

  • 我评论这个插件// classpath 'com.github.ben-manes:gradle-versions-plugin:0.20.0' 并降级google-services to 4.2.0 但得到错误Cause: buildOutput.apkData must not be null
猜你喜欢
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 2015-08-12
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多