无法使用类'java.util.HashSet'转换对象'[]'

Sha*_*ami 5 java-native-interface android compilation gradle

我正在尝试打开Plumble的源代码,我将gradle wrapper distributionUrl更改为4.4,然后出现了此gradle错误

tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
Run Code Online (Sandbox Code Playgroud)

我搜索并发现了gradle 4.4中的“ Compile”是未定义的,我必须使用JavaCompiler来代替,但是随后出现此错误

Could not find method jniDir() for arguments [C:\Users\NP\Desktop\Plumble-Legacy-master\build\native-libs] on task ':packageDebug' of type com.android.build.gradle.tasks.PackageApplication.
Run Code Online (Sandbox Code Playgroud)

所以我换了

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniDir new File(buildDir, 'native-libs')
}
Run Code Online (Sandbox Code Playgroud)

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniFolders = new HashSet<File>()
    pkgTask.jniFolders.add(new File(projectDir, 'native-libs'))
}
Run Code Online (Sandbox Code Playgroud)

但是现在gradle构建中出现了新错误:

Cannot cast object '[]' with class 'java.util.HashSet' to class 'org.gradle.api.file.FileCollection' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: org.gradle.api.file.FileCollection()
Run Code Online (Sandbox Code Playgroud)

有谁知道我该如何解决?任何帮助都感激不尽

Spe*_* A1 1

即使我也面临这个问题。对我有用的解决方案是 1) 使用确切的 Maven 存储库 url 更新构建脚本。2)将 apply plugin : maven 添加到脚本中。