Skip to content

Tianyu2011/openssl_for_ios_and_android

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

OpenSSL & cURL Library for iOS and Android

##English

This a static library compile from openssl and cURL for iOS and Android.

##OpenSSL Version

openssl-1.0.2c.tar.gz

##cURL Version

curl-7.47.1.tar.gz

##For iOS

Copy lib/libcrypto.a and lib/libssl.a and lib/libcurl.a to your project.

Copy include/openssl folder and include/curl folder to your project.

Add libcrypto.a and libssl.a and libcurl.a to Frameworks group and add them to [Build Phases] ====> [Link Binary With Libraries].

Add openssl include path and curl include path to your [Build Settings] ====> [User Header Search Paths]

###About "__curl_rule_01__ declared as an array with a negative size" problem

When you build cURL for arm64 you will get this error.

You need to change curlbuild.h from :

#define CURL_SIZEOF_LONG 4

to :

#ifdef __LP64__
#define CURL_SIZEOF_LONG 8
#else
#define CURL_SIZEOF_LONG 4
#endif

##For Android

Copy lib/armeabi folder and lib/armeabi-v7a folder and lib/x86 to your android project libs folder.

Copy include/openssl folder and include/curl to your android project.

Add openssl include path to jni/Android.mk.

#Android.mk

include $(CLEAR_VARS)

LOCAL_MODULE := curl
LOCAL_SRC_FILES := Your cURL Library Path/$(TARGET_ARCH_ABI)/libcurl.a
include $(PREBUILT_STATIC_LIBRARY)


LOCAL_C_INCLUDES := \
	$(LOCAL_PATH)/Your Openssl Include Path/openssl \
	$(LOCAL_PATH)/Your cURL Include Path/curl

LOCAL_STATIC_LIBRARIES := libcurl

LOCAL_LDLIBS := -lz
	

##Reference

《How-To-Build-openssl-For-iOS》

《Compiling the latest OpenSSL for Android》

《using curl on iOS, I am unable to link with multiple architectures, CurlchkszEQ macro failing》

《porting libcurl on android with ssl support》

##中文

这是一个适用于 iOS 平台和 Android 平台的 Openssl 静态链接库。基于 openssl-1.0.2c 版本编译生成。

后来又加入了适用于 iOS 平台和 Android 平台且支持 SSL 的 cURL 静态链接库。基于 curl-7.47.1 版本编译生成。

##在 iOS 工程中使用

lib/libcrypto.alib/libssl.a 还有 lib/libcurl.a 三个静态链接库文件拷贝到你的 iOS 工程下面合适的位置。

include/openssl 文件夹和 include/curl 文件夹拷贝到你的 iOS 工程下面合适的位置。注意,所有的头文件均要放置到 openssl 文件夹下,不要随意更改文件夹名称。

libcrypto.alibssl.a 还有 lib/libcurl.a 三个静态链接库文件通过[Build Phases] ====> [Link Binary With Libraries]引入你的 iOS 工程。

将包含所有头文件的 openssl 文件夹和含有头文件的 curl 文件夹设置到头文件搜索路径中。即在 [Build Settings] ====> [User Header Search Paths] 中设置好。

###关于 "__curl_rule_01__ declared as an array with a negative size" 的问题解决办法

当你在 iOS 的 arm64 架构环境下编译 cURL 静态库时会遇到这个问题。解决的办法是修改 curlbuild.h 头文件,将下面这行 :

#define CURL_SIZEOF_LONG 4

改成 :

#ifdef __LP64__
#define CURL_SIZEOF_LONG 8
#else
#define CURL_SIZEOF_LONG 4
#endif

##在 Android 工程中使用

lib/armeabilib/armeabi-v7a 还有 lib/x86 文件夹拷贝到你的 Android 工程下面的 libs 文件夹中。

include/openssl 文件夹和 include/curl 文件夹拷贝到你的 Android 工程下面合适的位置。注意,所有的头文件均要放置到 openssl 文件夹下,不要随意更改文件夹名称。

修改 jni/Android.mk 文件,将头文件路径加入到搜索路径中,例如:

#Android.mk

include $(CLEAR_VARS)

LOCAL_MODULE := curl
LOCAL_SRC_FILES := Your cURL Library Path/$(TARGET_ARCH_ABI)/libcurl.a
include $(PREBUILT_STATIC_LIBRARY)


LOCAL_C_INCLUDES := \
	$(LOCAL_PATH)/Your Openssl Include Path/openssl \
	$(LOCAL_PATH)/Your cURL Include Path/curl

LOCAL_STATIC_LIBRARIES := libcurl

LOCAL_LDLIBS := -lz
	

##参考资料

《How-To-Build-openssl-For-iOS》

《Compiling the latest OpenSSL for Android》

《在 Cocos2d-x 中使用 OpenSSL》

《using curl on iOS, I am unable to link with multiple architectures, CurlchkszEQ macro failing》

《porting libcurl on android with ssl support》

About

OpenSSL Library for iOS and Android(基础上新加arm64-v8a)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 90.3%
  • C++ 9.7%