Проблема при компиляции под Android TLS initialization failed в QT
Проблема заключается в том что при компиляции под Android в qt (проект QT-Quick). При попытке любого подключения (HTTP/HTTPS) выводит ошибку "TLS initialization failed", но при том же коде и компиляции под Desktop запрос отправляется без проблем. Так же, для компиляции под Android подключено все и там нету никаких проблем. Если не входить в сеть все работает отлично. На самом устройстве дано разрешения для входа в сеть.
вот все файлы в которых я работал и настройка компиляции под Android

CMake
cmake_minimum_required(VERSION 3.21.1)
option(LINK_INSIGHT "Link Qt Insight Tracker library" ON)
option(BUILD_QDS_COMPONENTS "Build design studio components" ON)
project(aApp LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
# Добавьте опции компиляции
add_compile_options("-D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS" "-Wno-everything")
find_package(Qt6 6.2 REQUIRED COMPONENTS Core Gui Qml Quick Network)
if (Qt6_VERSION VERSION_GREATER_EQUAL 6.3)
qt_standard_project_setup()
endif()
qt_add_executable(aApp src/main.cpp
)
qt_add_resources(aApp "configuration"
PREFIX "/"
FILES
qtquickcontrols2.conf
)
target_link_libraries(aApp PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Qml
Qt6::Quick
Qt6::Network # Добавляем Network
)
if (BUILD_QDS_COMPONENTS)
include(${CMAKE_CURRENT_SOURCE_DIR}/qmlcomponents)
endif()
include(${CMAKE_CURRENT_SOURCE_DIR}/qmlmodules)
if (LINK_INSIGHT)
include(${CMAKE_CURRENT_SOURCE_DIR}/insight)
endif ()
include(GNUInstallDirs)
install(TARGETS aApp
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QObject>
#include <QCoreApplication>
#include <QDebug>
//#include <SFML/Network.hpp> думал что проблема в самом QT и подключал ещё SFML
#include "app_environment.h"
#include "import_qml_components_plugins.h"
#include "import_qml_plugins.h"
int main(int argc, char *argv[])
{
set_qt_environment();
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(u"qrc:Main/main.qml"_qs);
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreated, &app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
engine.addImportPath(":/");
engine.load(url);
// Создаем менеджер для сетевых запросов
QNetworkAccessManager manager;
// Создаем запрос
QNetworkRequest request(QUrl("http://www.snp.kiev.ua/SmartHouse.php?pasword=get temp
&who=client&request=123456&Arguments=789"));
// Выполняем GET-запрос
QNetworkReply* reply = manager.get(request);
// Обработка ответа на запрос
QObject::connect(reply, &QNetworkReply::finished, [&]() {
if (reply->error() == QNetworkReply::NoError) {
QByteArray data = reply->readAll();
qDebug() << "Response:" << data;
} else {
qDebug() << "HTTP request failed with error:" << reply->errorString();
}
reply->deleteLater();
});
return app.exec();
}
main.qml
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Window 2.15
import QtQuick.VirtualKeyboard 2.15
import QtQuick.Layouts 1.15
ApplicationWindow {
id: window
visible: true
width: 640
height: 480
title: "Smarthouse"
StackView {
id: stackView
anchors.fill: parent
initialItem: mainPageComponent
}
Component {
id: mainPageComponent
Item {
Button {
id: settingsButton // Додали id для кнопки налаштувань
anchors.top: parent.top
anchors.left: parent.left
width: 50
height: 50
onClicked: {
stackView.push(settingsPageComponent)
}
}
// Текстове поле
Text {
id: mainText
anchors.top: settingsButton.bottom
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("Your text here")
font.pixelSize: 24
}
// Колонка кнопок
Column {
anchors.top: mainText.bottom
anchors.horizontalCenter: parent.horizontalCenter
spacing: 10
Button {
text: qsTr("Температура дому")
onClicked: {
// ...
}
}
Button {
text: qsTr("Полив")
onClicked: {
stackView.push(wateringPageComponent)
}
}
Button {
text: qsTr("Охорона")
onClicked: {
// ...
}
}
}
}
}
// Сторінка для "Полив"
Component {
id: wateringPageComponent
Item {
id: wateringPage
Button {
text: "Назад"
anchors.top: parent.top
anchors.left: parent.left
onClicked: {
stackView.pop()
}
}
// Вертикальна колонка для елементів
Column {
anchors.left: parent.left // Вирівнюємо елементи по лівому краю
anchors.leftMargin: 50
anchors.verticalCenter: parent.verticalCenter // Вертикально по центру
spacing: 10 // Відступ між елементами
Text {
text: "Показники датчиків"
// Вирівнювання тексту тепер не потрібно, оскільки колонка вирівнює елементи
}
Text {
text: "Д 1 - значення"
}
Text {
text: "Д 2 - значення"
}
Button {
text: "Налаштування часу"
onClicked: {
// Ваш код тут
}
}
Button {
text: "Розклад поливу"
onClicked: {
// Ваш код тут
}
}
Button {
text: "Журнал поливу"
onClicked: {
onClicked: {
stackView.push(wateringJournalPageComponent)
}
}
}
}
}
}
// Компонент для сторінки "Журнал поливу"
Component {
id: wateringJournalPageComponent
Item {
id: wateringJournalPage
Button {
text: "Назад"
anchors.top: parent.top
anchors.left: parent.left
onClicked: {
stackView.pop()
}
}
Text {
text: "Журнал\nполиву"
anchors.top: parent.top
anchors.topMargin: 30
anchors.horizontalCenter: parent.horizontalCenter
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
}
Row {
anchors.top: parent.top
anchors.topMargin: 90
anchors.horizontalCenter: parent.horizontalCenter
spacing: window.width * 0.2
Text { text: "Дата"; horizontalAlignment: Text.AlignHCenter }
Text { text: "Час"; horizontalAlignment: Text.AlignHCenter }
Text { text: "Д1"; horizontalAlignment: Text.AlignHCenter }
Text { text: "Д2"; horizontalAlignment: Text.AlignHCenter }
}
Rectangle {
id: dataTable
anchors.top: parent.top
anchors.topMargin: 130
anchors.horizontalCenter: parent.horizontalCenter
width: parent.width * 0.9
height: parent.height * 0.5
border.color: "black"
GridLayout {
columns: 4
Repeater {
model: yourDataModel
Text {
text: modelData.date
Layout.fillWidth: true
verticalAlignment: Text.AlignTop
leftPadding: 10
}
Text {
text: modelData.time
Layout.fillWidth: true
verticalAlignment: Text.AlignTop
}
Text {
text: modelData.d1
Layout.fillWidth: true
verticalAlignment: Text.AlignTop
}
Text {
text: modelData.d2
Layout.fillWidth: true
verticalAlignment: Text.AlignTop
}
}
}
}
// Додати рядки з даними тут
}
}
Component {
id: settingsPageComponent
Item {
id: settingsPage
Button {
text: "Назад"
anchors.top: parent.top
anchors.left: parent.left
onClicked: {
stackView.pop()
}
}
// Вертикальна колонка для вирівнювання по центру
Column {
anchors.centerIn: parent // Центруємо колонку в батьківському елементі
spacing: 10 // Відступ між елементами
Text {
text: "Налаштування підключення"
horizontalAlignment: Text.AlignHCenter // Вирівнювання тексту по горизонталі
}
// Горизонтальний рядок для кнопок
Row {
spacing: 10 // Відступ між кнопками
Button {
text: "СМС"
onClicked: {
// Логіка для налаштування СМС
}
}
Button {
text: "Інтернет"
onClicked: {
// Логіка для налаштування Інтернету
}
}
}
}
}
}
}
AndroidManifest.xml
<?xml version="1.0"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.qtproject.example"
android:installLocation="auto"
android:versionCode="-- %%INSERT_VERSION_CODE%% --"
android:versionName="-- %%INSERT_VERSION_NAME%% --">
<!-- %%INSERT_PERMISSIONS -->
<!-- %%INSERT_FEATURES -->
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
<application
android:name="org.qtproject.qt.android.bindings.QtApplication"
android:hardwareAccelerated="true"
android:label="-- %%INSERT_APP_NAME%% --"
android:requestLegacyExternalStorage="true"
android:allowNativeHeapPointerTagging="false"
android:allowBackup="true"
android:fullBackupOnly="false">
<activity
android:name="org.qtproject.qt.android.bindings.QtActivity"
android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density"
android:label="-- %%INSERT_APP_NAME%% --"
android:launchMode="singleTop"
android:screenOrientation="unspecified"
android:exported="true">
<intent-filter>
<uses-permission android:name="android.permission.INTERNET" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="-- %%INSERT_APP_LIB_NAME%% --" />
<meta-data
android:name="android.app.arguments"
android:value="-- %%INSERT_APP_ARGUMENTS%% --" />
<meta-data
android:name="android.app.extract_android_style"
android:value="minimal" />
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.qtprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/qtprovider_paths"/>
</provider>
</application>
</manifest>