【问题标题】:Compiling OpenSSL on Android在 Android 上编译 OpenSSL
【发布时间】:2015-04-10 19:26:25
【问题描述】:

我目前正在尝试让我的 Cocos2D-X 项目通过 SSL 连接到我的服务器,并且我让它在 iOS 上运行没有很多问题,但是在 Android 上我什至无法让 OpenSSL 编译.. 我在 Google 上搜索了很多,但所有帖子要么不断将我重定向到与 HTTPS 相关的帖子(这不是,我在这里没有以任何形式或形式使用 HTTP,纯粹是 OpenSSL),帖子上如何使用 Java 中的标准 Android SDK 或根本没有帮助的帖子来做到这一点。

谁能告诉我如何编译这个游戏的 Android 版本并让它连接到我的服务器?

【问题讨论】:

    标签: c++ ssl android-ndk openssl cocos2d-x


    【解决方案1】:

    有一个问题接近你。每个 Android 操作系统都有作为 OpenSSL 一部分的 libssl 和 libcrypto 库。但它们并未包含在 NDK 中以供使用。因此,您可以通过从手机中复制 *so 文件来稍微修改您的 NDK。

    $adb pull /system/lib/libssl.so /myndk/platforms/android-14/arch-arm/usr/lib
    
    $adb pull /system/lib/libcrypto.so /myndk/platforms/android-14/arch-arm/usr/lib
    

    /myndk 是您的 NDK 的路径,android-14 - 您当前的平台

    还将 *.h 文件从 openssl 源复制到 /myndk/platforms/android-14/arch-arm/usr/include 文件夹。 还将下一个文件添加到此文件夹 - openssl/opensslconf.h(您可以在互联网上找到它或从源代码 openssl 进行配置) 这些文件仅在编译时需要。编译后,您的应用将从手机中获取库。

    不要忘记在 jni/Application.mk 文件中为 APP_LDFLAGS 部分添加 -lssl -lcrypto 选项

    APP_LDFLAGS := -latomic -lssl -lcrypto
    

    【讨论】:

    • 谢谢!!我让它工作了(尽管我不得不将“-latomic -lssl -lcrypto”更改为“-lssl -lcrypto -latomic”,因为它一直抱怨它无法加载 srand 或 rand)
    • @zezioen *h 文件在哪里?我的意思是我应该从 openssl 源下载它们还是在手机上找到它?版本兼容性如何?
    猜你喜欢
    • 2017-01-31
    • 2014-07-30
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多