如何在Android Studio 2.2 Preview 1中正确使用NDK-Build

Tad*_*das 16 java-native-interface android android-ndk android-studio-2.2

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

我可以通过设置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
Run Code Online (Sandbox Code Playgroud)

Tad*_*das 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"
  } 
}
Run Code Online (Sandbox Code Playgroud)

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

编辑: 从Android Studio 2.2预览版5中,您必须在组下进行换行cmakendkBuild分组externalNativeBuild:

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"
    } 
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 虽然这可能已存在于预览中,但它不存在于插件的2.2.0或2.2.1中. (2认同)