如何在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 

  • Android - 电池使用情况详情
  • 应用程序集成“发送反馈”
  • onCreateOptionsMenu(菜单菜单)仅在活动的生命周期中被调用一次
  • Android:如何将监听器添加到硬件菜单按钮?
  • onBackPressed隐藏不破坏活动
  • 在ListView中选择多个项目
  • 获取android中两个位置之间的距离?
  • getDatabase递归调用
  • 带有更新的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文件位于同一目录中)