Android 向け OpenSSL サポートの追加
Qt インストールパッケージには OpenSSL サポートが含まれていますが、一部の国における法的制限のため、OpenSSL ライブラリ自体はパッケージに含まれていません。アプリケーションが OpenSSL に依存している場合は、対象デバイスに OpenSSL ライブラリがインストールされているかどうかが不明であるため、アプリケーションパッケージ (APK またはAAB) に SSL ライブラリを同梱することを検討してください。
QSslSocket::supportsSsl() 静的関数を使用して、ターゲットデバイスでの SSL サポートの有無を確認できます。まず、ヘッダーをインクルードします:
#include <QSslSocket>次に、以下の行を使用して SSL がサポートされているかどうかを確認します:
qDebug() << "Device supports OpenSSL: " << QSslSocket::supportsSsl();そのログメッセージについては、Qt Creator の「Application Output 」セクション、またはAndroidのlogcat を参照してください。
OpenSSL ライブラリの追加
便利な「OpenSSL for Android」リポジトリを使用すれば、自分のプロジェクトに OpenSSL ライブラリを直接組み込むことができます。
CMake を使用する場合は、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()あるいは、リポジトリをサブディレクトリにクローンした場合は、次のように記述します:
include(<path/to/android_openssl>/android_openssl.cmake)次に、ライブラリをターゲットに追加します:
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()qmake の場合、.pro ファイルに以下を追加します:
android: include(<path/to/android_openssl/openssl.pri)あるいは、libcrypto やlibssl などの追加ライブラリを組み込むには、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"
)あるいは、qmake については以下を使用します:
ANDROID_EXTRA_LIBS += \
<path_to_libs_dir>/libcrypto_3.so \
<path_to_libs_dir>/libssl_3.so注: 複数のアーキテクチャを対象とする場合は 、対象となるすべてのアーキテクチャ用の OpenSSL ライブラリを含めてください。
Qt Creator を使用すると、追加のライブラリを追加することが可能です。詳細については、Qt Creator: CMake プロジェクトへのライブラリの追加およびQt Creator: qmake プロジェクトへのライブラリの追加 を参照してください。
Android 向け OpenSSL のビルド
以下の手順に従って、OpenSSL ライブラリを手動でビルドしてください:
- OpenSSLのソースコードをダウンロードします。
- ソースコードをフォルダに解凍し、CLI を使用してそのフォルダに移動します。
注: 開発プラットフォームが Windowsの場合 、OpenSSL をビルドするには、
msysとperl5.14 以降が必要です。 - Android LLVM ツールチェーンをパスに追加します。たとえば、Linux の場合は次のようにします:
export PATH=~/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/<host>/bin:$PATHAndroid SDKは通常、Qt Creator またはAndroid Studioによって以下の場所にインストールされます:
- Linux:
~/Android/Sdk/ - macOS:
~/Library/Android/sdk/ - Windows:
C:\Users\<USER>\AppData\Local\Android\Sdk\
- Linux:
- 以下のコマンドを使用して、Android向けにビルドできるようOpenSSLのソースを設定します。ここで、<arch>には次のいずれかの値を指定できます:
arm、arm64、x86、またはx86_64:./Configure shared android-<arch> -D__ANDROID_API__=28注: アプリケーションが提供される地域の法的規制に基づき、SSL機能の有効化または無効化を検討する必要があります 。設定可能な機能の詳細については、「OpenSSL 設定オプション」を参照してください。
- サフィックスを指定しない場合、Androidはシステムライブラリ
libcrypto.soおよびlibssl.soを読み込みます。これらは、お使いのライブラリやQtが想定しているバージョンとは異なる場合があります。Qtアプリケーションが手動でビルドしたOpenSSLライブラリを確実に読み込めるようにするには、以下のコマンドを実行してください: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注:
libcryptoおよびlibsslという共有ライブラリにはバージョン番号が付いていませんが 、_3という接尾辞が付いています。次に、main.cpp ファイルで環境変数を設定してください:
qputenv("ANDROID_OPENSSL_SUFFIX", "<custom_suffix>");注:Androidでは 、バージョン管理されたライブラリは読み込まれません。
© 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.