【分享】openssl移植Android使用及其相关经验分享
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,我按照他的方法尝试没有成功。
http://blog.csdn.net/someonea/article/details/6312213
guardianproject版本原版下载地址:
https://github.com/guardianproject/openssl-android
我修改过的版本:
http://download.csdn.net/source/3408214
在我修改过的版本中可以直接在myAPP文件夹下编写JNI程序,与Openssl一起打包编译成动态库就行了。
编译时可能出现一些undefined reference,大部分可能是没有添加链接库,有些情况也可能是NDK版本问题,最好用最新版本的NDK(我用的r5c),注意有没添加以下两个静态库
LOCAL_LDLIBS := -lz –ldl
[解决办法]
谢谢分享~~~~
[解决办法]
真好!
谢谢分享,必须加精!
[解决办法]
学习了,谢谢
[解决办法]
不错的,谢谢了
[解决办法]
全国电子竞赛历年真题
[解决办法]
好的答复
[解决办法]
不错的,谢谢了
[解决办法]
领教了~~~~
[解决办法]
好东西~~
[解决办法]
学习,收藏!
[解决办法]
很好,学习了
[解决办法]
好很好
[解决办法]
看上去不错
[解决办法]
xuexi
[解决办法]
KANKANASDASDASD
[解决办法]
欣赏高招
[解决办法]
谢谢分享
[解决办法]
这个要收藏
[解决办法]
android本身源码中自带openssl,直接拿来拖到ndk下就可以编译了。。。另外我不知道lz提供的某篇blog中的静态库为什么不能编译成功?我测试了下应该是可以的。
最后还是感谢lz分享,很喜欢lz分享使用经验和遇到的问题,我觉得这样比网上单纯的叫你怎么编译好多了
[解决办法]
openssl是个好东东啊,可惜当年没有好好研究!
[解决办法]
内容存入剪贴板
[解决办法]