Ajouter le support OpenSSL pour Android
Le paquet d'installation de Qt est livré avec le support OpenSSL, mais les bibliothèques OpenSSL ne font pas partie du paquet en raison de restrictions légales dans certains pays. Si votre application dépend d'OpenSSL, envisagez d'empaqueter les bibliothèques SSL avec votre paquetage d'application (APK ou AAB) car l'appareil cible peut ou non les avoir.
Vous pouvez utiliser la fonction statique QSslSocket::supportsSsl() pour vérifier la prise en charge de SSL sur le périphérique cible. Tout d'abord, incluez l'en-tête :
#include <QSslSocket>Puis utilisez la ligne suivante pour vérifier si SSL est pris en charge :
qDebug() << "Device supports OpenSSL: " << QSslSocket::supportsSsl();
Consultez la section Application Output de Qt Creator ou le site Android logcat pour obtenir ce message.
Ajout de bibliothèques OpenSSL
En utilisant le dépôt OpenSSL pour Android, vous pouvez directement inclure les bibliothèques OpenSSL dans votre propre projet.
Avec CMake, ajoutez ce qui suit à votre CMakeLists.txt:
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()Ou si vous avez cloné le dépôt dans un sous-répertoire :
include(<path/to/android_openssl>/android_openssl.cmake)
Ensuite, ajoutez les bibliothèques à vos cibles :
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()Pour qmake, ajoutez ce qui suit à votre fichier .pro:
android: include(<path/to/android_openssl/openssl.pri)
Vous pouvez également ajouter des bibliothèques supplémentaires, telles que libcrypto et libssl. Pour CMake, utilisez :
set_target_properties(<target_name> PROPERTIES
QT_ANDROID_EXTRA_LIBS "<path_to_libs_dir>/libcrypto_3.so" "<path_to_libs_dir>/libssl_3.so"
)Ou pour qmake, utilisez: :
ANDROID_EXTRA_LIBS += \
<path_to_libs_dir>/libcrypto_3.so \
<path_to_libs_dir>/libssl_3.soNote : Lorsque vous ciblez plusieurs architectures, incluez les bibliothèques OpenSSL pour toutes les architectures ciblées.
En utilisant Qt Creator, il est possible d'ajouter des bibliothèques supplémentaires. Pour plus d'informations, voir Qt Creator: Add libraries to CMake projects et Qt Creator: Add libraries to qmake projects.
Construction d'OpenSSL pour Android
Les instructions suivantes vous guident pour construire manuellement les bibliothèques OpenSSL :
- Télécharger les sources d'OpenSSL.
- Extrayez les sources dans un dossier et accédez à ce dossier à l'aide du CLI.
Note : Si votre plateforme de développement est Windows, vous devez utiliser
msysavecperl5.14 ou une version plus récente pour construire OpenSSL. - Ajoutez la chaîne d'outils LLVM Android à votre chemin d'accès, par exemple, pour une utilisation sous Linux :
export PATH=~/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/<host>/bin:$PATH
Le SDK Android est généralement installé par Qt Creator ou Android Studio dans les emplacements suivants :
- Linux : ~/Android/Sdk/
- macOS : ~/Bibliothèque/Android/sdk/
- Windows : C :\Users\N-<UTILISATEUR>\AppData\Local \Android \Sdk \N-<UTILISATEUR> \N-<UTILISATEUR>
- Configurez les sources OpenSSL pour les compiler pour Android en utilisant la commande suivante, où <arch> peut prendre une valeur de :
arm,arm64,x86oux86_64:./Configure shared android-<arch> -D__ANDROID_API__=28
Remarque : vous devez envisager d'activer ou de désactiver les fonctionnalités SSL en fonction des restrictions légales en vigueur dans la région où votre application est disponible. Pour plus d'informations sur les fonctionnalités configurables, voir OpenSSL Configure Options.
- Sans suffixe, Android charge les bibliothèques système
libcrypto.soetlibssl.so. Il peut s'agir de versions différentes de vos bibliothèques ou de celles attendues par Qt. Pour s'assurer que les applications Qt peuvent charger les bibliothèques OpenSSL construites manuellement, exécutez les commandes suivantes :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.soRemarque : Bien que les bibliothèques partagées
libcryptoetlibsslne soient pas versionnées, elles auront un suffixe _3.Définissez ensuite la variable d'environnement dans votre fichier main.cpp :
qputenv("ANDROID_OPENSSL_SUFFIX", "<custom_suffix>");
Note : Android ne charge pas les bibliothèques versionnées.
© 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.