gpt4 book ai didi

android - Android Studio中ndk-build自动调用的使用方法

转载 作者:行者123 更新时间:2023-11-29 00:13:42 25 4
gpt4 key购买 nike

在较新版本的 Android Studio 中,我们可以在/jni 文件夹中构建 .cpp 和 .c 文件,而无需任何 android.mk 文件。这是通过简单地在我们的 build.gradle 文件中放置类似以下行的内容来实现的:

defaultConfig {
..

ndk {
moduleName "niceprocess"
cFlags "-std=c++11 -fexceptions"
ldLibs "log"
stl "gnustl_shared"
abiFilter "armeabi-v7a"
}
}
}

这似乎递归地构建它找到的 jni 文件夹中的所有内容,并将其放置在“niceprocess”模块中。

我的主要问题是 - 是否有一种方法可以控制哪些模块将使用哪些文件构建,并构建多个模块,每个模块具有不同的 cFlags,并能够将一个模块的头文件#include header 放入另一个模块。

我知道这一切都可以通过 android.mk 来完成,但我想知道是否可以使用 gradle 系统。

最佳答案

不,没有办法控制将使用哪些文件构建哪些模块以及许多其他内容。截至目前,Android Studio 的 gradle 插件仅支持 NDK 构建的一种非常基本的情况 - 只有一个模块,没有任何依赖项,完全从位于“jni”文件夹中的一组源文件编译。

您可以自行评估 - 只需查看 NdkOptions.javaNdkCompile.groovy .在第一个文件中,您可以看到 gradle 脚本中 NDK 支持的唯一选项是“moduleName”、“cFlags”、“ldLibs”、“STL”和“abiFilters”。在第二个文件中,您可以看到 Android.mk 是如何使用这些选项生成的,没有任何机会对其进行超出该选项允许的自定义。

如果您需要对原生源构建进行更智能的控制,则需要在 gradle 脚本中禁用 NDK 支持并使用 ndk-build 的显式调用。这样你需要在 Android.mk 中手动指定一组源文件,然后将它们添加到 Android Studio 的源代码树中,这不是很方便,但你可以更好地控制模块、它的依赖项、它的构建选项等。

关于android - Android Studio中ndk-build自动调用的使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28182244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com