Android Studio 3.5.0 上的 Gradle 错误“variant.getMergeResources()”
Posted
技术标签:
【中文标题】Android Studio 3.5.0 上的 Gradle 错误“variant.getMergeResources()”【英文标题】:Gradle error 'variant.getMergeResources()' on Android Studio 3.5.0 【发布时间】: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 文件.. 【参考方案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
是的,我已经看到并通过这个答案解决了***.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
以上是关于Android Studio 3.5.0 上的 Gradle 错误“variant.getMergeResources()”的主要内容,如果未能解决你的问题,请参考以下文章
将 Android Studio 3.6 和 Gradle 更新到 3.5.0 后无法运行项目