[英]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
组下包装cmake
和ndkBuild
组:
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.