【发布时间】:2018-01-30 06:22:36
【问题描述】:
我在我的项目中使用预构建的 openssl。加载后应用程序崩溃并出现此错误
java.lang.UnsatisfiedLinkError: dlopen failed: could not load library "libcrypto.so.1.0.0" needed by "libPrivateSsl.so"; caused by library "libcrypto.so.1.0.0" not found
我的 android.mk 看起来像这样
LOCAL_PATH := $(call my-dir)
# Prebuilt libssl
include $(CLEAR_VARS)
LOCAL_MODULE := ssl
LOCAL_SRC_FILES := precompiled/libPrivateSsl.so
include $(PREBUILT_SHARED_LIBRARY)
# Prebuilt libcrypto
include $(CLEAR_VARS)
LOCAL_MODULE := crypto
LOCAL_SRC_FILES := precompiled/libPrivateCrypto.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := myLibrary
TARGET_PLATFORM := android-3
LOCAL_SRC_FILES := native-lib.cpp
LOCAL_C_INCLUDES = $(LOCAL_PATH)/include
LOCAL_LDLIBS := -llog
LOCAL_SHARED_LIBRARIES := ssl crypto
include $(BUILD_SHARED_LIBRARY)
在这样的活动中加载库
static {
System.loadLibrary("PrivateSsl");
System.loadLibrary("PrivateCrypto");
System.loadLibrary("myLibrary");
}
我正在使用 Kit-kat 进行 Ubuntu 系统测试。 请帮我解决这个错误。
【问题讨论】:
-
也许将包含 libcrypto.so.1.0.0 的目录添加到您的 LD_LIBRARY_PATH 环境变量中。
-
@john 我没有 libcrypto.so.1.0.0 我有 libcrypto.so ..但是为什么以及如何设置 LD_LIBRARY_PATH?
-
如果你没有 libcrypto.so.1.0.0 那么我会说这是你的问题。但我无法确切地说出你想要做什么。我也不了解为 android 构建的所有细节。
-
您可能需要描述为达到这一点所采取的所有步骤。也许你在这个过程的早期犯了一些错误。
-
@john 我从 git 下载了预构建的 openssl。在那里我得到了 libcrypto.so、libssl.so 和包含一些 c 文件的包含文件夹。我直接在我的项目中使用这些文件。正如 Alex cohn sir 所建议的那样
标签: android c++ android-ndk openssl java-native-interface