Gradle同步因cmake失败“原因:为cmake执行外部本机构建”

时间:2019-07-27 00:42:23

标签: android android-studio gradle cmake android-gradle

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

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

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

这是我的gradle文件的样子。

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

当我在build.gradle中按sync(再试一次)时,错误消息只会显示

SIMPLE: Error configuring

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

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

非常感谢。

5 个答案:

答案 0 :(得分:1)

要在android studio中设置NDK路径,请转到: 文件->项目结构-> sdk位置-> android ndk位置->设置路径,例如我在Mac上的ndk位置是/ Users / username / Library / Android / sdk / ndk-bundle

答案 1 :(得分:1)

简而言之-也许问题出在与项目一起导入的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库的路径正确。因此,最可能的错误原因是克隆的项目中导入了一些项目设置。

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

就我而言,我替换了:

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

具有:

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

答案 2 :(得分:1)

这可能是因为您在项目中有一个共享库,需要与STL的共享版本链接。尝试将以下内容添加到您的build.gradle中:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_shared"
            }
        }
    }
}

答案 3 :(得分:0)

我有相同的错误消息,结果是我的CMakeLists.txt中存在语法错误

答案 4 :(得分:0)

我已通过在 app / build.gradle 文件中添加“ abiFilters ”来解决该问题:

{{1}}