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

时间:2016-05-22 19:37:45

标签: android android-ndk java-native-interface android-studio-2.2

Android Studio 2.2预览1 有一个新的外部ndk构建功能,但是从官方博客帖子中显示的app/build.gradle代码段,它根本不清楚如何设置额外的ndk构建Application.mk文件通常包含enter image description here

的参数

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

我的Application.mk包含:

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

2 个答案:

答案 0 :(得分:10)

带有更新的gradle插件的Android Studio 2.2 Preview 3增加了对其他参数的支持。您可以设置Application.mk和其他配置,如下所示:

dplyr

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

修改 在Android Studio 2.2预览版5中,您必须在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" } } 组下包装cmakendkBuild组:

externalNativeBuild

编辑2:由于构建工具中存在错误,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" } } } 组下的ndkBuild包裹似乎不起作用。

答案 1 :(得分:1)

add-native-code

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文件位于同一目录中。)