我的申请赢了';Android上使用OpenSSL的t链接
我正在我的Android项目中使用OpenSSL 这是我的设置: 安卓工作室3.2 NDK版本:18.0.5002713 这是我的应用程序的我的申请赢了';Android上使用OpenSSL的t链接,android,c++,android-ndk,openssl,Android,C++,Android Ndk,Openssl,我正在我的Android项目中使用OpenSSL 这是我的设置: 安卓工作室3.2 NDK版本:18.0.5002713 这是我的应用程序的build.gradle文件: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' def my_openssl_dir = getRootDir().toString() + "/b
build.gradle
文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
def my_openssl_dir = getRootDir().toString() + "/build-openssl-android/openssl-lib"
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.my-company.my-app"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++17 -frtti -fexceptions"
arguments '-DANDROID_STL=c++_shared'
arguments '-DMY_OPENSSL_DIR=' + my_openssl_dir
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
sourceSets {
main {
jniLibs.srcDirs = [
]
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.2.30'
}
cmake_minimum_required(VERSION 3.4.1)
include_directories( src/main/cpp/
)
add_library( # Sets the name of the library.
my-library
SHARED
src/main/cpp/my-code.cpp
)
find_library (log-lib log)
add_library(libcrypto STATIC IMPORTED)
set_target_properties(libcrypto PROPERTIES IMPORTED_LOCATION
${MY_OPENSSL_DIR}/${ANDROID_ABI}/libcrypto.a)
add_library(libssl STATIC IMPORTED)
set_target_properties(libssl PROPERTIES IMPORTED_LOCATION
${MY_OPENSSL_DIR}/${ANDROID_ABI}/libssl.a)
target_include_directories(nativ PRIVATE
${MY_OPENSSL_DIR}/${ANDROID_ABI}/include
)
target_link_libraries( # Specifies the target library.
my-library
libcrypto
libssl
${log-lib}
)
这是我的CMakeLists.txt
文件:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
def my_openssl_dir = getRootDir().toString() + "/build-openssl-android/openssl-lib"
android {
compileSdkVersion 27
defaultConfig {
applicationId "com.my-company.my-app"
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++17 -frtti -fexceptions"
arguments '-DANDROID_STL=c++_shared'
arguments '-DMY_OPENSSL_DIR=' + my_openssl_dir
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
sourceSets {
main {
jniLibs.srcDirs = [
]
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.2.30'
}
cmake_minimum_required(VERSION 3.4.1)
include_directories( src/main/cpp/
)
add_library( # Sets the name of the library.
my-library
SHARED
src/main/cpp/my-code.cpp
)
find_library (log-lib log)
add_library(libcrypto STATIC IMPORTED)
set_target_properties(libcrypto PROPERTIES IMPORTED_LOCATION
${MY_OPENSSL_DIR}/${ANDROID_ABI}/libcrypto.a)
add_library(libssl STATIC IMPORTED)
set_target_properties(libssl PROPERTIES IMPORTED_LOCATION
${MY_OPENSSL_DIR}/${ANDROID_ABI}/libssl.a)
target_include_directories(nativ PRIVATE
${MY_OPENSSL_DIR}/${ANDROID_ABI}/include
)
target_link_libraries( # Specifies the target library.
my-library
libcrypto
libssl
${log-lib}
)
我在编译时遇到以下错误:
生成命令失败。执行进程时出错
/home/david/Android/Sdk/cmake/3.6.4111459/bin/cmake带参数
{--构建
/home/david/dev/android/MyApplication/app/.externalNativeBuild/cmake/debug/x86_64
--目标my library}[1/1]链接CXX共享库../../../../../../build/mediates/cmake/debug/obj/x86_64/libnativ.so
失败::&&
/home/david/Android/Sdk/ndk bundle/toolschains/llvm/prebuild/linux-x86_64/bin/clang++
--target=x86_64-none-linux-android21--gcc toolschain=/home/david/Android/Sdk/ndk bundle/toolschains/x86_64-4.9/prebuild/linux-x86_64
--sysroot=/home/david/Android/Sdk/ndk bundle/sysroot-fPIC-isystem/home/david/Android/Sdk/ndk bundle/sysroot/usr/include/x86_64-linux-Android
-g-DANDROID-fffunction sections-funwind tables-fstack protector strong-no规范前缀-Wa,--noexecstack-Wformat-Werror=format security-std=c++11-std=c++17-frti-feexceptions-O0-fno limit debug info-Wl,--exclude libs,libgcc.a-Wl,--exclude libs,libatomic.a-nostlib++--sysroot/home/david/Android/Sdk/ndk bundle/platforms/Android-21/arch-x8664
-Wl,-build id-Wl,-warn shared textrel-Wl,-致命警告-L/home/david/Android/Sdk/ndk bundle/sources/cxx stl/llvm libc++/libs/x8664
-Wl,--没有未定义的-Wl,-z,noexecstack-Qunused参数-Wl,-z,relro-Wl,-z,现在-shared-Wl,-soname,libnativ.so-o../../../../../build/mediates/cmake/debug/obj/x86_64/libnativ.so
CMakeFiles/my library.dir/src/main/cpp/my code.cpp.o
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_64/libcrypto.a
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_64/libssl.a
/home/david/Android/Sdk/ndk bundle/platforms/Android-21/arch-x86_64/usr/lib64/liblog.so
-latomic-lm“/home/david/Android/Sdk/ndk bundle/sources/cxx stl/llvm libc++/libs/x86_64/libc++_shared.so”
&& :
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
是否加载内置压缩:错误:未定义对的引用
“COMP_get_type”
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
是否加载内置压缩:错误:未定义对的引用
“公司名称”
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
ssl\u密码\u获取\u evp:错误:未定义对“FIPS\u模式”的引用
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
ssl\u cipher\u get\u evp:错误:未定义对“evp\u enc\u null”的引用
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
ssl\u创建\u密码\u列表:错误:未定义对“FIPS\u模式”的引用
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
ssl\u创建\u密码\u列表:错误:未定义对“FIPS\u模式”的引用
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
SSL_COMP_add_compression_方法:错误:未定义对的引用
“COMP_get_type”
/home/david/dev/android/MyApplication/build openssl android/openssl lib/x86_64/libssl.a(ssl_ciph.o):ssl_ciph.c:函数
SSL_COMP_get_name:错误:未定义对“COMP_get_name”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-conf.o):ssl_-conf.c:函数
cmd_VerifyCAFile:错误:未定义对的引用
“X509\存储\加载\位置”
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-conf.o):ssl_-conf.c:函数
cmd_ChainCAPath:错误:未定义对的引用
“X509\存储\加载\位置”
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-conf.o):ssl_-conf.c:函数
cmd_ChainCAFile:错误:未定义对的引用
“X509\存储\加载\位置”
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-conf.o):ssl_-conf.c:函数
cmd_VerifyCAPath:错误:未定义对的引用
“X509\存储\加载\位置”
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
SSL\u读取:错误:未定义对“ASYNC\u WAIT\u CTX\u new”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
SSL_peek:错误:未定义对“ASYNC_WAIT_CTX_new”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
SSL\u写入:错误:未定义对“ASYNC\u WAIT\u CTX\u new”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
SSL\u关机:错误:未定义对“ASYNC\u WAIT\u CTX\u new”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
SSL_CTX_新建:错误:未定义对“FIPS_模式”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
ssl_clear_cipher_ctx:错误:未定义对“COMP_ctx_free”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
ssl_clear_cipher_ctx:错误:未定义对“COMP_ctx_free”的引用
/home/david/dev/android/MyApplication/build openssl-android/openssl-lib/x86_-64/libssl.a(ssl_-lib.o):ssl_-lib.c:函数
SSL