如何使用 android studio 从 c 源代码创建 .a 文件而不是 .so?
如果可能,那么我也想知道如何加载它们以及使用 .a 文件代替的优缺点。所以
最佳答案
Android 依赖 Java 的 System.loadLibrary()
加载 native 代码。此调用使用 dl*
family of functions加载动态库(通常与扩展名 .so
相关联)。
动态库可以指定其他库作为它的依赖,依次加载。
打开该库后,JVM 会探测它是否具有特制名称的函数,这些名称已绑定(bind)到相应的 Java 方法。
相比之下,.a
文件是一个静态库。它只是目标文件 (.o
) 的存档,供编译时通过static 链接使用。
回答您的问题:是的,您可以更改您的 CMakeLists.txt 以创建静态库,但最终您必须将它们链接到一个动态 .so 中才能在 Android 中加载它.例如参见 this answer 的底部其中许多预建静态库与单个 .cpp
文件链接在一起以生成动态库。
关于android - 创建 .a 文件而不是 .so 使用 android studio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542406/