我正在尝试在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
非常感谢。
答案 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}}