Я знаю, что подобные вопросы задавались, но ни один из них точно не соответствует моей проблеме.
Я работаю над проектом для Android с использованием Android Studio.Я добавляю библиотеку 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()
Другие вопросы / ответы, такие как Этот предлагает обновить 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, но это ничего не исправилои вместо этого сломал остальную часть проекта.
Я уже давно ломаю голову, поэтому любое предложение будет оценено.спасибо.