Han*_*lec 3 java java-native-interface android android-ndk .so
我目前正在开发一个将使用预构建共享库的项目。但我对导入预构建库以及从新项目 java 类调用预构建库中的方法的过程感到非常困惑。
比方说:
项目 A 已为每个 ABI_ARCH 生成了 libA.so 文件。
我正在尝试在我的项目 B 中使用它们。
导入它们的正确方法是什么,以及如何调用 A 中声明的 libA.so 的方法。换句话说,如何使用 libA.so 公开的 API?
最近,谷歌预发布了一项新功能,可以轻松重用预构建的本机库。如果您还没有准备好跳转到 Android Studio 4.0 和/或为libA构建必要的AAR,您可以使用旧方法。
\n\n共有三种不同的轨道,具体取决于您的项目 B的性质。
\n\n如果它只从 Java/Kotlin 加载libA.sojniLibs.src ,则在build.gradle中指定就足够了:How can I add .so files to an android library project using gradle 0.7+。请注意,所有具有在libA.so中实现的本机方法的类都必须复制到项目 B,并保持其完全限定名称不变。
如果第二个项目使用ndk-build,您应该include $(PREBUILT_SHARED_LIBRARY). NDK指南提供了更多最新详细信息。
如果项目使用CMake,则使用add_library(\xe2\x80\xa6 SHARED IMPORTED). Android Srudio文档解释了不同的场景。
重要的是要强调ndk-build和CMake在处理预构建.so库方面的微小差异。虽然ndk-build会将这些库及其构建的所有库复制到安装目录,但CMake不提供此帮助。因此,您可能会将保存预构建库的文件夹添加到build.ghradlejniLibs.src中(如上面的情况 1 所示)。
在所有 3 种情况下,请确保打包到 APK 或 AAB 中的库已去除调试符号。
\n| 归档时间: |
|
| 查看次数: |
4192 次 |
| 最近记录: |