이 페이지에서

Android용 OpenSSL 지원 추가

Qt 설치 패키지에는 OpenSSL 지원 기능이 포함되어 있지만, 일부 국가의 법적 제한으로 인해 OpenSSL 라이브러리는 패키지에 포함되어 있지 않습니다. 애플리케이션이 OpenSSL에 의존하는 경우, 대상 기기에 해당 라이브러리가 설치되어 있을 수도 있고 없을 수도 있으므로, 애플리케이션 패키지에 SSL 라이브러리를 함께 포함하는 것을 고려하십시오(APK 또는 AAB).

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 라이브러리를 수동으로 빌드하는 방법을 안내합니다:

  1. OpenSSL 소스 코드를 다운로드합니다.
  2. 소스 코드를 폴더에 압축을 풀고 CLI를 사용하여 해당 폴더로 이동합니다.

    참고: 개발 플랫폼이 Windows인경우 , OpenSSL을 빌드하려면 perl 5.14 이상이 포함된 msys 가 필요합니다.

  3. Android LLVM 툴체인을 경로에 추가하십시오. 예를 들어, Linux의 경우 다음 명령을 사용합니다:
    export PATH=~/Android/Sdk/ndk/27.2.12479018/toolchains/llvm/prebuilt/<host>/bin:$PATH

    Android SDK는 일반적으로 Qt Creator 또는 Android Studio를 통해 다음 위치에 설치됩니다:

    • 리눅스: ~/Android/Sdk/
    • macOS: ~/Library/Android/sdk/
    • Windows: C:\Users\<USER>\AppData\Local\Android\Sdk\
  4. 다음 명령어를 사용하여 Android용으로 빌드할 수 있도록 OpenSSL 소스 코드를 구성하십시오. 여기서 <arch>에는 arm, arm64, x86 또는 x86_64 중 하나의 값을 지정할 수 있습니다:
    ./Configure shared android-<arch> -D__ANDROID_API__=28

    참고: 애플리케이션이 제공되는 지역의 법적 제한 사항에 따라 SSL 기능을 활성화하거나 비활성화해야합니다 . 구성 가능한 기능에 대한 자세한 내용은 OpenSSL 구성 옵션을 참조하십시오.

  5. 접미사가 없으면 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.