openSSL unter Verwendung der NDK-Probleme von Android

Ich habe die folgende Situation, ich portiere ein Stück einer App mit OpenSSL für AES-Verschlüsselung, ich habe alles kompiliert, aber der Linker schlägt fehl. Die Situation ist wie folgt: 1. Ich habe einen JNI-Wrapper geschrieben, der einfach funktioniert:

<code>private native String cipherString(String plainData, int datasize, String password, int passSize);
private native String decipherString(String cipheredData, int datasize, String password, int passSize);
</code>

Als nächstes habe ich eine C ++ - Datei, die die richtige JNI-Sintax hat, die Jstring in char * und alle anderen benötigten Transformationen übersetzt, und rufe eine andere CPP-Datei auf, die tatsächlich OpenSSL-Header (vorhanden und berücksichtigt) importiert und OpenSSL-Methoden aufruft zum Ver- und Entschlüsseln.

Wenn ich ndk-build aufrufe, werden alle Thumbs erstellt, damit der Compiler sie korrekt kompiliert. Als nächstes musste ich openssl für Android portieren, und ich habe dies verwendetOpenSSL für Android das funktioniert wie ein char mit einem einfachen ndk-build (natürlich im root des projekts) und baut die libssl.so und libcrypto.so auf

Also muss ich die beiden verbinden. Ich finde es eine Herausforderung, die Build-Skripte zu verbinden, damit ein ndk-build alles kompiliert und verknüpft. (Ich würde ein einfaches Beispielprojekt begrüßen, wenn jemand die Zeit dafür hat.)

Also habe ich die kompilierten libssl- und libcrypto .so-Dateien in jni / includes / prebuilt kopiert und möchte sie in das Projekt aufnehmen, damit der Linker endlich die lib erstellen kann, die ich am Ende verwenden werde.

Ich habe die folgende Android.mk-Datei

<code>LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
include $(LOCAL_PATH)/includes/build/common.mk
include $(LOCAL_PATH)/includes/build/common_includes.mk
APP_STL := gnustl_static

LOCAL_MODULE    := packer
LOCAL_SRC_FILES := modules/cipher/wrapper.cpp \
                    ... #rest of the cpp code

LOCAL_C_INCLUDES += $(LOCAL_PATH)/includes/openssl 
LOCAL_SHARED_LIBRARIES := $(LOCAL_PATH)/includes/precompiled/libssl.so \
            $(LOCAL_PATH)/includes/precompiled/libcrypto.so 
LOCAL_SHARED_MODULES := sslx cryptox
include $(BUILD_SHARED_LIBRARY)

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sslx
LOCAL_SRC_FILES := $(LOCAL_PATH)/includes/precompiled/libssh.so
include $(PREBUILT_SHARED_LIBRARY)

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cryptox
LOCAL_SRC_FILES := $(LOCAL_PATH)/includes/precompiled/libssh.so
include $(PREBUILT_SHARED_LIBRARY)
</code>

Und wenn ich ndk-build anrufe, bekomme ich eine Enttäuschung

<code>sslx: LOCAL_SRC_FILES points to a missing file. Check that /home/user/Development/Tools/sdk/android/ndk/build/core//home/user/Development/Tools/sdk/android/ndk/build/core/includes/precompiled/libssh.so exists  or that its path is correct. Aborting    .  Stop.
</code>

Wie Sie bereits erraten können, ist der Pfad völlig falsch, und was mich verwirrt, ist, dass $ {LOCAL_PATH} den korrekten Pfad für den ersten Stapel von Includes und einen völlig falschen Pfad für die .so-Dateien zurückgibt. Jede Hilfe wäre sehr willkommen!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage