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})
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/312928.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20231231_小米音箱接入GPT

参考资料: GitHub - yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker *.设置运行脚本权限 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned *.配置小米音箱 ()pip install miservice_fork -i https://pypi.tuna.tsinghua.edu.cn/sim…

TikTok真题第11天 | 1249.移除无效的括号、23.合并K个升序链表、773.滑动谜题

今天开始整hard题,果然费时。 1249.移除无效的括号 题目链接:1249.minimum-remove-to-make-valid-parentheses 解法: 这个题用栈来处理,用栈来记录左括号的位置,同时用一个向量来记录左括号和右括号是否有效&#x…

Navicat里修改表名和字段名的方法

一 修改表名 如图右键点击表名,选择“重命名”,输入新表名后,再敲回车键就可以保存。注意:新表名不能与已经有的表名重复。 二 修改字段名字及类型 第一步 如图右键点击表名,选择“设计表” 第二步 点击字段名字就可…

二叉堆的简单板子+理解+例题

首先,我们先要了解堆是什么? 堆:是一种高级树状数据结构,是一种完全二叉树。 (完全二叉树指的是,除了叶子节点,每个节点均有左右两个子节点的树状结构) 而,二叉堆是堆的最…

古有华山论剑,今有流程之争|谁在误导人?

有意思,今天被人怼了,说我误导人。 起因是我前些天写过两篇文章,第一篇是:Nextflow生物信息流程(一):简介 一个入门帖子,反响平平。我原本也是打算好好学习一下 Nextflow 来着&#…

Deeplearning4j 实战 (22):基于DSSM的语义匹配建模

Deeplearning4j 实战 (22):基于DSSM的语义匹配建模 Eclipse Deeplearning4j GitChat课程:Deeplearning4j 快速入门_专栏 Eclipse Deeplearning4j 系列博客:万宫玺的专栏_wangongxi_CSDN博客 Eclipse Deeplearning4j G…

记录 Docker 中安装 ROS2

目录 1 安装 Docker 2 安装 ROS2 3 启动 Docker 4 测试 ROS2 环境 1 安装 Docker 1. 更新软件包sudo apt updatesudo apt upgrade2. 安装 docker 依赖sudo apt-get install ca-certificates curl gnupg lsb-release3. 添加 docker 官方 GPG 密钥curl -fsSL http://mirror…

Jetpack Compose中使用Android View

使用AndroidView创建日历 Composable fun AndroidViewPage() {AndroidView(factory {CalendarView(it)},modifier Modifier.fillMaxWidth(),update {it.setOnDateChangeListener { view, year, month, day ->Toast.makeText(view.context, "${year}年${month 1}月$…

Oracle开发经验总结

文章目录 1. 加注释2. 增加索引3. nvl(BOARDCODE&#xff0c;100)>004. 去掉distinct可以避免hash比较&#xff0c;提高性能5. like模糊查询优化(转化为instr()函数)6. SQL计算除数为0时&#xff0c;增加nullif判断7. 分页8. 查看执行计划9. <if test"productCode !…

【2023】hadoop基础介绍

&#x1f4bb;目录 Hadoop组成HDFSHDFS操作HDFS分布式文件存储NameNode元数据数据读写流程 YARN和MapReduceMapReduce&#xff1a;分布式计算YARN&#xff1a;资源管控调度YARN架构提交任务到**YARN中运行** Hadoop组成 hadoop安装教程可以看我这篇文章> &#x1f345;hado…

C/C++面向对象(OOP)编程-回调函数详解(回调函数、C/C++异步回调、函数指针)

本文主要介绍回调函数的使用&#xff0c;包括函数指针、异步回调编程、主要通过详细的例子来指导在异步编程和事件编程中如何使用回调函数来实现。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;C/C精进之路 &…

JavaScript 基础通关

快速熟悉 JavaScript 的基础语法&#xff0c;比较高级的比如事件放在后面的笔记中。 JavaScript 1. JavaScript 介绍 1.1 JavaScript 基本介绍 JavaScript 是一门运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互的效果。实现网页特效、表单验…