MAC编译openssl为Android库
写在前面最近在弄Android数据加密这块,发现openssl的加密方式比较全,而且是开源库,然后想着搬过来用。然后参照了很多编译方法,但是在mac上始终编译不过,当时真有种崩溃的感觉。然后编译通过之后,那种感觉真是痛快。准备下载下载NDK(android-ndk-r10e)下载openssl(openssl-1.1.1d)解压文件将两个文件解压之后放到同一个目录,比如叫open...
写在前面
最近在弄Android数据加密这块,发现openssl的加密方式比较全,而且是开源库,然后想着搬过来用。然后参照了很多编译方法,但是在mac上始终编译不过,当时真有种崩溃的感觉。然后编译通过之后,那种感觉真是痛快。
准备
下载
解压文件
将两个文件解压之后放到同一个目录,比如叫openssl
openssl
│
└───openssl-1.1.1d
│
└───android-ndk-r10e
编写shell文件
在openssl目录下编写shell文件
#!/bin/bash
set -e
set -x
SCRIPTPATH=./openssl
export ANDROID_NDK_HOME=$SCRIPTPATH/android-ndk-r10e
OPENSSL_DIR=$SCRIPTPATH/openssl-1.1.1d
CC=clang
# 配置toolchains
PATH=$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin:$PATH
# 设置Android API,这里设置的是21,编译过了。当设置14的时候出现编译失败,其他的版本需要你们去尝试了
ANDROID_API=21
# 设置编译的目标库
# 目标库的选项 android-arm, android-arm64, android-x86, android-x86 etc
architecture=android-arm
# 打开openssl文件夹,并创建make文件
cd ${OPENSSL_DIR}
./Configure ${architecture} -D__ANDROID_API__=$ANDROID_API
# 构建
make
# 拷贝到输出目录
OUTPUT_INCLUDE=$SCRIPTPATH/output/include
OUTPUT_LIB=$SCRIPTPATH/output/lib/${architecture}
mkdir -p $OUTPUT_INCLUDE
mkdir -p $OUTPUT_LIB
cp -RL include/openssl $OUTPUT_INCLUDE
cp libcrypto.so $OUTPUT_LIB
cp libcrypto.a $OUTPUT_LIB
cp libssl.so $OUTPUT_LIB
cp libssl.a $OUTPUT_LIB
运行shell脚本
比如我们这里取名叫build_openssl_shell.sh
文件,更改运行脚本的权限chmod a+x build_openssl_shell.sh
,运行脚本./build_openssl_shell.sh
。等待编译完成, 你会发现在路径下多了一个output目录,里面就是你想要的头文件、静态库和动态库。目录结构如下:
openssl
│ build_openssl_shell.sh
│
└─── openssl-1.1.1d
└─── output
│ │
│ └─── include
│ │
│ └─── lib
│
└─── android-ndk-r10e
其中include里面是头文件。
lib里面是动态库和静态库,看你需要使用哪种,就拷贝哪种到你的工程里面。
最后
有问题请留言哦,之前的有些文章经过大家的指正也发现了一些问题。欢迎大家探讨和指正。如果想在项目中集成请点击Android使用openssl中常用的加密方法
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)