如何使用 NDK 在 Flutter gradle 构建中修复 gradle 任务“:app:mergeDebugJniLibFolders”?

Jér*_*émy 3 java-native-interface android-ndk build.gradle android-gradle-plugin opencv4android

我正在设置一个新的 Flutter 应用程序,我想使用 NDK 添加 opencv 本机(c++)插件。

我已经安装并配置了 OpenCV 和 NDK(使用不同的教程),但在我尝试构建我的项目 ( flutter run) 时出现此错误:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugJniLibFolders'.
> java.lang.NullPointerException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or -- 
debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 31s
Finished with error: Gradle task assembleDebug failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

我不知道它从何而来,也没有“任务”mergeDebugJniLibFolders在我build.gradle从我的应用程序。我无法使用指定的参数运行 flutter:它会出错。

Jér*_*émy 5

我找到了解决方案!

我进入了我的build.gradle那些行:

sourceSets {
    main {
        jniLibs.srcDirs = ['src/main/libs']
        java.srcDirs = ['src']
        ...
    }
 }
Run Code Online (Sandbox Code Playgroud)

所以我决定打开src/main/libs只包含

../../../../OpenCV-Andoid-sdk/native/libs/

...一条错误的路径应该是:

../../../../sdk/native/libs/

我将正确路径放入尊重新相对路径的 gradle 文件中:

sourceSets {
    main {
        jniLibs.srcDirs = ['../../sdk/native/libs/']
        java.srcDirs = ['src']
        ...
    }
 }
Run Code Online (Sandbox Code Playgroud)

现在它编译完美!这是一个多么棘手的错误,我花了 6 个晚上...