用于Android和OpenSSL的Qt
Qt安装为Android提供了预构建的二进制文件。从中可以看出,这些二进制文件是使用OpenSSL支持构建的,但由于法律限制,OpenSSL库不是包的一部分。建议是自己构建和打包这些库。两个问题:用于Android和OpenSSL的Qt,android,qt,Android,Qt,Qt安装为Android提供了预构建的二进制文件。从中可以看出,这些二进制文件是使用OpenSSL支持构建的,但由于法律限制,OpenSSL库不是包的一部分。建议是自己构建和打包这些库。两个问题: 我的应用程序支持Android 4.1及以上版本。我可以简单地依赖/system/lib/libssl.so和/system/lib/libcrypto.so而不是打包我自己的OpenSSL库吗?换句话说,这些库是否可能在任何运行OS 4.1及以上版本的设备上都不可用 如果我必须打包自己的库,建议库的
/system/lib/libssl.so
和/system/lib/libcrypto.so
而不是打包我自己的OpenSSL库吗?换句话说,这些库是否可能在任何运行OS 4.1及以上版本的设备上都不可用libprivatesl.so
和libprivatecypto.so
。但是,如果我这样做,Qt二进制文件将无法识别它们,因为它们是硬编码的,以动态查找标准名称。我该怎么办?问候默认情况下,Qt将使用系统openssl,所以是的,您可以信赖它。如果您自己打包,那么您应该使用-openssl链接选项构建Qt,该选项将允许您使用重命名的libcrypto和libssl版本。
- 在Android 5.0及更低版本上,QSslSocket将使用Android系统的libssl.so和libcrypto.ssl
- 在Android>=6.0上,您的应用程序必须包含自己的libssl.so和libcrypto.ssl
- 由于某些国家的法律限制,OpenSSL不是Qt安装的一部分
- 不要使用预先构建的OpenSSL库,因为您发现这些库是关于Internet的
我希望这能节省一些时间。为Android构建Qt移动应用程序如果应用程序应该在Android 7+上运行,就会出现问题,因为谷歌删除了openssl。您必须自己构建openssl
。所以
libs。Qt中有一个关于如何添加openssl的文档:不幸的是,这在Linux或MacOS上失败,错误未知参数:-mandroid
另请参见
主要用于Android和其他操作系统的OpenSSLlibcrypto
和libsssl
静态和动态库的工作构建脚本可以在这里找到:
本回购协议采纳了和回购协议中最可行的想法——非常感谢他们的作者!关于这些脚本创建的更多想法可以在那里找到。从下载和提取openssl到为x86
,armeabi-v7a
,arm64-v8a
体系结构生成lib,生成的脚本都能为您成功完成所有工作
默认OpenSSL版本与当前在Qt Creator中使用的版本相同 在Android>=6.0上,您的Qt Android应用程序必须包含您自己的libssl.so和libcrypto.so。虽然Android系统包含这些库,但您的应用程序无法使用它们。要在macOS主机上构建arm、armv7和x86 OpenSSL,此脚本可以工作,请参阅fork以及自述文件的附加说明:with for sript和
android-ndk-r10e-linux-x8664.zip
-为armeabi-v7a
和x86
构建良好。如何为arm64-v8a构建?另外,max-Android-API也在那里Android-21
。是否可以或需要在以后更新此脚本以获得更高版本?对于任何NDK版本,具有工作脚本的Forked repo:-将有工作脚本(至少对于Linux和Mac)。