Android下使用Openssl库

Android下使用Openssl库,第1张

概述1.编译Openssl源代码,生成.so库(笔者使用环境为Ubuntu18.04amd64桌面版,android_ndk_r19c64位版):  下载Openssl源代码,进入源码环境然后运行配置脚本,设置编译参数,开始编译:   exportANDROID_NDK=/home/gj/android-ndk-r19cexportPATH=/home/gj/android-ndk-r1

1.编译Openssl源代码,生成.so库(笔者使用环境为Ubuntu 18.04 amd64 桌面版,androID_ndk_r19c 64位版):

    下载Openssl源代码,进入源码环境然后运行配置脚本,设置编译参数,开始编译:    

    export ANDROID_NDK=/home/gj/androID-ndk-r19c    export PATH=/home/gj/androID-ndk-r19c/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH    ./Configure androID-arm shared    make SHliB_EXT=.so -j8

  生成的.so保存一下。如果想生成其他ABI架构的so,可以clean后再配置、编译:

    make clean    ./Configure androID-arm64 shared    make SHliB_EXT=.so -j8

  

2.新建AndroID项目(注意要选中Native C++这个。笔者使用环境为AndroID Studio 4.0,JDK1.8,gradle 5.6.4,gradle plugin3.4.2),复制openssl源代码目录下所有头文件(include目录),以及上一步生成的所有.so到AndroID项目中。

项目地址:https://github.com/areful/NdkUseOpenssl

 

native-lib.cpp示例展示了如何使用openssl库进行RSA加解密、生成签名并验证签名。

 

代码太多,就不一一列出来内容了,可以clone代码查看内容,只列一下build.gradle和CMakeLists.txt主要内容:

build.gradle:

androID {    ......    defaultConfig {        ......        externalNativeBuild {            cmake {                cppFlags "-std=c++11 -frtti -fexceptions"                arguments '-DANDROID_STL=c++_shared'            }            ndk {                stl = "c++_shared"                abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'            }        }    }    ......    sourceSets {        main {            jnilibs.srcDirs = ['${PROJECT_SOURCE_DIR}/libs']        }    }    packagingOptions {        pickFirst '**/*.so'    }    externalNativeBuild {        cmake {            path "src/main/cpp/CMakeLists.txt"            version "3.10.2"        }    }}

  CMakeLists.txt:

# For more information about using CMake with AndroID Studio, read the# documentation: https://d.androID.com/studio/projects/add-native-code.HTMLcmake_minimum_required(VERSION 3.4.1)set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")################################################################ import openssl library files BEGINinclude_directorIEs(include)set(SSL_liB_name ssl)add_library(${SSL_liB_name} SHARED importED)set_target_propertIEs(${SSL_liB_name} PROPERTIES importED_LOCATION ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI}/lib${SSL_liB_name}.so)set(CRYPTO_liB_name crypto)add_library(${CRYPTO_liB_name} SHARED importED)set_target_propertIEs(${CRYPTO_liB_name} PROPERTIES importED_LOCATION ${PROJECT_SOURCE_DIR}/libs/${ANDROID_ABI}/lib${CRYPTO_liB_name}.so)# import openssl library files END###############################################################find_library(log-lib log)add_library(native-lib SHARED        native-lib.cpp        native-lib.h        b64/b64.cpp        b64/b64.h        b64/test_b64.cpp        b64/test_b64.h        rsa/rsa.cpp        rsa/rsa.h        rsa/test_rsa.cpp        rsa/test_rsa.h        common.h)target_link_librarIEs(        native-lib        ssl        crypto        ${log-lib})

  

总结

以上是内存溢出为你收集整理的Android下使用Openssl库全部内容,希望文章能够帮你解决Android下使用Openssl库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1059481.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存