안드로이드로 이식하기
대부분의 Qt 애플리케이션은 Android에서 지원하지 않는 특정 하드웨어나 소프트웨어 기능에 의존하지 않는 한, Android로 쉽게 이식할 수 있습니다.
이식 방식은 기존 애플리케이션이 QML 기반인지 위젯 기반인지, 사용하려는 빌드 도구, 그리고 모바일 애플리케이션에서 이식하는지 데스크톱 애플리케이션에서 이식하는지에 따라 달라집니다.
CMake로 빌드된 QML 기반 애플리케이션은 모바일 애플리케이션에 가장 적합한 접근 방식으로 간주됩니다.
Qt 데스크톱 애플리케이션에서 이식하기
기존 Qt 코드의 대부분은 그대로 작동하겠지만, 다양한 화면 방향과 크기에 따른 UI 확장성 및 레이아웃에 대해 몇 가지 결정을 내려야 합니다. 반응형 레이아웃 방식을 고려하여 안드로이드 웜스톤( Qt Qml ) 애플리케이션을 최대한 활용하십시오.
앱 스토어 가이드라인, 테마 가이드라인 등 Qt 사용과 직접적인 관련은 없지만 애플리케이션 개발 방식에 영향을 미칠 수 있는 고려 사항들이 있습니다. 이에 대해서는 여기서 다루지 않겠습니다.
리소스 추가
대부분의 애플리케이션에는 리소스가 필요합니다. 여기서는 이것이 애플리케이션을 Android로 이식하는 데 어떤 영향을 미치는지 설명합니다.
Qt 리소스 시스템 사용
대부분의 UI 애플리케이션과 마찬가지로, Qt 애플리케이션도 이미지, 아이콘, 번역 파일 등의 리소스에 의존합니다. 이러한 리소스는 애플리케이션이 올바르게 작동하는 데 필수적이므로 기기에서 사용할 수 있도록 제공되어야 합니다.
가장 편리한 방법은 리소스를 qrc 파일에 묶어 애플리케이션 바이너리에 통합하는 것입니다. 이 방식은 포팅 작업을 상당히 줄여주고 리소스에 더 빠르게 접근할 수 있게 해줍니다. 또한 크로스 플랫폼 방식이므로 다른 플랫폼으로의 포팅도 더 쉬워집니다.
기본적으로 모든 Qt 애플리케이션은 ":/" 접두사나 URL 스키마 접두사인 "qrc:"를 사용하여 qrc 파일의 내용에 접근할 수 있습니다. qrc 파일과 그 처리 방식에 대해 더 자세히 알아보려면 Qt 리소스 시스템을 참조하십시오.
자산 방식을 사용한 리소스 추가
Qt for Android는 Android Assets 메커니즘을 기반으로 하는 특수한 가상 파일 시스템을 제공합니다. “ANDROID_PACKAGE_SOURCE_DIR/assets/” 디렉터리에 배치된 파일은 애플리케이션 패키지의 일부로 패키징됩니다.
자산 방식은 Android API와의 상호 운용성을 높이는 데 가장 적합한 옵션입니다. "assets:" 접두사를 사용하여 디렉터리 내의 모든 리소스에 접근할 수 있습니다. qrc와 달리, 이 방식은 Android 전용이며 크로스 플랫폼 솔루션이 아닙니다.
참고: Qt 리소스 시스템을사용하면 qrc 파일이 공유 라이브러리에 번들되어 있어, 먼저 압축을 풀고 링커를 통해 로드해야 하는 반면, Android 자산은 APK에 압축되어 있어 애플리케이션에서 직접 사용할 수 있습니다. 즉, Android 자산을 사용하면 공간을 덜 차지할 수 있지만, Qt와의 크로스 플랫폼 솔루션은 아닙니다.
CMake를 이용한 자산 처리 방식
CMake를 처음 사용하거나 Qt와 함께 CMake를 처음 사용하는 경우, ‘CMake를 사용한 빌드’를 참조하십시오. 여기서는 리소스 추가에 적용되는 단계에 중점을 둡니다.
아마도 Android 매니페스트 파일에서 제어하는 몇 가지 항목을 수정하고 싶을 것입니다. 이에 대한 자세한 내용은 'Qt for Android 매니페스트 파일 구성'을 참조하십시오. 따라서 이미 다음과 같이 QT_ANDROID_PACKAGE_SOURCE_DIR을 설정해 두었을 것입니다:
set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
"${CMAKE_CURRENT_SOURCE_DIR}/android")이제 해당 폴더에 자산 파일을 직접 배치하거나, CMake를 사용하여 메인 프로젝트 경로에서 자산 경로로 파일을 복사하는 사용자 정의 단계를 추가할 수 있습니다.
그런 다음, C++에서 다음과 같이 해당 이미지 에셋에 접근할 수 있습니다:
QImage image("assets:/images/happy.png");© 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.