android - Gradle 同步失败,cmake "cause: executing external native build for cmake"

标签 android android-studio gradle cmake android-gradle-plugin

我正在尝试在 Android Studio 中构建同事的项目,该项目需要 CMake SDK 来构建项目中包含的外部 c/cpp 文件。我遇到的问题是,尽管通过 SDK 管理器安装了 LLDB、NDK 和 CMake SDK 工具,但引用 cmake 路径的模块的 gradle 无法同步。我已经安装了这个项目并正在工作的同事还没有遇到这个问题,所以我怀疑它一定是我的环境设置中的问题。

到目前为止,我已经尝试卸载并重新安装 CMake SDK,刷新链接的 C++ 项目,并从 gradle 文件中删除对 cmake 路径的引用,并通过右键单击 moduel -> Link C++ Project with Gradle 添加引用,但这些都不起作用。

当我在 gradle 中注释掉对 CMakeLists.txt 的引用时,它会同步,表明问题出在对 CMake 文件的引用上。我还尝试在 CMakeLists.txt 文件中注释掉库引用,以查看是否由于文件中的引用而发生错误,但即使我注释掉所有内容,gradle 也无法同步。

这就是我的 gradle 文件的样子。

externalNativeBuild {
    cmake {
        path 'src/main/cpp/CMakeLists.txt'
    }
}

当我在 build.gradle 中按同步(重试)时,错误消息仅显示

SIMPLE: Error configuring

当我忽略 gradle 同步失败的事实并只是尝试构建时,错误消息显示如下。

Cause: executing external native build for cmake <my_project_path>\src\main\cpp\CMakeLists.txt

编辑:添加了指向我的 Android Studio NDK 路径(C:\Users\username\AppData\Local\Android\Sdk\ndk-bundle for Windows)的图像捕获的链接。 NDK path Capture

最佳答案

简而言之 - 也许问题出在与项目一起导入的 build.gradle 文件中。

尝试编辑“build.gradle”第 9 行:类路径“com.android.tools.build:gradle:3.1.1” 替换 gradle 版本号(在我的例子中,我将 '3.1.1' 替换为 '3.5.0')。

更详细地说 - 我在克隆时遇到了同样的问题: https://github.com/farzaa/DracoPortedToAndroid

我确实尝试了上述方法(设置 ndk 路径),但这不是问题,因为 ndk lib 的路径是正确的。因此,最可能的错误原因是与克隆项目一起导入的一些项目设置。

尝试将导入项目的“Gradle 脚本”(在项目资源管理器中)与在 Android Studio 环境中构建的新项目进行比较。新项目将具有正确的本地设置。

就我而言,我替换了:

classpath 'com.android.tools.build:gradle:3.1.1'

与:

classpath 'com.android.tools.build:gradle:3.5.0'

关于android - Gradle 同步失败,cmake "cause: executing external native build for cmake",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57228325/

相关文章:

java - 如何在我的 Gradle JAR 类路径构建脚本中包含 com.sun.tools JAR 并与我的 IDE 同步?

android - 使用 Gradle/Android Studio 为 Android 构建独立的静态库

android - 以 UTC 时区保存日期

android - 为什么我在编译时不能将 android-platform 设置为低于 22?

java - 在android项目中将所有名称变量和函数从大写更改为小写

android - 如何在按钮单击时显示 DatePickerDialog?

android - 哪个变量包含在gradle/android中包含其基本名称的apk路径?

java - 如果 ArrayList<Object> 的元素在 Android 中具有空值,则无法检查它

android - 如何使用数据绑定(bind)动态地在 Activity 中扩充框架布局?

android - 如何在 Android 应用程序中使用下载的模板(.sketch 文件)?