【发布时间】:2019-07-17 20:54:42
【问题描述】:
我一直在使用 Android 版本的 OpenSSL 1.1.1。在我的模块的 CMake 中,我将 libssl 称为 SHARED 和 IMPORTED 并将其与模块自己的库链接。当使用STATIC lib 时,编译抛出
“未定义对标准输入、标准错误的引用。”
目前,我选择了动态,编译没问题,但运行时出现以下错误:
java.lang.UnsatisfiedLinkError: dlopen failed: library "libssl.so" not found.
对象在那里并且有相关的函数定义。
使用this 进行构建。目标 API 级别 26 并使用 NDK 版本 19。
也许我正在使用错误的选项进行构建?兼容性?还是应该降低目标版本?
【问题讨论】:
-
请确保您的
.apk在每个 目录/lib/%BUILD_TARGET%中包含libssl.so,其中BUILD_TARGET来自您的构建脚本(BUILD_TARGETS="armeabi armeabi-v7a arm64-v8a x86 x86_64")。确保您的目标设备支持任何该架构。还请发布加载本机库的代码。 -
它实际上没有显示 libssl.so 和 libcrypto.so,我想这可能不会导致它们被导入并链接到我自己的库。但是,奇怪的是现在我自己的 lib(libsecurity.so) 没有出现,所以显然那里是错误的。谢谢你。此外,我不会以 JNI 格式包装 OpenSSL 并将它们加载到 Java 端。我在 C(安全模块)中有函数调用,只有头文件和库链接。不行吗?
标签: android android-ndk openssl