繁体   English   中英

如何导入预构建的 *.so 库并从新项目中调用它?

[英]How to Import a prebuilt *.so library and call it from the new project?

我目前正在开发一个将使用预构建共享库的项目。 但是我对导入预构建库的过程以及从新项目java类调用预构建中的方法感到非常困惑。

让我们说:

  1. 项目 A 为每个 ABI_ARCH 生成了 libA.so 文件。

  2. 我正在尝试在我的项目 B 中使用它们。

导入它们的正确方法是什么,以及如何调用在 A 中声明的 libA.so 的方法。换句话说,如何使用 libA.so 的公开 API?

最近,Google 预先发布了一项新功能,可以轻松重用预先构建的本机库。 如果您还没有准备好跳转到 Android Studio 4.0,和/或为libA构建必要的AAR ,您可以使用旧方法。

根据您的项目 B的性质,有三个不同的轨道。

  1. 如果它只从 Java/Kotlin 加载libA.so ,那么在build.gradle 中指定jniLibs.src就足够了: How can I add .so files to an android library project using gradle 0.7+ 请注意,必须将具有在libA.so中实现的本机方法的所有类复制到项目 B,并保持其完全限定名称不变。

  2. 如果第二个项目使用ndk-build ,则应include $(PREBUILT_SHARED_LIBRARY) NDK指南包含更多最新的详细信息。

  3. 如果项目使用CMake ,则使用add_library(… SHARED IMPORTED) Android Srudio 文档解释了不同的场景。

重要的是要强调ndk-buildCMake在处理预构建.so库方面的细微差别。 虽然ndk-build会将这些库与它构建的所有库一起复制到安装目录,但CMake不提供此帮助 因此,您可能会将包含预构建库的文件夹添加到jniLibs.src中的jniLibs.src (如上面的情况 1)。

在所有 3 种情况下,请确保您打包到 APK 或 AAB 中的库没有调试符号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM