Android에 애플리케이션 배포
이 문서에서는 Qt 애플리케이션을 Android 기기에 배포하는 데 필요한 기술 단계를 설명합니다.
안드로이드 패키징 옵션
안드로이드에서 코드를 패키징하는 방법은 애플리케이션 패키지(APK), 안드로이드 앱 번들(AAB) 또는 안드로이드 아카이브(AAR)의 세 가지가 있습니다. 각각은 미리 정의된 디렉토리 구조를 따르는 특정 유형의 ZIP 형식입니다. 이러한 형식 간의 차이점은 다음과 같습니다:
- APK 파일은 디바이스에서 배포 및 실행할 수 있습니다.
- AAB는 Google Play 스토어에서 해석하기 위한 것으로, 다양한 기기 아키텍처 및 폼 팩터에 맞는 APK 파일을 생성하는 데 사용됩니다.
- AAR은 안드로이드 라이브러리라는 점에서 APK 및 AAB 형식과 근본적으로 다릅니다. Android 앱 모듈의 종속성으로 사용할 수는 있지만 자체적으로 실행할 수는 없습니다.
안드로이드 애플리케이션 번들
애플리케이션을 로컬에서 테스트하려면 장치에 직접 설치 및 실행할 수 있는 APK 형식이 적합합니다. Google Play 스토어에 배포하려면 비슷한 레이아웃을 가진 AAB를 사용하는 것이 좋습니다. AAB의 추가적인 편의성은 사용자가 다운로드하는 실제 패키지의 크기를 늘리지 않고도 모든 대상 ABI를 동일한 번들에 포함할 수 있다는 것입니다. AAB를 사용하면 Google Play 스토어에서 다운로드 요청을 발행하는 기기에 최적화된 APK 패키지를 생성하고 게시자 키로 자동으로 서명합니다. 자세한 내용은 Google Play에 게시하기를 참조하세요.
AAB 형식에 대한 자세한 내용은 Android 앱 번들을 참조하세요.
두 경우 모두 애플리케이션 번들은 프로젝트의 shared
라이브러리와 애플리케이션에 필요한 Qt의 종속성을 포함하는 특정 디렉토리 구조에서 생성됩니다. 또한 모든 에셋, 리소스, jar
파일 또는 프로젝트 Java 코드가 컴파일되어 포함됩니다.
애플리케이션 번들 생성하기
Android용 Qt 앱을 배포하려면 Qt Creator 을 사용하는 것이 좋습니다. 그렇지 않으면 명령줄을 통해 CMake 또는 qmake를 사용하여 동일한 작업을 수행할 수 있습니다. 자세한 내용은 명령줄에서 안드로이드용 Qt 프로젝트 빌드하기를 참조하십시오.
패키징 및 배포 프로세스는 CMake 또는 qmake에서 처리하며, 내부적으로 androiddeployqt 도구를 사용하여 Android 앱 빌드 및 배포의 세부 사항을 관리합니다. Qt Creator 에서도 동일한 도구를 사용합니다.
안드로이드 기능으로 Qt 확장하기
기본적으로 안드로이드용 Qt는 안드로이드 앱을 실행하는 데 필요한 대부분의 작업을 수행하며, 가장 유용한 API를 Qt에서 직접 사용하거나 QJniObject 를 사용하여 쉽게 사용할 수 없는 API를 호출할 수 있습니다. 다양한 빌드 및 배포 사례를 처리하는 CMake도 마찬가지입니다. 그러나 Java/kotlin 코드 작성이나 Android 리소스 관리 사용과 같이 네이티브 Android 기능의 모든 기능이 필요한 경우도 있을 수 있습니다. Qt는 사용자가 템플릿 세트를 확장할 수 있도록 허용하여 이를 가능하게 합니다.
Qt에서 사용하는 기본 템플릿은 Android용 Qt 설치 경로(예: Unix의 경우 ~/Qt/<version>/android_<abi>/src/android/templates
) 아래에서 찾을 수 있습니다. 이러한 템플릿을 사용하려면 Qt Creator: 매니페스트 파일 편집을 참조하여 Qt Creator 프로젝트에 템플릿을 복사할 수 있습니다. 또는 android
하위 디렉토리에 있는 프로젝트 소스에 수동으로 복사할 수 있습니다. 그런 다음 CMakeLists.txt
에서 다음 속성을 정의하세요:
set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
또는 pro
파일에서 qmake의 경우:
android: ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
참고: Qt Creator 를 사용하는 경우 이 경로 아래의 파일은 CMake를 사용하는 경우 기본적으로 프로젝트 파일 아래에 표시됩니다. qmake에서 동일한 동작을 얻으려면 DISTFILES를 사용하여 해당 파일 경로를 프로젝트에 수동으로 추가하세요.
빌드 프로세스는 프로젝트에서 빌드 디렉토리 <build_path>/android-build
또는 프로젝트에서 QT_ANDROID_PACKAGE_SOURCE_DIR
을 설정하지 않은 경우 기본 템플릿에서 템플릿을 빌드 디렉토리로 복사합니다. 그 후 <build_path>/android-build
디렉터리가 패키징 디렉터리 역할을 합니다. 애플리케이션 번들은 거기에서 Gradle을 사용하여 생성됩니다.
이제 기본 템플릿을 확장한 후 사용자가 작업할 수 있는 다양한 부분을 살펴보겠습니다.
안드로이드 매니페스트.xml
AndroidManifest.xml
파일은 애플리케이션에 대한 자세한 메타 정보를 제공합니다. 이 정보는 애플리케이션 번들을 사용자 지정하는 데 사용되며, 디바이스에서 애플리케이션의 기본 방향과 같이 활성화할 기능을 결정하는 데 사용됩니다. 또한 버전 코드, 기기 지원, 패키지 이름 등에 대한 정보를 위해 Google Play 스토어에서 사용됩니다. 안드로이드 매니페스트는 안드로이드 서비스 및 사용자 지정 안드로이드 활동을 정의하는 데도 사용됩니다.
안드로이드 매니페스트 파일에 대한 자세한 내용은 AndroidManifest.xml
, 안드로이드 매니페스트 파일 문서 및 Qt Creator 의 페이지 Qt Creator 를 참조하세요: 매니페스트 파일 편집을 참조하세요.
그래들 파일
Gradle은 안드로이드 패키지를 빌드하는 데 사용됩니다. Qt에는 두 세트의 Gradle 관련 파일이 포함되어 있습니다:
- 특정 버전의 Gradle 자체를 다운로드하는 데 사용되는 Gradle 래퍼와 Gralde 빌드를 호출하는 데 사용되는 빌드 스크립트입니다. 이러한 파일은 예를 들어
~/Qt/<version>/android_<abi>/src/3rdparty/gradle
에서 Qt와 함께 제공됩니다.참고: 일반적으로 Qt와 함께 제공되는 것과 동일한 Gradle 버전을 사용하는 것이 좋습니다. 그러나 다른 Gradle 버전을 사용하려는 경우 Gradle 래퍼(
gradle-wrapper.properties
)를 수정하여 사용하려는 Gradle 버전으로 설정할 수 있습니다. - Android 템플릿 아래에 있는 Gradle 구성 파일
build.gradle
입니다. 이 파일은 Gradle에 필요하며 빌드를 사용자 지정하는 데 사용할 수 있습니다. 빌드 대상 또는 최소 API를 설정하거나 라이브러리 종속성을 추가하는 데 사용할 수 있습니다. 또한 Android 앱을 빌드하는 데 필요한 Gradle 종속성인 Android Gradle 플러그인을 설정하는 데 사용할 수도 있습니다. 예를 들면 다음과 같습니다:buildscript { ... dependencies { classpath 'com.android.tools.build:gradle:8.6.0' } }
자세한 내용은 Android: 빌드 구성 파일을 참조하세요.
Java/Kotlin 코드
Qt가 지원하지 않는 일부 API를 대상으로 하거나 다른 이유로 Java/Kotlin 코드를 포함하려면 <QT_ANDROID_PACKAGE_SOURCE_DIR>/src/
경로 아래에 코드를 배치합니다. 예를 들어, Qt 코드 내에서 Java 메서드를 호출할 수 있습니다. 예제는 Qt 안드로이드 알림 예제를 참조하세요.
리소스
안드로이드에서는 아이콘, 이미지, 문자열, 색상 등과 같은 리소스 파일을 추가할 수 있습니다. 이러한 리소스는 Java/Kotlin 코드 또는 매니페스트 파일에서 직접 참조할 수 있습니다. 이러한 파일은 <QT_ANDROID_PACKAGE_SOURCE_DIR>/res/
에서 프로젝트에 추가할 수 있습니다. 예를 들어 앱 아이콘은 res/drawable/icon.png
에서 추가할 수 있습니다.
자세한 내용은 Android를 참조하세요 : 앱 리소스 개요를 참조하세요.
Qt 내부 리소스
기본적으로 Qt는 앱이 제대로 실행되는 데 필요한 몇 가지 리소스를 패키지로 제공합니다. 예를 들어, 유닉스에서 이러한 리소스는 ~/Qt/<version>/android_<abi>/src/android/templates/res
에서 찾을 수 있습니다.
strings.xml
이 파일은 res/values/strings.xml
에서 찾을 수 있습니다. 이 파일에는 Qt 라이브러리가 다양한 언어의 메시지 번역을 참조하는 데 사용하는 문자열이 포함되어 있습니다.
libs.xml
이 파일은 res/values/libs.xml
에서 찾을 수 있습니다. 이 파일은 Qt 라이브러리의 배포 정보를 관리하는 데만 사용되며 수동으로 수정하지 않는 것이 좋습니다.
안드로이드 에셋
Android 에셋 관리에 대한 자세한 내용은 리소스 추가하기를 참조하세요.
Android 라이브러리
Qt 프로젝트에 타사 라이브러리를 사용하는 방법에 대한 자세한 내용은 안드로이드 프로젝트에 라이브러리 포함하기를 참조하십시오.
© 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.