升级Android Studio NDK后出错:未设置CMAKE_C_COMPILER和CMAKE_CXX_COMPILER

时间:2018-05-17 21:08:45

标签: java android android-studio cmake android-ndk

更新Android Studio NDK后,由于与CMAKE相关的错误(我的应用程序使用一个c ++文件),我无法构建我的应用程序。 以下是错误行:

Build command failed.
Error while executing process C:\Users\AnimallTag\AppData\Local\Android\sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {-HC:\Projetos\Git\at65\app -BC:\Projetos\Git\at65\app\.externalNativeBuild\cmake\debug\mips -GAndroid Gradle - Ninja -DANDROID_ABI=mips -DANDROID_NDK=C:\Users\AnimallTag\AppData\Local\Android\sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Projetos\Git\at65\app\build\intermediates\cmake\debug\obj\mips -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=C:\Users\AnimallTag\AppData\Local\Android\sdk\cmake\3.6.4111459\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=C:\Users\AnimallTag\AppData\Local\Android\sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_PLATFORM=android-14}
 (include)   CMakeLists.txt 
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

有什么建议可以帮我解决这个问题吗?也许我可以降级NDK或我可以安装的Android Studio以前的版本......

Error screen in Android Studio

4 个答案:

答案 0 :(得分:9)

我设法解决了这个问题。我注意到的一件事是android NDK的更改日志,它说没有更多支持armeabi,MIPS和MIPS64 ABI,所以我在build.gradle文件中过滤了ABI:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
            }
        }
    }
}

之后我同步gradle和Android Studio提示我更新Gradle,我做了。 该应用程序现在可以部署,但我不知道是什么修复它。 显然,错误与CMAKE_C_COMPILER无关,也不是CMAKE_CXX_COMPILER,它发生在其他地方,当构建失败时,它无法找到这些变量。 也许这也可以帮助别人......

答案 1 :(得分:4)

NDK最近更新之后,CMAKE中断了

什么都没做,我通过从以下位置下载NDK降级了NDK https://developer.android.com/ndk/downloads/older_releases

并将 local.properties 中的NDK DIR PATH更改为

ndk.dir=/Users/kathan/Library/Android/sdk/android-ndk-r17c

还有Sync Gradle。

像魅力一样工作

答案 2 :(得分:1)

就我而言,我有两个用于NDK的安装文件夹。我需要更新我的 local.properties 以指向正确的目录。我更新了我的NDK和 build.gradle (通过上述回答),重新同步后一切正常。

答案 3 :(得分:0)

嘿,在安装 ndk-bundle 后,我遇到了类似的问题, 错误已通过以下方式解决:

build.gradle 文件(模块级别)中添加以下代码段:

android {
   defaultConfig {
       ndk {
            abiFilters "armeabi-v7a", "x86"
        }

        externalNativeBuild {
            cmake {
                abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
            }
        }
      }
}

注意:如果您在build.gradle文件中已经有这种代码,请确保没有多余的 abiFilters ,而不是我在这里提到的那些代码。

还要确保您已添加:
distributionUrl = https://services.gradle.org/distributions/gradle-4.6-all.zip

gradle / wrapper / gradle-wrapper.properties 文件中。

谢谢! 快乐编码:)