1. linux安装openssl库
参见《精通PKI网络安全认证技术与编程实现》2.3.2节 Linux下搭建OpenSSL开发环境
Linux下面解压tar.bz2文件:tar jxvf android-ndk-r5c-linux-x86.tar.bz2
2. 配置NDK的环境变量
在~/.bashrc文件末尾添加:
NDK=~/android-ndk-r4b
export NDK
执行source ~/.bashrc
如果有终端已经运行,需要在重启终端才能使用NDK变量
3. JNI介绍
JNI主要功能就是能够调用到C库,在这里我们需要用C或C++调用openssl库实现加密签名等功能,然后编译成arm体系的so库,用java调用提供的接口。
详细介绍参见此书:《TheJava Native Interface: Programmer’s Guide and Specification》
4. 下载android版本的openssl,编译
现在网上我看见过3种版本的android-openssl,fries版本,eighthave版本以及guardianproject版本,前面两个版本有测试过但是没有尝试成功,guardianproject版本编译成静态库再给android的JNI动态库程序调用的话会找不到方法,不清楚是什么原因,但是直接将JNI程序与openssl工程一起编译就可以实现。
下面这个blog有说编译openssl静态库给android用,但是不知道他用的是什么版本的Openssl,我按照他的方法尝试没有成功。