Неопределенная ошибка ссылки библиотеки BorssslAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Неопределенная ошибка ссылки библиотеки Borsssl

Сообщение Anonymous »

Мы создали библиотеку Boringssl для Android в среде Mac.
cmake -DANDROID_ABI=armeabi-v7a \
-DANDROID_PLATFORM=android-21 \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake \
-GNinja -B build

ninja -C build

Сборка прошла успешно, были созданы libcrypto.a и libssl.a.
Теперь, чтобы использовать ее в нашем проекте Android, мы скопировали этот файл .a в каталог нашего проекта и создали CMakeLists.txt.
cmake_minimum_required(VERSION 3.18.1)

# OpenSSL 라이브러리 경로 설정
set(OPENSSL_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/opensslSO/include")
set(OPENSSL_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/opensslSO/libs")

include_directories(
${OPENSSL_INCLUDE_DIR}
)

add_library(crypto STATIC IMPORTED)
set_target_properties(crypto PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBRARY_DIR}/libcrypto.a)

add_library(ssl STATIC IMPORTED)
set_target_properties(ssl PROPERTIES IMPORTED_LOCATION ${OPENSSL_LIBRARY_DIR}/libssl.a)

add_library( native_lib

# Sets the library as a shared library.
SHARED

# Provides a relative path to your source file(s).
my_native_file_path
)

find_library( log-lib
GLESv1
log
)

target_link_libraries( native_lib
crypto
ssl
android
log
EGL
GLESv1_CM
)

opensslSO/include содержит файлы заголовков include/openssl Boringssl, а opensslSO/libs содержит файлы .a.
Я не думаю, что это проблема, но при компиляции я получаю неопределенную ошибку ссылки для файла заголовка в каталоге include.
Похоже, что библиотека не импортируется должным образом. Знаете, как решить эту проблему?
Ссылки на gradle и Boringssl прилагаю
defaultConfig {
minSdkVersion 21
targetSdkVersion 34
}

task wrapper(type: Wrapper){
gradleVersion = '7.2'
}

externalNativeBuild {
// Encapsulates your CMake build configurations.
cmake {
// Provides a relative path to your CMake build script.
path "CMakeLists.txt"
version '3.18.1'
}
}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
minifyEnabled true
useProguard true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86_64'
}
}
}

мои переменные среды
export PATH="$PATH:$HOME/flutter/bin"
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
export ANDROID_NDK_ROOT=$HOME/Library/Android/sdk/ndk/21.1.6352462

export PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/darwin-x86_64/bin:$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$PATH


Подробнее здесь: https://stackoverflow.com/questions/782 ... ence-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»