我在Android Studio中使用CMake有一个原生的android项目结构。我想在build.gradle中更改我的CMakeLists.txt文件的路径,默认情况下src/main/cpp/CMakeLists.txt
为D:/Projects/AndroidNative/CMakeLists.txt
执行此更改后,我的build.gradle如下所示: (" externalNativeBuild"范围中的相关部分)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '25.0.0'
defaultConfig {
applicationId "com.myproject.andndk"
minSdkVersion 15
targetSdkVersion 23
ndk {
abiFilters 'x86', 'armeabi', 'armeabi-v7a'
}
externalNativeBuild {
cmake {
arguments '-DANDROID_PLATFORM=android-15',
'-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path 'D:/Projects/AndroidNative/CMakeLists.txt'
}
}
sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
}
所以当我同步我的gradle项目时,我有这个错误:
The detected version of Ninja () is less than the version of Ninja required
我确实安装了Ninja并且是最新的,显然是因为我在更改CMakeLists路径之前没有出现此错误。所以我不明白为什么它再也找不到忍者?
这是生成的CMake命令:
Error while executing process
C:\Users\xxxx\AppData\Local\Android\sdk\cmake\3.6.4111459\bin\cmake.exe
with arguments {-HD:\Projects\AndroidNative
-BC:\Users\xxxx\AndroidStudioProjects\andndk\app\.externalNativeBuild\cmake\release\armeabi-v7a
-GAndroid Gradle - Ninja -DANDROID_ABI=armeabi-v7a -DANDROID_NDK=C:\Users\xxx\AppData\Local\Android\sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\xxxx\AndroidStudioProjects\andndk\app\build\intermediates\cmake\release\obj\armeabi-v7a
-DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=C:\Users\xxxx\AppData\Local\Android\sdk\cmake\3.6.4111459\bin\ninja.exe
-DCMAKE_TOOLCHAIN_FILE=C:\Users\xxxx\AppData\Local\Android\sdk\ndk-bundle\build\cmake\android.toolchain.cmake
-DANDROID_PLATFORM=android-15 -DANDROID_PLATFORM=android-15 -DANDROID_TOOLCHAIN=clang -DANDROID_STL=gnustl_static}