Android로 포팅하기
안드로이드에서 지원하지 않는 특정 하드웨어나 소프트웨어 기능에 의존하지 않는 한 대부분의 Qt 애플리케이션은 쉽게 안드로이드에 이식할 수 있습니다.
포팅 방법은 기존 애플리케이션이 QML 기반인지 위젯 기반인지, 의도한 빌드 도구, 모바일 또는 데스크톱 애플리케이션에서 포팅하는지에 따라 달라집니다.
CMake로 빌드된 QML 기반 애플리케이션은 모바일 애플리케이션에 가장 적합한 접근 방식으로 간주됩니다.
Qt 데스크톱 애플리케이션에서 포팅하기
기존 Qt 코드의 대부분은 작동하지만 다양한 방향과 화면 크기에 맞게 UI 확장성 및 레이아웃에 대한 몇 가지 결정을 내려야 합니다. Qt Qml 애플리케이션을 최대한 활용하려면 반응형 레이아웃 접근 방식을 고려하세요.
앱 스토어 가이드라인, 테마 가이드라인 등 애플리케이션 개발 방식에 영향을 줄 수 있는 Qt 사용으로 직접 영향을 받지 않는 고려 사항도 있습니다. 여기서는 다루지 않습니다.
리소스 추가하기
대부분의 애플리케이션에는 리소스가 필요합니다. 여기서는 애플리케이션을 Android로 포팅할 때 리소스가 어떤 영향을 미치는지 설명합니다.
Qt 리소스 시스템 사용하기
대부분의 UI 애플리케이션과 마찬가지로 Qt 애플리케이션도 이미지, 아이콘, 번역 파일 등과 같은 리소스에 의존합니다. 이러한 리소스는 애플리케이션이 올바르게 작동하는 데 필요하므로 기기에서 사용할 수 있도록 설정해야 합니다.
가장 편리한 옵션은 리소스를 애플리케이션 바이너리에 빌드되는 qrc 파일로 번들링하는 것입니다. 이 접근 방식은 포팅 작업을 상당히 줄이고 리소스에 더 빠르게 액세스할 수 있습니다. 또한 크로스 플랫폼 접근 방식이므로 다른 플랫폼으로 쉽게 포팅할 수 있습니다.
기본적으로 모든 Qt 애플리케이션은 ":/" 접두사 또는 URL 체계 접두사 "qrc:"를 사용하여 qrc 파일의 콘텐츠에 액세스할 수 있습니다. qrc 파일과 그 처리 방식에 대한 자세한 내용은 Qt 리소스 시스템을 참조하십시오.
에셋 접근 방식을 사용하여 리소스 추가하기
안드로이드용 Qt는 안드로이드 에셋 메커니즘을 기반으로 하는 특별한 가상 파일 시스템을 제공합니다."ANDROID_PACKAGE_SOURCE_DIR/assets/" 디렉토리에 있는 파일은 애플리케이션 패키지의 일부로 패키징됩니다.
에셋 접근 방식은 Android API와의 상호 운용성을 향상시키는 데 가장 적합한 옵션입니다. "assets:" 접두사를 사용하여 디렉토리에 있는 모든 리소스에 액세스할 수 있습니다. qrc와 달리 이 접근 방식은 크로스 플랫폼 솔루션이 아닌 Android 전용입니다.
참고: Qt 리소스 시스템을 사용하려면 공유 라이브러리에 qrc
파일이 번들로 제공되어 먼저 압축을 풀고 링커로 로드해야 하는 반면, Android 에셋은 APK에 압축되어 애플리케이션에서 바로 사용할 수 있습니다. 즉, 안드로이드 에셋을 사용하면 공간을 덜 차지할 수 있지만 Qt를 사용하는 크로스 플랫폼 솔루션은 아닙니다.
CMake를 사용한 에셋 접근 방식
CMake 또는 Qt와 함께 CMake를 처음 사용하는 경우 CMake로 빌드를 참조하십시오. 여기서는 리소스를 추가하는 데 적용할 수 있는 단계에 중점을 둡니다.
안드로이드 매니페스트 파일로 제어되는 몇 가지 사항을 수정하고 싶을 것입니다. 이에 대한 자세한 내용은 Qt 안드로이드 매니페스트 파일 구성을 참조하십시오. 따라서 이미 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");
© 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.