繁体   English   中英

如何使用build.gradle文件向Android NDK添加静态库?

[英]How can I add a static library to Android NDK using the build.gradle file?

我正在尝试学习在AndroidStudio中使用NDK,并且我想导入“native-activity”示例中使用的“android_native_app_glue”文件,这样我就有了一个基本功能的框架,如显示,触摸,在示例中,它使用android.mk文件中的这一行加载库:

LOCAL_STATIC_LIBRARIES := android_native_app_glue

然后使用以下命令在“main.c”中导入它:

#include <android_native_app_glue.h>

但是在AndroidStudio中,据我尝试使用它,它根本不使用android.mk文件而是使用build.gradle文件来代替所有相同的函数。 因此,例如,要在android.mk中替换LOCAL_LDLIBS := ... ,我在build.gradle中使用了ldLibs = ... 什么gradle代码替换了LOCAL_STATIC_LIBRARIES

在某些地方是否还有一个资源可以解释如何从android.mk转换为build.gradle?

如果你真的想让它在没有Makefiles的情况下工作,你可以将ndk\\sources\\android\\native_app_glue\\android_native_app_glue.(c|h)复制并粘贴到你的jni文件夹中并将android添加到你的ldLibs

另外,您仍然可以依赖经典的Makefile,通过停用对ndk-build的默认调用,并使gradle使用libs目录中的libs

sourceSets.main {
    jniLibs.srcDir 'src/main/libs'
    jni.srcDirs = [] //disable automatic ndk-build call
}

在这种情况下,你必须自己调用ndk-build ,但你也可以让gradle为你调用它:

// call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
    } else {
        commandLine 'ndk-build', '-C', file('src/main').absolutePath
    }
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn ndkBuild
}

暂无
暂无

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

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