Warning 日志
最近在做Android工程的架构升级,每次同步工程()都会报下面的告警信息:
- API ‘variant.getAssemble()’ is obsolete and has been replaced with ‘variant.getAssembleProvider()’
- 警告:'variant.getJavaCompile()‘接口已过时,请替换为’variant.getJavaCompileProvider()’
- Android Studio 更新后:获取 API ‘variant.getAssemble()’ 已过时,已替换为 ‘variant.getAssembleProvider()’
查了一下资料,有部分让降级 Gradle 版本的,还有关闭告警信息的,但考虑到以后的升级,还是适配一下比较稳妥,我们不应该把风险转嫁给未来。
原因
告警信息其实已经非常明确了,variant
的 getAssemble()
方法已启用,Gradle 官方希望我们使用它的替代方法 getAssembleProvider()
。
至于如何查找使用 getAssemble()
方法的地方,需要全局搜索一下:
getAssemble
assemble
通常大家使用到此方法的地方是应用 module 内的 build.gradle
里:
android {
variant.outputs.all { output ->
variant.assemble.doLast {
//....
}
}
}
可以看到 variant.assemble
,不是告警信息里的 variant.getAssemble()
,这是 Gradle 使用的 Groovy 语言的特性造成的。
解决方案
假设旧的使用方式是:
代码语言:javascript复制variant.outputs.all { output ->
variant.assemble.doLast {
//....
}
}
}
把上述代码替换为(内含 2 种修改方法):
代码语言:javascript复制variant.outputs.all { output ->
variant.getAssembleProvider().configure() {
it.doLast {
//....
}
}
}
//或者
variant.outputs.all { output ->
variant.assembleProvider.get().doLast {
//....
}
}
}
根据自己的喜欢,可以选择上述修改方法之一。