0
我为Android构建了OpenSSL(使用ndk-build),并将其链接到我的程序。编译和链接工作,但我得到一个运行时错误UnsatisfiedLinkError。 更具体地说,在此代码的程序中断:无法为Android安装LoadLibrary ssl,越来越UnsatifiedLinkError
public class TestActivity extends Activity
{ // load the library - name matches jni/Android.mk
static {
System.loadLibrary("crypto2");
System.loadLibrary("ssl2"); // <=BREAKS HERE!
System.loadLibrary("Test");
}
它加载SSL2的时候,特意打破,所以现在看来,这是能够加载crypto2。 我想我需要告诉ssl2它使用cryto2,我试图在Android.mk文件上做到这一点,但它没有帮助。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto2
LOCAL_SRC_FILES := OpenSSL/libcrypto2.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libssl2
LOCAL_SRC_FILES := OpenSSL/libssl2.so
LOCAL_SHARED_LIBRARIES := libcrypto2
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) # Here we give our module name and source file(s)
LOCAL_C_INCLUDES := D:/DevelopTools/OpenSSL-WIN32/include $(LOCAL_PATH)/../../../Framework/Applications/FW2Prototype $(LOCAL_PATH)/../../../Graphics/Libraries/Common $(LOCAL_PATH)/../../../Input/Libraries/Common $(LOCAL_PATH)/../../../Audio/Libraries/Common $(LOCAL_PATH)/../../../Audio/Libraries/NullAudio $(LOCAL_PATH)/../../../Network/Libraries/Common
LOCAL_MODULE := Test
LOCAL_SRC_FILES := Test.cpp Reference.cpp JNINetwork.cpp JNIGraphics2D.cpp JNIInput.cpp JNIAudio.cpp Applications/FatalWars2/FatalWars2.cpp /../../../Audio/Libraries/NullAudio/NullAudio.cpp
LOCAL_SHARED_LIBRARIES := libcrypto2 libssl2
include $(BUILD_SHARED_LIBRARY)
任何想法是什么错?
谢谢,
为什么不使用[javax.net.ssl](http://developer.android.com/reference/javax/net/ssl/package-summary.html)?它是内置的。 – kichik 2011-12-16 17:32:36
这是可能的,但我认为现在使用本地选项会更容易,因为我已经实现并测试了代码。 – user1097185 2011-12-16 20:22:47