【问题标题】:What is a Module in context of an Android JNI App?什么是 Android JNI 应用程序上下文中的模块?
【发布时间】:2013-02-01 08:21:29
【问题描述】:

我是 JNI、C++ 和制作文件的新手。在我的示例 Android-JNI-C++ 项目的 Application.mk 中,它们是 APP_MODULES 属性。

Android NDK documentation 只是说

APP_MODULES

这个变量是可选的。如果未定义,NDK 将 默认构建 all 由你的 Android.mk 声明的模块,并且 它可能包含的任何子makefile。

如果定义了 APP_MODULES,它必须是一个以空格分隔的模块列表 出现在 Android.mk 的 LOCAL_MODULE 定义中的名称 文件。请注意,NDK 将计算模块依赖项 自动。

我从other questions on StackOverflow 知道,每个模块都需要自己的Android.mk

但是在这种情况下,什么是模块?拥有多个模块而不是只有一个模块有什么好处?

【问题讨论】:

  • 同积木不同。您可以对模块进行条件编译,也可以在模块内进行条件编译,只需稍作改动即可缩短编译时间。

标签: android android-ndk makefile java-native-interface


【解决方案1】:

您可以在单个 Android.mk 中定义多个模块。您构建或复制的每个库(静态库或共享库)(称为预构建库)都是一个单独的模块。

在 Android 上将代码拆分到单独的库中的主要原因与在所有其他平台上相同:divide et impera。在 NDK 构建方案中,还有一种情况:为每个模块指定编译参数要容易得多,所以如果需要mix -std=c99 and -std=c++0x,简单的解决方法是使用两个静态库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多