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})
相关推荐
CYRUS_STUDIO11 分钟前
Android 反调试攻防实战:多重检测手段解析与内核级绕过方案
android·操作系统·逆向
黄林晴4 小时前
如何判断手机是否是纯血鸿蒙系统
android
火柴就是我4 小时前
flutter 之真手势冲突处理
android·flutter
法的空间4 小时前
Flutter JsonToDart 支持 JsonSchema
android·flutter·ios
循环不息优化不止4 小时前
深入解析安卓 Handle 机制
android
恋猫de小郭5 小时前
Android 将强制应用使用主题图标,你怎么看?
android·前端·flutter
jctech5 小时前
这才是2025年的插件化!ComboLite 2.0:为Compose开发者带来极致“爽”感
android·开源
用户2018792831675 小时前
为何Handler的postDelayed不适合精准定时任务?
android
叽哥5 小时前
Kotlin学习第 8 课:Kotlin 进阶特性:简化代码与提升效率
android·java·kotlin
Cui晨5 小时前
Android RecyclerView展示List<View> Adapter的数据源使用View
android