这个也适用于configurations.compileOnly
configurations.xxCompile
configurations.implementation
configurations.xxImplementation
等 Configuration
对象出现该问题.
环境
- migrate AndroidX后,gradle 版本:5.6.4, gradlePlugins版本:3.6.4
相关代码
task getLibs {
configurations.compile.setCanBeResolved(true)
configurations.compile.asFileTree.each { File file ->
if (file.getName().matches(".*\\.zip")) {
copy {
from zipTree(file)
into property_unzippedDir
}
}
}
}
问题
在 sync gradle时 configurations.compile.asFileTree
这段代码会报错:
cannot change strategy of configuration ‘complie’ after it has been resolved
解决方案
- 上述代码改为:
task getLibs {
configurations.compile.setCanBeResolved(true)
configurations.compile.copy().asFileTree.each { File file ->
if (file.getName().matches(".*\\.zip")) {
copy {
from zipTree(file)
into property_unzippedDir
}
}
}
}
在compile后面调用copy()
方法然后再调用asFileTree
原理
copy()
方法注解如下: