, Обратите особое внимание на скрипт cmake CMakeLists.txt и скрипты gradle app / build.gradle и gen-libs / build.gradle. Я надеюсь это тебе поможет

я есть большая библиотека файлов C, которая использует OpenSSL, и я очень плохо знаком с работой с нативными библиотеками, и особенно плохо знаком с работой с Android. Мне удалось реализовать эту библиотеку на iOS без проблем.

Я искал в Интернете учебники / информацию о том, как это сделать, но до сих пор я не нашел ничего, что мог бы понять. Это все очень смущает меня.

По сути, я пытаюсь выяснить, как скомпилировать библиотеку файлов C в нативную библиотеку, используя NDK, и использовать скомпилированную библиотеку с приложением imy android.

Из того, что я понимаю, мне нужен собственный файл cmake для самого андроида, но я не знаю, с чего начать, и документация, которую я нашел, невероятно трудна для понимания.

Итак, мне нужна помощь в понимании процесса компиляции библиотеки в следующей усадьбе:

Скомпилируйте библиотеку, связав ее с openssl и libcrypto, используя Gradle и CMakeLists.txt, и свяжите окончательную библиотеку с моим проектом Android Studio.Быть в состоянии сделать вызовы к собственным функциям в этих библиотеках из моего кода Java. (Я понимаю, что для этого требуется JNI Java Wrapper)

(Мне уже удалось собрать libssl и libcrypto для всех архитектур, которые требуются для Android, но я не уверен, что делать с.a/.so файлы.)

Любая помощь в этом вопросе была бы невероятно признательна.

Спасибо

РЕДАКТИРОВАТЬ:

Мне удалось создать несколько библиотечных файлов со следующим.

Структура файла:

.idea
app
build
gradle
jni    <--- I made this folder specifically fo this.
    Android.mk <-- This is the important file.
    include
        openssl
            <openssl header files>
    libs
        arm64-v8a
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        armeabi
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        armeabi--v7a
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        mips
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        mips64
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        x86
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
        x86_64
            libcrypto.a
            libcrypto.so
            libssl.a
            libssl.so
    src <--- These are example files that i used to build this with.
        myc_files.c
        myother_c_files.c
        myc_heades.h
        myother_c_headers.h

Затем я использовал следующее в Android.mk для генерации некоторых библиотек, запустивndk-build.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Select from arm64-v8a armeabi armeabi-v7a mips mips64 x86 x86_64
ARCH := armeabi

APP_UNIFIED_HEADERS := true

#APP_ABI := $(ARCH)
# TARGET_ARCH := $(ARCH)
TARGET_PLATFORM := android-14

SRC_DIR := $(LOCAL_PATH)/src
HDR_DIR := $(LOCAL_PATH)/include
LIB_DIR := $(LOCAL_PATH)/libs

LOCAL_C_INCLUDES := $(HDR_DIR)
LOCAL_MODULE := myclib
LOCAL_SRC_FILES := $(SRC_DIR)/myc_files.c $(SRC_DIR)/myother_c_files.c
LOCAL_LDLIBS += -L$(LIB_DIR)/$(ARCH) -lssl -lcrypto

include $(BUILD_STATIC_LIBRARY)

Библиотеки были помещены вPROJECT/obj/local а такжеЯ понятия не имею, куда идти отсюдаили, если этот файл Android.mk на самом деле правильно собрал библиотеки.

Ответы на вопрос(3)

Ваш ответ на вопрос