안드로이드용 OpenSSL 지원 추가하기
Qt 설치 패키지는 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 라이브러리 추가하기
편리한 Android용 OpenSSL 리포지토리를 사용하면 프로젝트에 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: 프로젝트에 라이브러리 추가하기를 참조하세요.
Android용 OpenSSL 빌드하기
다음 지침은 OpenSSL 라이브러리를 수동으로 빌드하는 방법을 안내합니다:
- OpenSSL 소스를 다운로드합니다.
- 소스를 폴더에 압축을 풀고 CLI를 사용하여 해당 폴더로 이동합니다.
참고: 개발 플랫폼이 Windows인 경우
perl
5.14 이상과 함께msys
이 있어야 OpenSSL을 빌드할 수 있습니다. - 예를 들어 Linux를 사용하는 경우 경로에 Android LLVM 툴체인을 추가합니다:
export PATH=~/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/<host>/bin:$PATH
Android SDK는 일반적으로 Qt Creator 또는 Android Studio에서 다음 위치에 설치합니다:
- Linux: ~/Android/Sdk/
- macOS: ~/Library/Android/sdk/
- Windows C:\사용자\<사용자>\앱데이터\로컬\안드로이드\에스디케이\
- 다음 명령을 사용하여 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는 버전이 지정된 라이브러리를 로드하지 않습니다.
© 2025 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.