帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:Openssl  
OpenSSL Library for iOS and Android

  • 源代码名称:openssl_for_ios_and_android
  • 源代码网址:http://www.github.com/leenjewel/openssl_for_ios_and_android
  • openssl_for_ios_and_android源代码文档
  • openssl_for_ios_and_android源代码下载
  • Git URL:
    git://www.github.com/leenjewel/openssl_for_ios_and_android.git
  • Git Clone代码到本地:
    git clone http://www.github.com/leenjewel/openssl_for_ios_and_android
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/leenjewel/openssl_for_ios_and_android
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • 用于iOS和安卓的OpenSSL & cURL库
    程序库版本平台支持arch支持提交提交
    openssl1.1.0fiosarmv7s手写输入 i386 x86_64 arm64aae1672
    androidarmeabi armeabi-v7a arm64-v8a x86 x86_64 mipsaae1672
    卷曲7.53.1iosarmv7s手写输入 i386 x86_64 arm64aae1672
    androidarmeabi armeabi-v7a arm64-v8a x86 x86_64 mipsaae1672

    英语

    下载

    如果你不想自己构建它,你可以从这里下载我们的预构建库( 从这里开始) 。

    Android预构建库下载从这里

    这是一个 static 库编译从openssl和cURL为iOS和安卓。

    cURL版本

    NDK版本

    :如何构建

    用于iOS的插件

    openssl-1.1.0f.tar.gz 复制到 tools 文件文件夹并运行

    cd tools
    sh./build-openssl4ios.sh

    curl-7.53.1.tar.gz 复制到 tools 文件文件夹并运行

    cd tools
    sh./build-curl4ios.sh

    用于Android的插件

    设置 ENV NDK_ROOT

    cd tools
    sh./build-openssl4android.sh

    你可以用ABI构建它

    cd tools
    sh./build-openssl4android.sh android # for armeabi
    sh./build-openssl4android.sh android-armeabi #for armeabi-v7a
    sh./build-openssl4android.sh android64-arm64 #for arm64_v8a
    sh./build-openssl4android.sh android-x86 #for x86
    sh./build-openssl4android.sh android64 #for x86_64
    sh./build-openssl4android.sh mips #for mips
    sh./build-openssl4android.sh mips64 #for mips64

    你必须首先构建 openssl

    ( 没有 ssl ) 禁用

    使用动态链接的libz 支持构建用于Android的OpenSSL 。 libz 是由Android系统公开提供的。

    sh./build-curl4android.sh

    你可以用ABI构建它

    cd tools
    sh./build-curl4android.sh android # for armeabi
    sh./build-curl4android.sh android-armv7 #for armeabi-v7a
    sh./build-curl4android.sh android64-arm64 #for arm64_v8a
    sh./build-curl4android.sh android-x86 #for x86
    sh./build-curl4android.sh android-x86_64 #for x86_64
    sh./build-curl4android.sh mips #for mips
    sh./build-curl4android.sh mips64 #for mips64

    :如何使用

    用于iOS的插件

    lib/libcrypto.alib/libssl.alib/libcurl.a 复制到你的项目中。

    include/openssl 文件夹和 include/curl 文件夹复制到你的项目中。

    Frameworks 组添加 libcrypto.alibssl.alibcurl.a,并将它们添加到 [Build Phases] ====> [Link Binary With Libraries]

    添加openssl包括路径和curl包含到 [Build Settings] ====> [User Header Search Paths]

    关于"__curl_rule_01__声明为具有负大小的array"问题

    为arm64构建cURL时,会得到这个错误。

    你需要从以下位置更改 curlbuild.h:

    #defineCURL_SIZEOF_LONG4

    到:

    #ifdef __LP64__
    #defineCURL_SIZEOF_LONG8#else#defineCURL_SIZEOF_LONG4#endif

    用于Android的插件

    复制 lib/armeabi 文件夹和 lib/armeabi-v7a 文件夹和 lib/x86 到你的android项目 libs 文件夹。

    include/openssl 文件夹和 include/curl 复制到你的android项目中。

    Android Makefile

    添加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

    控件

    定义 sslcryptocurl 作为 static 导入库。

    add_library(crypto STATIC IMPORTED)
    set_target_properties(crypto
     PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcrypto.a)
    add_library(ssl STATIC IMPORTED)
    set_target_properties(ssl
     PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libssl.a)
    add_library(curl STATIC IMPORTED)
    set_target_properties(curl
     PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcurl.a)

    然后将这些库与你的目标 e.g.

    target_link_libraries( # Specifies the target library.
     native-lib
     curl
     ssl
     crypto
     )

    有关" libcrypto.a ( ui_openssl.o ): ui_openssl 。c: 函数read_string_inner的: 错误:未定义的'信号'"问题"

    当你得到这些错误时

    libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'signal' 
    libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr' 

    你需要使用 static API级别 16或者更早版本来重建OpenSSL库

    如果你使用 16或者更早版本构建 OpenSSL,你可能无法构建 arch 64位仅支持 32位

    更多信息:

    https://github.com/openssl/openssl/issues/988

    http://stackoverflow.com/questions/37122126/whats-the-exact-significance-of-android-ndk-platform-version-compared-to-api-le

    我们的构建脚本默认使用 API 16构建 OpenSSL

    如果你不想自己构建,那么你可以使用我们已经预先构建好的版本,请在这里下载

    Android编译好的库从这里下载

    [Build Phases] ====> [Link Binary With Libraries]

    [Build Settings] ====> [User Header Search Paths]

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

    #defineCURL_SIZEOF_LONG4

    改成:

    #ifdef __LP64__
    #defineCURL_SIZEOF_LONG8#else#defineCURL_SIZEOF_LONG4#endif

    # Android.mk
    include $(CLEAR_VARS)
    LOCAL_MODULE := curl
    LOCAL_SRC_FILES := Your cURL Library Path/$(TARGET_ARCH_ABI)/libcurl.a
    include $(PREBUILT_STATIC_LIBRARY)
    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

    add_library(crypto STATIC IMPORTED)
    set_target_properties(crypto
     PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcrypto.a)
    add_library(ssl STATIC IMPORTED)
    set_target_properties(ssl
     PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libssl.a)
    add_library(curl STATIC IMPORTED)
    set_target_properties(curl
     PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcurl.a)

    target_link_libraries( # Specifies the target library.
     native-lib
     curl
     ssl
     crypto
     )

    关于" libcrypto.a ( ui_openssl.o ): ui_openssl 。c: 函数 read_string_inner:

    libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'signal' 
    libcrypto.a(ui_openssl.o):ui_openssl.c:function read_string_inner: error: undefined reference to 'tcsetattr' 

    https://github.com/openssl/openssl/issues/988

    http://stackoverflow.com/questions/37122126/whats-the-exact-significance-of-android-ndk-platform-version-compared-to-api-le

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

    《Compiling用于 Android》的最新 OpenSSL

    《在Cocos2d-x中使用 OpenSSL》

    《using curl在iOS上,我无法连接多个架构,CurlchkszEQ宏failing》接口。

    具有 ssl support》的android上的《porting libcurl



    文章标签:Openssl  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语