Android NDK 中的静态库交叉依赖

Posted

技术标签:

【中文标题】Android NDK 中的静态库交叉依赖【英文标题】:Static library cross-dependencies in Android NDK 【发布时间】:2014-04-01 15:48:41 【问题描述】:

我正在开发一个使用大量静态库的 android NDK 应用程序。其中一些静态库相互依赖(或特别是头文件),但没有循环引用。在依赖库的 Android.mk 文件中,我原以为我可以使用

$(调用导入模块,#name)

... 从一个静态库到另一个,但它似乎不起作用,因为我在编译时缺少头文件错误。到目前为止,我已经通过将依赖项“include”目录手动添加到 LOCAL_C_INCLUDES 变量来解决这个问题,但是在其他模块的相对路径上下运行感觉有点混乱。

似乎必须有更好的方法来做到这一点。我知道 LOCAL_EXPORT_C_INCLUDES 在从我的主共享库(由 NativeActivity 加载的库)中引用静态库时确实有效,但它似乎在静态库和静态库之间不起作用。

我只是以某种方式设置错误吗?这些模块是否应该能够相互导入并自动获取包含?

【问题讨论】:

【参考方案1】:

似乎除了导入依赖模块之外,我还需要将依赖模块添加到依赖 Android.mk 的 LOCAL_STATIC_LIBRARIES 变量中。我曾假设静态库列表仅用于链接代码,但它显然也会影响标头导出。

【讨论】:

以上是关于Android NDK 中的静态库交叉依赖的主要内容,如果未能解决你的问题,请参考以下文章

NDK下如何使用第三方静态库?

Android NDK编译如何强制使用libc++.a的静态链接库

android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)

(OK) 编译libiconv-1.14(静态库)—CentOS 7— android-ndk

Android Studio 3.0.1不会构建NDK静态库

Android NDK 开发CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )