NDK中的define LOCAL_SRC_FILES
问题:
是否可以在gradle.build ndk {} DSL中定义LOCAL_SRC_FILES?
背景:
在jni module gradle.build文件中,使用以下配置:
android { def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } ...
jni源代码中包含针对不同平台(Android、iOS、WinRT)的代码。目标是排除Android.mk中不适用于Android的代码。
答案:
不幸的是,当前的gradle插件不支持在ndk {} DSL中定义LOCAL_SRC_FILES。以下是解决方法:
传统方法:
保持传统的Android.mk文件,它可以可靠地排除特定代码。建议使用cppFlags和cFlags设置,以便在Android Studio中具有代码引用和语法高亮。
实验性方法(buildNative任务):
禁用常规NDK构建任务,并注入一个buildNative任务以构建本地代码。这适用于实验性插件'com.android.tools.build:gradle-experimental:0.2.0'。
高级方法(静态库):
如果本地代码分为多个目录(Android特定文件和平台无关文件),则可以考虑构建一个静态库,并链接它以获取必要的符号。这种方法允许使用ndk-build构建静态库,并在链接时将其与必要的对象一起使用。
更新:
在实验性插件中,可以使用compileJavaTask.dependsOn buildNative来替换task compileTask.dependsOn buildNative。
更新 2:
可以链接单个本地源文件到Android Studio项目,从而解决该问题。
以上是您可以在 gradle.build ndk {} DSL 中定义 LOCAL_SRC_FILES 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!