Hinzufügen von OpenSSL-Unterstützung für Android
Das Qt-Installationspaket enthält OpenSSL-Unterstützung, jedoch sind die OpenSSL-Bibliotheken aufgrund rechtlicher Einschränkungen in einigen Ländern nicht Bestandteil des Pakets. Wenn Ihre Anwendung auf OpenSSL angewiesen ist, sollten Sie in Erwägung ziehen, die SSL-Bibliotheken in Ihr Anwendungspaket einzubinden (APK oder AAB), da das Zielgerät diese möglicherweise nicht enthält.
Sie können die statische Funktion ` QSslSocket::supportsSsl()` verwenden, um die SSL-Unterstützung auf dem Zielgerät zu prüfen. Fügen Sie zunächst den Header ein:
#include <QSslSocket>Verwenden Sie anschließend die folgende Zeile, um zu prüfen, ob SSL unterstützt wird:
qDebug() << "Device supports OpenSSL: " << QSslSocket::supportsSsl();Informationen zu dieser Protokollmeldung finden Sie im Abschnitt „ Application Output “ von Qt Creator oder im Android- logcat.
Hinzufügen von OpenSSL-Bibliotheken
Mithilfe des praktischen OpenSSL -Repositorys für Android können Sie OpenSSL-Bibliotheken direkt in Ihr eigenes Projekt einbinden.
Fügen Sie mit CMake Folgendes zu Ihrer Datei „ CMakeLists.txt “ hinzu:
if (ANDROID)
include(FetchContent)
FetchContent_Declare(
android_openssl
DOWNLOAD_EXTRACT_TIMESTAMP true
URL https://github.com/KDAB/android_openssl/archive/refs/heads/master.zip
)
FetchContent_MakeAvailable(android_openssl)
include(${android_openssl_SOURCE_DIR}/android_openssl.cmake)
endif()Oder falls Sie das Repository in ein Unterverzeichnis geklont haben:
include(<path/to/android_openssl>/android_openssl.cmake)Fügen Sie anschließend die Bibliotheken zu Ihren Zielen hinzu:
qt_add_executable(your_target_name ..)
qt_add_executable(your_second_target_name ..)
if (ANDROID)
add_android_openssl_libraries(your_target_name your_second_target_name)
endif()Für „ qmake “ fügen Sie Folgendes in Ihre Datei „ .pro “ ein:
android: include(<path/to/android_openssl/openssl.pri)Alternativ können Sie zusätzliche Bibliotheken wie „ libcrypto “ und „ libssl “ hinzufügen. Verwenden Sie für CMake Folgendes:
set_target_properties(<target_name> PROPERTIES
QT_ANDROID_EXTRA_LIBS "<path_to_libs_dir>/libcrypto_3.so" "<path_to_libs_dir>/libssl_3.so"
)Oder für „ qmake “ verwenden Sie:
ANDROID_EXTRA_LIBS += \
<path_to_libs_dir>/libcrypto_3.so \
<path_to_libs_dir>/libssl_3.soHinweis: Wenn Sie mehrere Architekturen ansprechen, fügen Sie OpenSSL-Bibliotheken für alle Zielarchitekturen ein.
Mit Qt Creator ist es möglich, zusätzliche Bibliotheken hinzuzufügen. Weitere Informationen finden Sie unter Qt Creator: Bibliotheken zu CMake-Projekten hinzufügen und Qt Creator: Bibliotheken zu qmake-Projekten hinzufügen.
OpenSSL für Android kompilieren
Die folgenden Anweisungen führen Sie durch die manuelle Erstellung der OpenSSL-Bibliotheken:
- Laden Sie die OpenSSL -Quellcodes herunter.
- Entpacken Sie die Quellcodes in einen Ordner und wechseln Sie über die Befehlszeile in diesen Ordner.
Hinweis: Wenn Ihre Entwicklungsplattform Windows ist, benötigen Sie „
msys“ mit „perl“ 5.14 oder höher, um OpenSSL zu kompilieren. - Fügen Sie die Android-LLVM-Toolchain zu Ihrem Pfad hinzu, beispielsweise unter Linux mit folgendem Befehl:
export PATH=~/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/<host>/bin:$PATHDas Android SDK wird üblicherweise von „ Qt Creator “ oder Android Studio an folgenden Speicherorten installiert:
- Linux:
~/Android/Sdk/ - macOS:
~/Library/Android/sdk/ - Windows:
C:\Users\<USER>\AppData\Local\Android\Sdk\
- Linux:
- Konfigurieren Sie die OpenSSL-Quellen mit dem folgenden Befehl für die Kompilierung für Android, wobei <arch> folgende Werte annehmen kann:
arm,arm64,x86oderx86_64:./Configure shared android-<arch> -D__ANDROID_API__=28Hinweis: Sie müssen je nach den gesetzlichen Beschränkungen in der Region, in der Ihre Anwendung verfügbar ist, entscheiden, ob Sie die SSL-Funktionen aktivieren oder deaktivieren. Weitere Informationen zu den konfigurierbaren Funktionen finden Sie unter „OpenSSL-Konfigurationsoptionen“.
- Ohne Suffix lädt Android die Systembibliotheken „
libcrypto.so“ und „libssl.so“. Diese können von Ihren Bibliotheken oder von den von Qt erwarteten Versionen abweichen. Um sicherzustellen, dass Qt-Anwendungen die manuell erstellten OpenSSL-Bibliotheken laden können, führen Sie die folgenden Befehle aus:make -j$(nproc) SHLIB_VERSION_NUMBER= build_libs mkdir -p ${out_path} cp libcrypto.so ${out_path}/libcrypto_3.so cp libssl.so ${out_path}/libssl_3.so cd ${out_path} patchelf --set-soname libcrypto_3.so libcrypto_3.so patchelf --set-soname libssl_3.so libssl_3.so patchelf --replace-needed libcrypto.so libcrypto_3.so libssl_3.soHinweis: Obwohl die gemeinsam genutzten Bibliotheken „
libcrypto“ und „libssl“ nicht versioniert sind, tragen sie das Suffix „_3 “.Legen Sie anschließend die Umgebungsvariable in Ihrer main.cpp-Datei fest:
qputenv("ANDROID_OPENSSL_SUFFIX", "<custom_suffix>");Hinweis: Android lädt keine versionierten Bibliotheken.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.