API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getP

Gradle异常处理

异常详情

在更新gradle后发现我的项目编译不通过了,异常信息如下

WARNING: API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getProcessResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getProcessResources(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app

在网上查了很久,说的很模糊,困扰了我一上午的时间,最后终于弄明白怎么回事了,这里记录下供其他同道参考.可以快速的解决问题.

环境

系统: win10
ide: android studio 3.4.1
gradle: 5.1.1
gradle插件版本:3.4.1

问题描述

出现这个问题是因为在gradle中写了一些功能性任务,但是在新版的gradle中是不推荐这样写的,https://d.android.com/r/tools/task-configuration-avoidance 这个网址里面就是说的新的规范应该怎么写.导致这个异常应该是因为在gradle中有推荐的写法.

我一开始看完后感觉很奇怪,我的build.gradle很干净,没有什么自定义的任务啊.难道是引用的资源项目的锅? 可是我引用了很多的项目,怎么判断是那个项目的锅呢?.继续看异常日志发现提示让去填写一个状态值.
根据异常日志中的提示,去gradle.properties文件中添加 android.debug.obsoleteApi=true 重新编译后发现打印出详细的异常日志了

WARNING: API 'variantOutput.getProcessResources()' is obsolete and has been replaced with 'variantOutput.getProcessResourcesProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
REASON: It is currently called from the following trace:
java.lang.Thread.getStackTrace(Thread.java:1556)
com.android.build.gradle.internal.errors.DeprecationReporterImpl.reportDeprecatedApi(DeprecationReporterImpl.kt:79)
com.android.build.gradle.internal.api.BaseVariantOutputImpl.getProcessResources(BaseVariantOutputImpl.java:86)
com.android.build.gradle.internal.api.ApkVariantOutputImpl_Decorated.getProcessResources(null:-1)
butterknife.plugin.ButterKnifePlugin$configureR2Generation$1$1.execute(ButterKnifePlugin.kt:65)
butterknife.plugin.ButterKnifePlugin$configureR2Generation$1$1.execute(ButterKnifePlugin.kt:20)
....
java.lang.Thread.run(Thread.java:745)

WARNING: Debugging obsolete API calls can take time during configuration. It's recommended to not keep it on at all times.
Affected Modules: app

异常日志很长,无关的给省略了,可以确定是ButterKnifer这个框架的锅了,
难道我用的版本太老了? 目前我的ButterKnifer使用的是9.0.0版本,我更新至最新版10.1.0 继续编译,发现依然还是这个错误.去ButterKnifer项目的issues区发现很多都是说这个问题.目前只有两个办法

解决办法

解决办法1

忽视这个异常,你什么都不用做.当看不见它,你的项目依然可以打包编,直到ButterKnifer发布新版本优化了这个问题后使用新版

解决版本2

我实在是忍不了每次编译都出现它,只能是选择降低gradle版本了,因为是新版gradle提出的这个警告,但是我还处理不了这个警告,只能处理新版的gradle了.让它闭嘴.
降级后的版本(测试可用)
gradle插件版本:3.1.0
gradle版本:4.4
butterKnifer版本:9.0.0
其他的版本可能也可以使用,但是这样已经满足我的要求了,就到这里了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值