[安卓]成功在android平台用ndk上编译libcurl+openssl支持https
来源:互联网 发布:vmware12上的mac补丁 编辑:程序博客网 时间:2024/06/07 00:35
链接:http://piggyq.com/pen/compile-libcurl-and-openssl-on-android-using-ndk.html
为了使app应用支持更多的平台,对https的支持,使用c来实现,所以使用libcurl作为http client的实现是非常方便的。
具体的编译步骤见前两篇文章:
Windows平台用NDK成功移植编译curl到Android
Android上使用curl(libcurl),无法连接Internet,couldn’t resolve host name or couldn’t connect to server
现在需要使用SSL用来加密传输,支持https协议,需要使用到openssl库添加进来一起编译
1.编译openssl
使用官方的不知道有没问题,没有具体关注下,我使用的是guardianproject的openssl,它已经提供好了android的ndk makefile。
git clone https://github.com/guardianproject/openssl-android.git
解压到任意目录(最好没有空格,容易出现问题),如$HOME/Developer/openssl-android/,然后直接cd到该目录,$NDK/ndk-build就行。
2.编译libcurl with ssl
如“在android中增加curl”文章所言,打开SSL相关宏定义:
configure找不到openssl,所以所生成的配置文件是不使用openssl的。要想使用ssl,需要手动修改 lib/curl_config.h,打开宏定义HAVE_LIBSSL、 HAVE_OPENSSL_CRYPTO_H、HAVE_OPENSSL_ERR_H、HAVE_OPENSSL_PEM_H、 HAVE_OPENSSL_PKCS12_H、HAVE_OPENSSL_RSA_H、HAVE_OPENSSL_SSL_H、 HAVE_OPENSSL_X509_H、USE_OPENSSL、USE_SSLEAY(但是注意android没有编译openssl中的 engine,因此不要打开宏定义HAVE_OPENSSL_ENGINE_H),同时注释掉宏定义HAVE_MALLOC_H和HAVE_IOCTL, 这两个宏定义在Android_config.h中有定义,不注释的话在编译过程中会有很多警告(但是能正确编译通过)
修改curl/Android.mk文件,在LOCAL_C_INCLUDES变量的值中增加openssl-android/include和openssl-android/crypto,在 LOCAL_SYSTEM_SHARED_LIBRARIES变量的值中增加 libssl libcrypto libz(NDK已有)。注意在之前先应用libssl.so和libcrypto.so:
#using libssl.so
include $(CLEAR_VARS)
LOCAL_MODULE := libssl
LOCAL_SRC_FILES := libssl.so
include $(PREBUILT_SHARED_LIBRARY)
#using libcrypto.so
include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto
LOCAL_SRC_FILES := libcrypto.so
include $(PREBUILT_SHARED_LIBRARY)
Android test工程文件:http://115.com/file/c27nt10j
- [安卓]成功在android平台用ndk上编译libcurl+openssl支持https
- Ubuntu+NDK编译支持HTTPS的libcurl
- 在Ubuntu和Windows上编译libcurl支持https
- libcurl编译,支持https
- 在windows上编译openssl供Android NDK使用
- android ndk 编译 libcurl
- android支持https通讯,交叉编译 libcurl libnghttp2 oponssl
- NDK编译的osg在Android平台上的几个问题
- libcurl 支持 openssl 交叉编译 mips rt5350
- Android ndk下编译libcurl
- Android ndk下编译libcurl
- Android ndk下编译libcurl
- 在NDK下编译openssl动态库(平台:Windows cygwin)
- 随笔:交叉编译libcurl库支持HTTPS
- Libcurl中配置openssl使其支持https
- NDK学习(5) 安卓平台下 NDK编译lua
- Opencv在安卓平台上编译----调用C++库
- libcurl在mac上编译
- Android学习之 换肤功能模块的实现<二>
- HDoj-1018-Big Number
- Android ActionBar 的使用
- 题目1434:今年暑假不AC 题目22
- 自定义BufferedReader的两个方法
- [安卓]成功在android平台用ndk上编译libcurl+openssl支持https
- JAVA_04 集合框架
- GTK相关知识
- Qt之再谈阴影边框
- java数据类型基础题练习
- HDU 2955 - Robberies(01 背包)
- 360笔试2014-10-11
- Libzdb源码解读
- mobile web app开发总结-getting start