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

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

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

我的Application.mk包含:

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

带有更新的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 ++代码编辑器和调试集成。 您可以在此处find有关gradle插件配置的更多信息: https : //sites.google.com/a/android.com/tools/tech-docs/external-c-builds 。

编辑:从Android Studio 2.2 Preview 5中,您必须在externalNativeBuild组下包装cmakendkBuild组:

 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:由于构建工具中的错误,似乎在externalNativeBuild组下包装ndkBuild不起作用。

添加本机代码的

 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文件的相对路径。 Gradle还包含Application.mk文件(如果它与Android.mk文件位于同一目录中)