我知道有人问过类似的问题,但没有一个完全适合我的问题。
我正在使用Android Studio开发一个android项目。我正在向现有项目添加C ++库。
这是我的问题:尝试编译时,收到此错误消息:
Build command failed.
Error while executing process /home/v/opt/cmake/3.6.4111459/bin/cmake with arguments {-H/home/v/proj/code/android/cppmanager -B/home/v/proj/code/android/tooltipgenerator/.externalNativeBuild/cmake/release/armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=/home/v/opt/ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/android/tooltipgenerator/intermediates/cmake/release/obj/armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=/home/v/opt/cmake/3.6.4111459/bin/ninja -DCMAKE_TOOLCHAIN_FILE=/home/v/opt/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-16}
(include) CMakeLists.txt
Open File
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
当我单击“打开文件”时,它将打开ndk-bundle/build/cmake/android.toolchain.cmake
到第312行。
# ABI.
set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
if(ANDROID_ABI STREQUAL armeabi-v7a)
set(ANDROID_SYSROOT_ABI arm)
set(ANDROID_TOOLCHAIN_NAME arm-linux-androideabi)
set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_TOOLCHAIN_NAME})
set(ANDROID_HEADER_TRIPLE arm-linux-androideabi)
set(CMAKE_SYSTEM_PROCESSOR armv7-a)
set(ANDROID_LLVM_TRIPLE armv7-none-linux-androideabi)
elseif(ANDROID_ABI STREQUAL arm64-v8a)
set(ANDROID_SYSROOT_ABI arm64)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(ANDROID_TOOLCHAIN_NAME aarch64-linux-android)
set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_TOOLCHAIN_NAME})
set(ANDROID_LLVM_TRIPLE aarch64-none-linux-android)
set(ANDROID_HEADER_TRIPLE aarch64-linux-android)
elseif(ANDROID_ABI STREQUAL x86)
set(ANDROID_SYSROOT_ABI x86)
set(CMAKE_SYSTEM_PROCESSOR i686)
set(ANDROID_TOOLCHAIN_NAME i686-linux-android)
set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_ABI})
set(ANDROID_LLVM_TRIPLE i686-none-linux-android)
set(ANDROID_HEADER_TRIPLE i686-linux-android)
elseif(ANDROID_ABI STREQUAL x86_64)
set(ANDROID_SYSROOT_ABI x86_64)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(ANDROID_TOOLCHAIN_NAME x86_64-linux-android)
set(ANDROID_TOOLCHAIN_ROOT ${ANDROID_ABI})
set(ANDROID_LLVM_TRIPLE x86_64-none-linux-android)
set(ANDROID_HEADER_TRIPLE x86_64-linux-android)
else()
set(ANDROID_ABI_ERROR "")
if(ANDROID_ABI STREQUAL armeabi)
set(ANDROID_ABI_ERROR " (armeabi is no longer supported. Use armeabi-v7a.)")
elseif(ANDROID_ABI MATCHES "^(mips|mips64)$")
set(ANDROID_ABI_ERROR " (MIPS and MIPS64 are no longer supported.)")
endif() // line 312
message(FATAL_ERROR "Invalid Android ABI: ${ANDROID_ABI}.${ANDROID_ABI_ERROR}")
endif()
其他问题/答案(如this one)建议更新gradle。我还发现了更新SDK(NDK)的建议……这似乎是个好主意,除了会破坏我现有的项目。
我正在运行Android Studio 3.1.3和Gradle 2.3.3
这是我主要build.gradle的摘录
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
applicationId "info.proj"
minSdkVersion 16
targetSdkVersion 27
versionCode 82
versionName "b-1.5.2"
multiDexEnabled = true
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
}
有什么方法可以解决此问题而无需升级构建环境?
我已经用abiFilters花了一些钱,没有成功...但是也许我只是玩错了?
我也已经尝试过更新gradle,但是它没有解决任何问题,反而破坏了项目的其余部分。
我已经花了很长时间思考,所以任何建议都将不胜感激。谢谢。