Невозможно загрузить библиотеку ssl для Android, получая UnsatifiedLinkError - PullRequest
0 голосов
/ 16 декабря 2011

Я собрал OpenSSL для Android (используя ndk-build) и связал его с моей программой.Компиляция и компоновка работают, но я получаю ошибку во время выполнения UnsatisfiedLinkError.Точнее говоря, программа ломается по этому коду:

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) 

Есть идеи, что не так?

Спасибо

1 Ответ

0 голосов
/ 18 декабря 2011

Я "решил" это.Я просто встроил openssl в один файл so.Я построил как crypto, так и ssl статически, поэтому зависимость ssl от crypto была скрыта внутри статической связи.Проблема, очевидно, в том, что я не смог загрузить предварительно собранную разделяемую библиотеку ssl, потому что она зависела от другой предварительно собранной разделяемой библиотеки (crypto).Возможно, можно как-то загрузить такие библиотеки, но я решил просто зашифровать криптографическую ссылку в ssl, а затем в общую библиотеку openssl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...