android - qt快速应用程序中android上的OpenSSL版本不兼容
问题描述
我有一个 qt 快速应用程序,它在Windows
和Android
. 但是当我QNetworkAccessManager
用来发出 GET 请求时,它在 Windows 上没有错误,但在 Android 上却有以下错误
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_init_ssl
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_init_crypto
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve ASN1_STRING_get0_data
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve EVP_CIPHER_CTX_reset
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve EVP_PKEY_base_id
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve RSA_bits
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_sk_new_null
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_sk_push
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_sk_free
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_sk_num
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_sk_pop_free
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OPENSSL_sk_value
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve DH_get0_pqg
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_ciphersuites
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve SSL_set_psk_use_session_callback
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve SSL_get_client_random
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve SSL_SESSION_get_master_key
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve TLS_client_method
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve TLS_server_method
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve X509_STORE_CTX_get0_chain
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve X509_getm_notBefore
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve X509_getm_notAfter
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve X509_get_version
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve X509_STORE_set_ex_data
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve X509_STORE_get_ex_data
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve CRYPTO_free
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OpenSSL_version_num
W ShakhehNabat: qt.network.ssl: QSslSocket: cannot resolve OpenSSL_version
W ShakhehNabat: qt.network.ssl: Incompatible version of OpenSSL
我运行下面的代码和
qWarning()<<"QSslSocket build version =>"<<QSslSocket::sslLibraryBuildVersionString();
qWarning()<<"QSslSocket version =>"<<QSslSocket::sslLibraryVersionString();
qWarning()<<"QSslSocket supportsSsl =>"<<QSslSocket::supportsSsl();
这是Windows 上的输出
QSslSocket build version => "OpenSSL 1.1.1b 26 Feb 2019"
QSslSocket version => "OpenSSL 1.1.1c 28 May 2019"
QSslSocket supportsSsl => true
这是Android上的输出
W ShakhehNabat: QSslSocket version => ""
W ShakhehNabat: QSslSocket supportsSsl => false
W ShakhehNabat: QSslSocket build version => "OpenSSL 1.1.1b 26 Feb 2019"
我已经为 Android ARMv7 安装了 Qt 5.12.5 MSVC2017 64bit 和 Qt 5.12.5,但路径中只有两个文件夹Win_x64和Win_x86 ( C:\Qt\Tools\OpenSSL
)
编辑
当我提出请求时,我会收到此错误
qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
我需要为 ssl 套接字做一些初始化吗?我应该将pem文件添加到我的应用程序吗?
解决方案
推荐阅读
- python-3.x - 在一周中的特定日期对 pandas 中的数据进行重新采样
- python-3.x - 来自 model.predict() 的预测不正确
- date - 时刻解析区域给出了意想不到的结果
- pdf - 是否可以创建一个可以将电子书文件上传到服务器并可以远程删除下载文件的应用程序?
- react-native - 为 Mac 和 Windows 设置 React Native 代码库
- javascript - 在 Chrome 和 Firefox 中播放 .flac 块(适用于 Safari)
- javascript - 未捕获的语法错误:JSON.parse 中位置 0 处的 JSON 中的意外标记 <
) 在 XMLHttpRequest.xmlhttp.onreadystatechange - python - ValueError:形状(882,14)和(15,)未对齐:14(dim 1)!= 15(dim 0)
- python - 比较列和添加新列时,日期计算中的方法
- python - 带有键和值 tkinter 对象的字典理解