【问题标题】:Loading OpenSSL dynamic libraries arm & x86 (FMX, C++)加载 OpenSSL 动态库 arm & x86 (FMX, C++)
【发布时间】:2019-06-15 09:32:05
【问题描述】:

感谢this help,我能够在我的 iOS 应用程序中使用 OpenSSL 静态库(libcrypto.a 和 libssl.a)。现在我还可以在我的 Android 应用程序版本中使用 OpenSSL 动态库(libcrypto.so 和 libssl.so),这要感谢this info。我从here 下载了OpenSSL_1.0.2g_Android.zip 文件中的Android 文件。我只是猜测并使用了 ARM 文件(armeabi-v7a 文件夹)而不是 Intel 文件(x86 文件夹),它在我的 Android 测试手机上运行。

我的问题:如何在 ARM 设备和 Intel 上制作使用正确库文件的 Android 版本?我不知道如何为此部署两组文件。下面是项目窗口的片段,显示了我在哪里测试为 x86 添加了第二个 libcrytpo.so 库文件。

但是,第二个libcrypto.so 没有显示在部署窗口中,只保留了我添加的第一个版本(ARM 版本)。

我希望我能以某种方式使用compiler directives,但也许我只需要两个独立的项目?一个是为 Android ARM 构建的,另一个是为 Android x86 构建的?此外,我在代码中需要的只是IdHTTP1->Get(),所以也许他们是我可以使用内置 BoringSSL 叉的一种方式?如果有,怎么做?

鲁斯

C++Builder 10.3 版本 26.0.33219.4899

【问题讨论】:

    标签: firemonkey c++builder-6 rad-studio


    【解决方案1】:

    RAD Studio 不支持为 Intel 生成 Android 应用程序,仅支持 ARM,因此不必担心尝试在 Android 上使用 x86 库。

    另外,此时Indy does not support BoringSSL

    【讨论】:

    • 谢谢雷米。无论如何,我认为 ARM 覆盖了超过 95% 的 Android 设备。我刚刚发现this Embarcadero link 说英特尔Android 设备(KitKat 及更高版本)包含一个名为libhoudini 的仿真库。这是一个由操作系统自动调用的翻译库,允许 Intel cpu 解释和执行为 ARM cpus 编译的二进制文件。还说,“FireMonkey 应用程序通常与libhoudini 库兼容。”我可能会尝试找到一个 Intel Android 并进行测试。
    • Remy - 我买了一个基于英特尔的平板电脑 (Nuvision Solo 8),我的应用程序使用 ARM Indy 文件 (libcrypto.solibssl.so) 运行良好!看起来libhoudini 正确翻译了英特尔处理器的 ARM 指令。因此,即使 RAD Studio 不支持 Intel 构建,ARM 构建也可以正常工作。我现在使用的唯一 Indy 函数是 IdHTTP1->Get(temp),其中 temp 是一个完整 URL 以 https 开头的字符串。注意:CPU 是 X86 Genuine Intel (R) CPU @ 728 per SysCheck
    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    相关资源
    最近更新 更多