предыдущий код (это public-xml.gradle для идентификатора фиксированных ресурсов public.xml)
afterEvaluate {
for (variant in android.applicationVariants) {
def scope = variant.getVariantData().getScope()
String mergeTaskName = scope.getMergeResourcesTask().name
def mergeTask = tasks.getByName(mergeTaskName)
mergeTask.doLast {
copy {
int i=0
from(android.sourceSets.main.res.srcDirs) {
include 'values/public.xml'
rename 'public.xml', (i++ == 0? "public.xml": "public_${i}.xml")
}
into(mergeTask.outputDir)
}
}
}
}
теперь ошибка
No signature of method: com.android.build.gradle.internal.scope.VariantScopeImpl.getMergeResourcesTask()is applicable for argument types: () values: []
Possible solutions: getMergeJavaResourcesTask()
Я проверяю код для VariantScopeImp.java и обнаруживаю, что в 3.0.1 код
@Nullable private AndroidTask<MergeResources> mergeResourcesTask;
в 3.1.0 код
@Nullable private MergeResources mergeResourcesTask;
когда я меняю код public-xml.gradle на
def scope = variant.getVariantData().getScope()
def mergeTask = scope.mergeResourcesTask
новая ошибка
Cannot invoke method doLast() on null object
Что мне для этого сделать? спасибо