繁体   English   中英

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

[英]How to properly use NDK-Build in Android Studio 2.2 Preview 1

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

我可以通过externalNativeBuild设置Android.mk 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

带有更新的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中,您必须在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文件位于同一目录中)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM