16

Android Studio 2.2 Preview 1有一个新的外部 ndk 构建功能,但从app/build.gradle官方博客文章中显示的片段来看,根本不清楚如何设置Application.mk文件通常包含的其他 ndk 构建参数在此处输入图像描述

我可以通过 设置Android.mkndk 构建文件externalNativeBuild,但是如何设置所需的Application.mk变量?

我的Application.mk包含:

NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := android-16
APP_ABI := armeabi
APP_STL := c++_static
APP_CPPFLAGS += -std=c++11
4

2 回答 2

10

带有更新的 gradle 插件的 Android Studio 2.2 Preview 3 添加了对其他参数的支持。您可以像这样设置 Application.mk 和其他配置:

defaultConfig {
  ndkBuild {
    arguments "NDK_APPLICATION_MK:=Application.mk"
    cFlags "-DTEST_C_FLAG1"  "-DTEST_C_FLAG2"
    cppFlags "-DTEST_CPP_FLAG2"  "-DTEST_CPP_FLAG2"
    abiFilters "armeabi-v7a", "armeabi"
  } 
}

如果可能的话,我建议迁移到 CMake 构建系统,因为 Android Studio 中有更好的 C++ 代码编辑器和调试集成。您将在此处找到有关 gradle 插件配置的更多信息: https ://sites.google.com/a/android.com/tools/tech-docs/external-c-builds 。

编辑: 从 Android Studio 2.2 Preview 5 开始,您必须在 group下包装cmake和分组:ndkBuildexternalNativeBuild

defaultConfig {
  externalNativeBuild {
    ndkBuild {
      targets "target1", "target2"
      arguments "NDK_APPLICATION_MK:=Application.mk"
      cFlags "-DTEST_C_FLAG1", "-DTEST_C_FLAG2"
      cppFlags "-DTEST_CPP_FLAG2", "-DTEST_CPP_FLAG2"
      abiFilters "armeabi-v7a", "armeabi"
    } 
  }
}

编辑 2:似乎由于构建工具中的错误,ndkBuildexternalNativeBuild group 下包装不起作用。

于 2016-06-11T14:51:50.890 回答
1

添加本机代码

android {
  ...
  defaultConfig {...}
  buildTypes {...}

  // Encapsulates your external native build configurations.
  externalNativeBuild {

    // Encapsulates your CMake build configurations.
    cmake {

      // Provides a relative path to your CMake build script.
      path "CMakeLists.txt"
    }
  }
}

注意:如果要将 Gradle 链接到现有的 ndk-build 项目,请使用 ndkBuild {} 块而不是 cmake {},并提供 Android.mk 文件的相对路径。如果 Application.mk 文件与您的 Android.mk 文件位于同一目录中,Gradle 还会包含该文件

于 2016-10-11T05:59:55.033 回答