У меня есть следующая ситуация: Я переношу часть приложения с использованием OpenSSL для шифрования AES, у меня есть все, что компилируется, но компоновщик терпит неудачу. Ситуация следующая: 1. Я написал обертку JNI, который просто делает:openSSL с использованием проблем NDK от Android
private native String cipherString(String plainData, int datasize, String password, int passSize);
private native String decipherString(String cipheredData, int datasize, String password, int passSize);
рядом у меня есть файл C++, который я называю, который имеет надлежащее JNI синтаксисом, который переводит jstring на символ * и все другие необходимы преобразований и делает вызов другому файлу cpp, который фактически импортирует заголовки openssl (присутствует и учитывается) и вызывает методы openssl для шифрования и расшифровки.
Поэтому, когда я вызываю ndk-build, он создает все большие пальцы, поэтому компилятор правильно их компилирует. следующий я должен был порт OpenSSL для андроид, и я использовал этот OpenSSL for Android , который работает как полукокс с помощью простого НДК-сборки (в корне проекта, конечно) и строит libssl.so и libcrypto.so
Так что мне нужно подключить два. Мне сложно подключить скрипты сборки, так что один ndk-build компилирует и связывает все (я бы оценил простой пример проекта, если у кого-то есть время для него)
поэтому я скопировал скомпилированные libssl и libcrypto .so файлы в jni/includes/prebuilt и хочу включить их в проект, чтобы компоновщик смог наконец создать lib, который я буду использовать в конце.
У меня есть следующий файл Android.mk
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)
И при вызове НДК-билд я получаю dissapointing
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.
как вы уже можете догадаться, путь абсолютно неправильно, и что путает я то, что $ {LOCAL_PATH} возвращает правильный путь для первой партии включений и совершенно неправильный для .so-файлов ... Любая помощь была бы действительно оценена!
Если она решается, вы можете пометить свое решение как ответ ... все лучшее –
После применения исправления к __gsml я получаю ошибку: Android NDK: Ваш APP_BUILD_SCRIPT указывает на неизвестный файл: /Android.mk д : /Development/android/android-ndk-r8c/build/core/add-application.mk: 165: *** Android NDK: Отмена .... Стоп. На какой платформе вы запустили это? Окна? Возможно ли загрузить libcrypto.so libssl.so где-нибудь? – tmanthey
вы можете показать нам, как вы связали все это в файле Android.mk? –