【问题标题】:Errors updating from NDK version 16 to NDK version 17从 NDK 版本 16 更新到 NDK 版本 17 时出错
【发布时间】:2018-11-29 20:51:07
【问题描述】:

这是一个使用 JNI 和 NDK 的 Android 项目。我正在使用 Android Studio 3.0.1 构建项目。我最近将我的 NDK 从版本 16 更新到版本 17,希望能够提供更多的编译器优化。更新后,我收到以下错误:

C:/Users/John/AppData/Local/Android/Sdk/ndk-bundle/build/cmake/android.toolchain.cmake:312 处的 CMake 错误(消息): 无效的 Android ABI:armeabi。 (不再支持 armeabi。使用 armeabi-v7a.) 调用堆栈(最近的调用优先): C:/Users/John/AppData/Local/Android/Sdk/cmake/3.6.4111459/share/cmake-3.6/Modules/CMakeDetermineSystem.cmake:98(包括) CMakeLists.txt CMake 错误:在 EnableLanguage 之后未设置 CMAKE_C_COMPILER CMake 错误:在 EnableLanguage 之后未设置 CMAKE_CXX_COMPILER -- 配置不完整,出现错误!

对于每个已弃用的 ABI armeabi、mips 和 mips64,我都会收到此错误。我知道我应该从构建中删除这些 ABI,但我找不到有关如何执行此操作的说明。我没有使用 Application.mk,也没有看到任何地方指定了 ABI;如何从我的 Android Studio 项目中删除这些未使用的 ABI,或者更好的是,如何将我的项目设置为仅使用当前未弃用的 ABI?谢谢。

【问题讨论】:

    标签: android android-studio cmake android-ndk


    【解决方案1】:

    在根(项目)build.gradle 脚本中将您的 gradle 插件升级到 3.1.2 或更高版本就足够了。建议使用最新的插件,不仅要兼容最新的 NDK:

    buildscript {
      dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
      }
    }
    

    您还必须更改 gradle/wrapper/gradle-wrapper.properties

    distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip v.4.4
    

    如果您负担不起此类更改,您可以尝试跳过已弃用的 ABI 进行构建和打包:

    android {
      defaultConfig {
        ndk {
          abiFilters 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
        }
      }
    
      packagingOptions {
        doNotStrip '*/mips/*.so'
        doNotStrip '*/mips64/*.so'
      }
    }
    

    【讨论】:

    • 谢谢亚历克斯。我收到“找不到 com.android.tools.build:gradle:3.1.2”。我收到一条通知,上面写着“平台和插件更新\nAndroid Studio 已准备好更新” - 我应该继续尝试吗?
    • 或者还有另一个链接显示“添加 Google Maven 存储库并同步项目” - 我想这是我更好的选择?
    • 好吧,在花费大量时间更新所有内容并谷歌搜索出现的其他错误之后,我能够再次构建 - 当然,新编译器仍然不支持 -march=本国的。叹。无论如何,您的建议有所帮助,所以我将您的建议标记为正确答案,谢谢。
    • 我相信 NDK 可以很好地为每个 ABI 和平台选择优化选项,因此这里可能不需要-march=native
    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 2018-04-10
    • 2016-02-01
    • 2019-11-06
    • 1970-01-01
    • 2018-01-17
    • 2019-12-27
    相关资源
    最近更新 更多