可以使用从不同的 Android NDK 构建的静态库吗?

Possible to use a static library built from a different Android NDK?

我正在开发的 Android 应用程序完全用 C++ 编写。我需要将它与同样用 C++ 编写的静态库集成。在任何项目中都没有对 STL 的依赖。

静态库使用cmake构建。不幸的是,该应用程序基于 Android NDK 的旧 AOSP 版本,不支持 cmake。

我在另一个目录中也有更新版本的 Android NDK。此版本支持 cmake 工具链。

我想我会针对新的 NDK 构建静态库并在我的主项目中使用它。两个项目的 ABI 相同 - armv7a。

我已经用示例代码测试了这个逻辑。它似乎工作。我可以从我的主应用程序调用静态库中的方法。

此外,不存在名称修改问题。

我的问题是我是否忽略了任何问题。

我认为用于构建源代码的编译器不同应该无关紧要。只要他们生产的是 arm 兼容的代码,我应该能够集成它们。

事实上,我正在使用的另一个库 gstreamer 可以作为预构建的二进制文件在 https://gstreamer.freedesktop.org/data/pkg/android.

下载

请指教

对于那些感兴趣的人来说,混合 NDK 似乎不是问题,只要您遵循特定的准则。其中一些列在 https://developer.android.com/ndk/guides/cpp-support.

基本上,如果你的项目是基于'C'的,那是没有问题的。但是,如果您使用的是C++,则一定不能使用STL。

我已经成功地使用两个 NDK 构建了我的部分代码,但我没有看到任何 link 时间或运行时错误。