【问题标题】:Android NDK: clang toolchain with Android Studio 2.2, gradle, and externalNativeBuild + Android.mkAndroid NDK:带有 Android Studio 2.2、gradle 和 externalNativeBuild + Android.mk 的 clang 工具链
【发布时间】:2016-07-26 17:28:47
【问题描述】:

我正在尝试使用带有 Android.mk 的新 externalNativeBuild 来设置一个 NDK 项目,但是当我在命令行上编译与通过 Android Studio 编译时,我得到了不同的结果。我正在尝试确认 Android Studio 正在使用哪个工具链,但无法弄清楚如何在给定新语法的情况下指定它。

到目前为止,我已将 NDK_TOOLCHAIN_VERSION := clang 添加到我的 Application.mk

如果我重命名 app/src/main/cpp -> app/src/main/jni 并在命令行上运行 ndk-build,我的静态库和共享库将按预期编译。

但是,在此处指定 NDK_TOOLCHAIN_VERSION 后,我在 Android Studio 中的项目视图会为静态库中的每个源文件显示一个目标文件。

我目前在使用 Android Studio 2.2 Preview 6 的 Windows 10 上。

我应该在别处指定这个吗?

【问题讨论】:

  • 你可以试试这里的样品,看看你是否得到类似的东西:github.com/googlesamples/android-ndk/tree/master/other-builds/…?同样在命令行上构建之后,在使用 android studio 重新构建之前,运行 rmdir /S /Q your-proj/app/.externalNativeBuild 以删除那里的任何缓存值。如果你的application.mk和android.mk在同一个目录下,默认会使用它们

标签: android android-ndk ndk-build android-studio-2.2


【解决方案1】:

我认为应该在build.gradle 中指定它,因为Application.mk 中的标志显然被忽略了(至少目前是这样)。

defaultConfig {
    externalNativeBuild {
        ndkBuild {
            arguments "-DNDK_TOOLCHAIN_VERSION=clang"
        }
    }
}

【讨论】:

  • Application.mk 中的 flags 只要与 Android.mk 在同一个目录中就可以使用;否则需要在模块 build.gradle 的参数行中指定 Application.mk 的路径
猜你喜欢
  • 2016-07-01
  • 2013-05-16
  • 2017-11-04
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多