Qt WebEngine 애플리케이션 배포하기

애플리케이션을 패키징하고 배포하는 방법은 운영 체제마다 다릅니다. Windows 및 macOS의 경우 windeployqtmacdeployqt는 독립형 애플리케이션 패키지를 생성하는 단계를 자동화합니다.

Qt WebEngine 에 의존하는 애플리케이션을 수동으로 배포할 때는 애플리케이션을 실행하는 데 필요한 라이브러리, QML 가져오기, 플러그인 및 번역 등 모든 파일을 포함해야 합니다.

자세한 내용은 Qt 애플리케이션 배포하기를 참조하세요.

대상 플랫폼

Qt WebEngine 는 Qt의 모든 Supported Platforms 을 지원하려고 노력합니다. 그러나 Chromium의 다양한 요구 사항으로 인해 이것이 항상 가능한 것은 아닙니다. 알려진 제한 사항은 다음과 같습니다:

  • Qt WebEngine 현재 Windows, Linux 및 macOS만 지원합니다.
  • Windows의 경우 Qt WebEngine 은 대상 플랫폼으로 Windows Vista 이상만 지원합니다. Chromium의 최신 API 사용으로 인해 Windows XP는 지원되지 않습니다. WinRT도 지원되지 않습니다.
  • Windows에서 Qt WebEngine 애플리케이션을 실행하려면 Visual C++ 재배포 가능 버전 14.28 이상이 필요합니다.

애플리케이션 수동 배포

Qt WebEngine 에 종속되는 애플리케이션을 수동으로 배포하는 경우 다음 파일을 배포해야 할 수 있습니다:

  • 라이브러리
  • QML 임포트
  • Qt WebEngine 프로세스
  • 리소스
  • 번역
  • 오디오 및 비디오 코덱

라이브러리 배포

다음 라이브러리는 Qt WebEngine 에 의존하는 애플리케이션과 함께 배포해야 합니다:

QML 가져오기 배포

애플리케이션에서 Qt Quick 통합을 사용하는 경우 QtWebEngine 가져오기 디렉터리를 배포해야 합니다.

Qt WebEngine 프로세스 배포

Qt WebEngine 는 Chromium 프로젝트가 제공하는 다중 프로세스 모델을 활용합니다. 다중 프로세스 모델을 사용하려면 Qt WebEngine 프로세스 실행 파일을 애플리케이션과 함께 배포해야 합니다.

WebEngine 프로세스는 각 QWebEngineView 또는 WebEngineView 인스턴스에 대해 실행됩니다. 예를 들어 두 개의 탭이 열려 있는 브라우저 애플리케이션에는 두 개의 별도 프로세스 인스턴스가 실행되어야 합니다. 이는 안정적인 브라우징 환경을 제공하기 위해 대부분의 최신 웹 엔진에서 사용하는 일반적인 접근 방식입니다.

런타임에 Qt WebEngine 은 QLibraryInfo::location(QLibraryInfo::LibraryExecutablesPath)이 반환하는 디렉토리에서 QtWebEngineProcess 실행 파일을 찾습니다. Qt 설치의 경우 QTDIR/libexec (Linux) 또는 QTDIR\bin (Windows)입니다. 예를 들어 qt.conf 파일을 정의하여 경로를 변경할 수 있습니다. 또는 실행 경로를 QTWEBENGINEPROCESS_PATH 환경 변수의 값으로 설정할 수도 있습니다. macOS의 경우 Qt WebEngine.app/Helpers/QtWebEngineProcess 에서 실행 파일을 찾습니다.

리소스 배포

Qt WebEngine 에는 다음 리소스 파일이 필요합니다:

  • qtwebengine_resources.pak Chromium에 필요한 리소스가 포함되어 있습니다.
  • qtwebengine_devtools_resources.pak 원격 디버깅을 위한 도구가 포함되어 있습니다.
  • qtwebengine_resources_100p.pak 저해상도 디스플레이에 적합한 이미지가 포함되어 있습니다.
  • qtwebengine_resources_200p.pak 고해상도 디스플레이에 적합한 이미지를 포함합니다.
  • icudtl.dat 유니코드용 국제 컴포넌트(ICU)를 지원합니다. Qt WebEngine 가 시스템 ICU를 사용하도록 구성된 경우 필요하지 않은 ICU의 Chromium 버전입니다.
  • v8_context_snapshot.bin 초기화 속도를 높이는 데 사용되는 이전에 준비된 v8 컨텍스트의 스냅샷이 포함되어 있습니다. 디버그 빌드는 파일 이름 확장자가 .bin 대신 .debug.bin 인 별도의 스냅샷을 사용합니다. macOS에서는 각 아키텍처에 따라 이름이 지정된 스냅샷이 있습니다(예: v8_context_snapshot.arm64.bin 또는 v8_context_snapshot.arm64.debug.bin).

리소스는 다음 위치에서 검색됩니다:

또는 리소스 디렉터리 경로를 QTWEBENGINE_RESOURCES_PATH 환경 변수의 값으로 설정할 수 있습니다.

번역

로캘 데이터(예: en-US.pak)는 다음 위치에서 검색됩니다:

  • macOS의 경우 .app/Content/Resources
  • Linux 및 Windows의 경우: QLibraryInfo::location(QLibraryInfo::TranslationsPath)에 지정된 디렉터리 내 qtwebengine_locales 디렉터리

또는 QTWEBENGINE_LOCALES_PATH 환경 변수의 값으로 로캘 디렉터리 경로를 설정할 수 있습니다.

Qt 리소스 파일의 자바스크립트 파일

WebEngine 애플리케이션이 Qt Quick Compiler 을 사용하여 빌드되고 애플리케이션이 .qrc 리소스 내에 JavaScript 파일을 제공하고 이러한 파일을 HTML 페이지 내부에서 로드해야 하는 경우, 프로젝트 내부의 QTQUICK_COMPILER_SKIPPED_RESOURCES qmake 변수에 리소스 파일을 지정해야 합니다. 이렇게 하면 Qt Quick Compiler 에서 해당 JavaScript 코드에 대한 C++ 코드 생성을 시도하지 않을 뿐만 아니라 Qt 리소스 파일에서 원본 JavaScript 코드가 제거되어 HTML 페이지가 손상되는 것을 방지할 수 있습니다. 예를 들어

QTQUICK_COMPILER_SKIPPED_RESOURCES += resources/my_resource.qrc

macOS 관련 배포 단계

macOS에 Qt WebEngine 애플리케이션을 배포하려면 Qt WebEngine 프로세스가 QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/Resources/QtWebEngineProcess.entitlements에 나열된 자격을 최소한 포함하는 자격 파일로 서명되어 있는지 확인해야 합니다.

macOS에서 마이크 또는 카메라에 액세스하는 Qt WebEngine 애플리케이션을 배포하려면 애플리케이션이 카메라 또는 마이크에 대한 액세스 권한을 요청하는 이유를 설명하기 위해 사용자에게 표시할 메시지에 텍스트를 제공해야 합니다. 이렇게 하려면 아래에 설명된 키를 사용하여 애플리케이션의 Info.plist 파일에 텍스트를 추가합니다.

카메라 사용 메시지의 경우 다음 키를 사용하여 텍스트를 입력합니다:

<key>NSCameraUsageDescription</key>
<string>Your message text for camera usage.</string>

Apple의 속성 목록 파일 문서도 참조하세요.

마이크 사용 메시지의 경우 다음 키를 사용하여 텍스트를 입력합니다:

<key>NSMicrophoneUsageDescription</key>
<string>Your message text for microphone usage.</string>

Apple의 속성 목록 파일 설명서를 참조하세요.

카메라 또는 마이크에 액세스하는 애플리케이션을 공증하려면 배포 및 공증에 사용되는 애플리케이션의 권한 파일에 해당 키를 추가해야 합니다.

카메라에 액세스할 수 있도록 하려면 추가합니다:

<key>com.apple.security.device.camera</key>
<true/>

Apple의 카메라 권한 설명서를 참조하세요.

마이크에 대한 액세스를 활성화하려면 추가합니다:

<key>com.apple.security.device.microphone</key>
<true/>

Apple의 마이크 권한 설명서를 참조하세요.

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