Android集成OpenSSL实现加解密-集成

  1. 导入so

    将编译生成的 OpenSSL 动态库文件(.so 文件)复制到你的 Android 项目的 libs 目录中

  2. 导入头文件

    将编译生成的include文件夹导入到项目中

  3. build.gradle添加配置

    复制代码
       defaultConfig {
            ......
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
            externalNativeBuild {
                cmake {
                    cppFlags "-std=c++11 -frtti -fexceptions"
                    //目标平台,若需要更多平台的请自行配置
                    abiFilters 'arm64-v8a'
                }
            }
        }
    
       ......
        sourceSets {
            main {
                jniLibs.srcDirs = ['src/main/jniLibs']
            }
        }
        externalNativeBuild {
            cmake {
                path file('src/main/cpp/CMakeLists.txt')
                version '3.22.1'
            }
        }
  4. 修改CMakeLists.txt

    复制代码
    cmake_minimum_required(VERSION 3.22.1)
    
    project("jnitest")
    
    set(JNI_LIBS_DIR ${CMAKE_SOURCES_DIR}/src/main/jniLibs)
    
    add_library( # Sets the name of the library.
            jnitest
    
            # Sets the library as a shared library.
            SHARED
    
            # Provides a relative path to your source file(s).
            native-lib.cpp)
    
    # 1、添加导入库,类似给每个库起个名字
    add_library(
            openssl # 模块名称,随意
            SHARED # 表示共享库
            IMPORTED # 表示当前是导入库
    )
    add_library(
            ssl # 模块名称,随意
            SHARED # 表示共享库
            IMPORTED # 表示当前是导入库
    ) 
    # 2、将上一步声明的库名字,和具体的库(so文件)关联到一起
    se t_target_properties(
             openssl # 库的名称
             PROPERTIES IMPORTED_LOCATION # 表示当前库是导入的方式
             ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libcrypto.so # so 动态库的具体路径 
    )
    set _target_properties(
            ssl # 库的名称
             PROPERTIES IMPORTED_LOCATION # 表示当前库是导入的方式
            ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libssl.so # so 动态库的具体路径 
    ) 
    
    # 3 、如果第三方库有头文件的,为了在编码的时候可以有提示,使用下面的指令进行指定
    # 指定头文件目录,指定后编译器会扫描这个目录,编码时可以进行提示
    include_directories( ${CMAKE_SOURCE_DIR}/include)
    
    find_library( # Sets the name of the path variable.
            log-lib
    
            # Specifies the name of the NDK library that
            # you want CMake to locate.
            log)
    
    target_link_libraries(jnitest openssl ssl  ${log-lib})
相关推荐
帅帅的记忆1 小时前
uniapp项目调用原生android studio的sdk文件(即aar文件)
android·uni-app·android studio
用户69371750013842 小时前
Kimi K3 综合能力处于全球第一梯队
android·前端·后端
阿pin2 小时前
Android随笔-BroadcastReceiver
android·broadcast
pengyu3 小时前
【Kotlin 协程修仙录 · 金丹境 · 后阶】 | 异常防火墙:supervisorScope 与异常隔离的终极奥义
android·kotlin
cheng2191014 小时前
Cocos Creator打包安卓并支持 Android 16KB 页面大小
android
夏沫琅琊4 小时前
Jetpack Compose + 原生 PDF API 从零搭一个 Android 工具应用 (一)
android·pdf·kotlin
聚美智数5 小时前
常见疾病查询-疾病症状—疾病介绍-疾病大全-疾病治疗查询API接口介绍
android·java·数据库
私人珍藏库14 小时前
[Android] 会计快题库 -财会职称考试刷题学习
android·人工智能·学习·app·软件·多功能
安卓修改大师20 小时前
安卓修改大师 vs MT管理器:反编译工具终极对决与全景解析
android·人工智能·机器翻译
程序员小八77721 小时前
从 0 学习 MySQL 索引——7 大核心精讲
android·学习·mysql