android – 我们如何使用基于NDK gradle的新构建器定义多个模块?

android – 我们如何使用基于NDK gradle的新构建器定义多个模块?,第1张

概述我正在尝试学习并尝试使用基于 Android Studio gradle的新的ndk构建支持. 我很难搞清楚如何定义PREBUILT_SHARED_LIBRARY ndk模块,以便我的主要ndk模块可以使用它.我使用Android.mk进行了这些设置,但无法弄清楚如何将其转换为gradle. :/ // SHARED LIBRARYandroid.ndk { moduleName = " 我正在尝试学习并尝试使用基于 Android Studio gradle的新的ndk构建支持.

我很难搞清楚如何定义PREBUILT_SHARED_liBRARY ndk模块,以便我的主要ndk模块可以使用它.我使用AndroID.mk进行了这些设置,但无法弄清楚如何将其转换为gradle. :/

// SHARED liBRARYandroID.ndk {    modulename = "skia_androID"    cppFlags += "-I${file("src/main/jni/skia/skia/out/config/androID-nexus_4/DeBUG/lib/libskia_androID.so")}".toString()    cppFlags += "-I${file("src/main/jni/skia/skia/include/core")}".toString()    cppFlags += "-I${file("src/main/jni/skia/skia/include/utils")}".toString()    cppFlags += "-I${file("src/main/jni/skia/skia/include/gpu")}".toString()    cppFlags += "-I${file("src/main/jni/skia/skia/include/private")}".toString()    ldlibs += ["EGL","GLESv2"]    stl    = "c++_static"}// MAIN liBRARYandroID.ndk {    modulename = "smasher"    cppFlags += "-I${file("src/main/jni/smasher/include")}".toString()    cppFlags += "-I${file("src/main/jni/smasher/src")}".toString()    cppFlags += "-I${file("src/main/jni/smasher")}".toString()    ldlibs += ["skia_androID","log","androID","EGL","GLESv2"]    stl    = "c++_static"    abiFilter "armeabi-v7a"}
解决方法 更新(2016年2月):实验插件现在允许原生模块!还不是主要的.

不幸的是,当前的gradle插件不支持这一点.具体来说,目前无法定义仅限本机的模块.我建议保留传统的AndroID.mk可靠地完成这项工作.

诀窍是禁用常规NDK构建任务,并注入buildNative任务:

PropertIEs propertIEs = new PropertIEs()propertIEs.load(project.rootProject.file('local.propertIEs').newDatainputStream())def ndkBuild = propertIEs.getProperty('ndk.dir') + '/ndk-build'import org.apache.tools.ant.taskdefs.condition.Osif (Os.isFamily(Os.FAMILY_windows)) {    ndkBuild += '.cmd'}task buildNative(type: Exec,description: 'Compile JNI source via NDK') {    commandline '$ndkBuild','NDK_PROJECT_PATH="$jniSrc/..'}task cleanNative(type: Exec,description: 'Clean JNI object files') {    commandline '$ndkBuild','clean','NDK_PROJECT_PATH="$jniSrc/..'}clean.dependsOn 'cleanNative'tasks.all {    task ->        if (task.name.startsWith('compile') && task.name.contains('MainC')) {            task.enabled = false        }        if (task.name.startsWith('link')) {            task.enabled = false        }        if (task.name.endsWith("Sharedlibrary") ) {            task.dependsOn buildNative        }}
总结

以上是内存溢出为你收集整理的android – 我们如何使用基于NDK gradle的新构建器定义多个模块?全部内容,希望文章能够帮你解决android – 我们如何使用基于NDK gradle的新构建器定义多个模块?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125595.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存