Sur cette page

Ajout de la prise en charge d’OpenSSL pour Android

Le package d'installation de Qt inclut la prise en charge d'OpenSSL, mais les bibliothèques OpenSSL ne font pas partie du package en raison de restrictions légales dans certains pays. Si votre application dépend d'OpenSSL, pensez à intégrer les bibliothèques SSL dans votre package d'application (APK ou AAB), car l'appareil cible peut ne pas les posséder.

Vous pouvez utiliser la fonction statique QSslSocket::supportsSsl() pour vérifier la prise en charge de SSL sur l’appareil cible. Commencez par inclure l’en-tête :

#include <QSslSocket>

Utilisez ensuite la ligne suivante pour vérifier si SSL est pris en charge :

qDebug() << "Device supports OpenSSL: " << QSslSocket::supportsSsl();

Consultez la section « Application Output » de la documentation Qt Creator ou la documentation Android logcat pour plus d’informations sur ce message de journal.

Ajout des bibliothèques OpenSSL

Grâce au dépôt OpenSSL for Android, très pratique, vous pouvez directement inclure les bibliothèques OpenSSL dans votre propre projet.

Avec CMake, ajoutez ce qui suit à votre fichier ` 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)

Ajoutez ensuite 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)

Sinon, pour ajouter des bibliothèques supplémentaires, telles que libcrypto et libssl, utilisez pour CMake :

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.so

Remarque : lorsque vous ciblez plusieurs architectures, incluez les bibliothèques OpenSSL pour toutes les architectures ciblées.

À l’aide de Qt Creator, il est possible d’ajouter des bibliothèques supplémentaires. Pour plus d’informations, consultez Qt Creator: Ajouter des bibliothèques à des projets CMake et Qt Creator: Ajouter des bibliothèques à des projets qmake.

Compilation d'OpenSSL pour Android

Les instructions suivantes vous guident pour compiler manuellement les bibliothèques OpenSSL :

  1. Téléchargez les sources d’OpenSSL.
  2. Décompressez les sources dans un dossier et accédez à ce dossier via l'interface en ligne de commande.

    Remarque : si votre plateforme de développement est Windows, vous devez disposer d’ msys, avec la version perl 5.14 ou ultérieure, pour compiler OpenSSL.

  3. Ajoutez la chaîne d'outils LLVM Android à votre chemin d'accès. Par exemple, sous Linux, utilisez :
    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 aux emplacements suivants :

    • Linux : ~/Android/Sdk/
    • macOS : ~/Library/Android/sdk/
    • Windows : C:\Users\<USER>\AppData\Local\Android\Sdk\
  4. Configurez les sources OpenSSL pour une compilation sur Android à l'aide de la commande suivante, où <arch> peut prendre l'une des valeurs suivantes : arm, arm64, x86 ou x86_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, consultez la section Options de configuration d’OpenSSL.

  5. Sans suffixe, Android charge les bibliothèques système libcrypto.so et libssl.so. Il se peut que celles-ci soient de versions différentes de vos bibliothèques ou de celles attendues par Qt. Pour vous assurer que les applications Qt puissent charger les bibliothèques OpenSSL compilées 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.so

    Remarque : bien que les bibliothèques partagées libcrypto et libssl ne portent pas de numéro de version, elles sont dotées du suffixe _3.

    Définissez ensuite la variable d'environnement dans votre fichier main.cpp :

    qputenv("ANDROID_OPENSSL_SUFFIX", "<custom_suffix>");

    Remarque : 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.