이 페이지에서

Android 배포 구성

Android 애플리케이션은 애플리케이션 패키지(APK), Android 앱 번들(AAB) 또는 Android 아카이브(AAR)라는 ZIP 파일로 패키징됩니다. 장치에 APK 파일을 설치하고 실행할 수 있습니다. AAB 파일은 Google Play 스토어에 업로드할 수 있습니다.

Android용 Qt에는 armv7a, arm64-v8a, x86 및 x86-64용 바이너리가 있습니다. 애플리케이션에서 여러 가지 ABI를 지원하려면 각 ABI에 대한 바이너리가 포함된 AAB를 빌드하세요. Google Play 스토어는 AAB를 사용하여 다운로드를 요청하는 기기에 최적화된 APK 패키지를 생성하고 게시자 키로 자동으로 서명합니다.

Qt Creator Android 애플리케이션에 대해 다음과 같은 배포 방법을 지원합니다:

  • 독립형 배포 가능한 애플리케이션 패키지(APK).
  • Google Play 스토어에 배포하기 위한 앱 번들(AAB).
  • 안드로이드 라이브러리라는 점에서 APK 및 AAB 형식과 근본적으로 다른 AAR. Android 앱 모듈의 종속성으로 사용할 수 있지만 단독으로 실행할 수는 없습니다.

    모든 Qt 버전은 AAB를 지원하지 않습니다. Qt 6.3.0 이상에서는 CMake로 빌드할 때 애플리케이션에 대한 다중 AAB 빌드를 지원합니다. AAR은 Qt 6.8.0 이상부터 지원됩니다. 자세한 내용은 안드로이드에 애플리케이션 배포하기를 참조하십시오.

애플리케이션 패키지에 대한 설정을 지정하려면 Projects > Build Settings > Build Android APK 로 이동하여 Details 을 선택합니다.

애플리케이션 실행에 사용할 수 있는 옵션에 대한 자세한 내용은 Android 실행 설정을 참조하세요.

애플리케이션 패키징

애플리케이션을 APK 패키지로 번들링하는 것은 간단하지 않기 때문에 Qt에는 androiddeployqt 도구가 있습니다. Android용 Qt 키트를 사용하여 애플리케이션을 배포할 때 Qt Creator 에서 이 도구를 실행하여 필요한 파일을 생성하고 APK로 번들링합니다. 자세한 내용은 안드로이드 패키지 템플릿을 참조하십시오.

androiddeployqt 도구가 생성한 패키지를 보려면 Open package location after build 을 선택합니다.

배포 설정 지정하기

애플리케이션 배포를 위한 설정을 지정하려면 Projects > Deploy Settings 으로 이동하여 Active deployment configuration 에서 배포 구성을 선택합니다.

프로젝트의 설정 배포 탭

프로젝트에 대한 배포 구성을 추가하려면 Add 을 선택합니다.

현재 배포 방법의 이름을 변경하려면 Rename 을 선택합니다.

현재 배포 방법을 제거하려면 Remove 을 선택합니다.

Qt Creator 키트 선택기에서 선택한 Android 장치에 패키지를 배포합니다. 장치를 추가하려면 Manage 을 선택합니다.

애플리케이션의 추가 시작 옵션을 지정하는 방법에 대한 자세한 내용은 Android 실행 설정을 참조하세요.

장치에서 이전에 설치된 파일을 제거하려면 Uninstall the existing app before deployment 을 선택합니다.

타사 애플리케이션과 같이 미리 빌드된 APK를 디바이스에 설치하려면 Install an APK File 을 선택합니다.

패키지 설정 지정하기

androiddeployqt 도구의 설정을 지정하려면 Projects > Build Settings > Build Android APK 로 이동하여 Details 를 선택합니다.

안드로이드 APK 빌드 단계

androiddeployqt 도구는 설정에 따라 APK를 생성합니다. 사용 가능한 옵션에 대한 자세한 내용은 androiddeployqt를 참조하세요.

컴파일 출력에서 androiddeployqt 도구가 수행하는 작업에 대한 정보를 볼 수 있습니다. 자세한 정보를 보려면 Verbose output 을 선택합니다.

디버그 서버 바이너리를 패키지에 포함하려면 Add debug server 을 선택합니다.

API 수준 선택하기

Android build platform SDK 필드에서 애플리케이션을 빌드하는 데 사용할 API 레벨을 선택합니다. 일반적으로 사용 가능한 가장 높은 API 레벨을 선택해야 합니다.

일반적으로 빌드할 때 가장 높은 버전의 Android SDK 빌드 도구를 사용해야 합니다. 필요한 경우 Android build-tools version 필드에서 다른 버전을 선택합니다.

AAB 빌드

로컬에서 애플리케이션을 테스트하려면 Qt Creator 에서 디바이스에 패키지를 설치하고 실행할 수 있으므로 APK 형식을 사용합니다. Google Play 스토어에 배포하려면 Build Android App Bundle (*.aab) 을 선택하여 AAB를 만듭니다.

CMake로 빌드하는 경우 CMake 섹션의 Initial Configuration 에서 선택한 ABI를 볼 수 있습니다. ANDROID_ABI 키의 값으로 추가 ABI를 설정할 수 있습니다:

CAAB 구축을 위한 설정

Qbs 또는 qmake로 빌드하는 경우 Build StepsABIs 필드에서 ABI를 선택할 수 있습니다:

AAB 구축을 위한 qmake 설정

AAR 빌드

Build Steps 섹션에서 AAR 대상을 선택합니다.

AAR 대상 선택

안드로이드 패키지 서명

애플리케이션을 게시하려면 인증서와 해당 개인 키로 구성되고 별칭으로 식별되는 공개-개인 키 쌍을 사용하여 서명해야 합니다. 이 키 쌍은 향후 애플리케이션의 버전이 실제로 회원님이 만든 것인지 확인하는 데 사용됩니다.

경고: 키 쌍을 분실하면 애플리케이션을 업데이트할 수 없으므로 키 쌍을 안전한 곳에 보관하고 백업 복사본을 만들어 두세요.

Qt Creator 를 사용하여 키 저장소와 자체 서명 인증서를 생성할 수 있습니다. 생성된 인증서는 X.509 v3 디지털 인증서의 구조를 가집니다. 여기에는 인증서의 버전, 일련 번호 및 유효 기간, 데이터를 암호화하는 데 사용되는 알고리즘의 ID, 인증서를 발급한 조직 및 인증서의 주체 (소유자)에 대한 정보가 있습니다. 자체 서명 인증서의 경우, 인증서 발급자와 소유자가 동일합니다. 또한 인증서에는 인증서 서명에 사용된 알고리즘에 대한 정보와 인증서의 서명이 있습니다.

비밀번호는 키 저장소를 보호합니다. 또한 각 별칭을 개별 비밀번호로 보호할 수 있습니다.

Android 애플리케이션에 서명할 때 키 저장소에서 인증서와 인증서 별칭이 있는 키 저장소를 선택해야 합니다. 서명 프로세스는 별칭에 대한 공개 키(인증서)를 APK에 포함합니다.

키 저장소와 자체 서명된 인증서를 만들려면 다음과 같이 하세요:

  1. Keystore 필드에서 Create 을 선택하여 Create a Keystore and a Certificate 대화 상자에서 하나의 키 쌍이 있는 새 키 저장소를 만듭니다:

    키 저장소 및 인증서 대화 상자 만들기

  2. Keystore 그룹에 키 저장소를 보호할 비밀번호를 입력합니다.
  3. Certificate 그룹에서 인증서의 키 크기 및 유효 기간을 지정합니다. 키 쌍을 보호하기 위해 별도의 비밀번호를 지정하거나 키 저장소 비밀번호를 사용할 수 있습니다.
  4. Certificate Distinguished Names 그룹에 키 쌍의 발급자 및 소유자를 식별하는 본인 및 회사 또는 조직에 대한 정보를 입력합니다.
  5. Save 을 선택합니다.
  6. Keystore File Name 대화 상자에서 키 저장소의 이름을 입력하고 위치를 선택합니다.
  7. Keystore 대화 상자에서 키 저장소 비밀번호를 입력하여 키 저장소에 키 쌍을 만듭니다.

키 쌍을 사용하여 Android 패키지에 서명하려면 패키지 설정 지정하기에서 설명한 Sign package 그룹 설정을 설정합니다:

  1. Keystore 필드에서 Choose 을 선택하여 기존 키 저장소를 선택합니다.
  2. Certificate alias 필드에서 키 저장소가 가지고 있는 키 쌍 목록에서 별칭을 선택합니다.
  3. 별칭을 사용하여 Android 패키지에 서명하려면 Sign package 을 선택합니다.

외부 라이브러리 추가하기

Qt Creator 애플리케이션이 사용하는 Qt 라이브러리를 자동으로 감지하여 종속성으로 추가합니다. 애플리케이션에 외부 라이브러리가 필요한 경우 Projects > Build Settings > Build Android APK 로 이동하여 Additional Libraries 에서 지정합니다. 라이브러리는 애플리케이션의 라이브러리 폴더에 복사되어 시작 시 로드됩니다.

OpenSSL 라이브러리를 추가하려면 Additional Libraries 그룹에서 Include prebuilt OpenSSL libraries 을 선택합니다. 그러면 Android OpenSSL 그룹의 장치 설정에 정의된 OpenSSL 포함 프로젝트가 추가됩니다. 이 라이브러리는 qmake 및 CMake 프로젝트에 사용할 수 있습니다.

그렇지 않으면 Additional Libraries 필드에 필수 libssl.solibcrypto.so 라이브러리 경로를 수동으로 추가할 수 있습니다.

매니페스트 파일 편집

구성 옵션을 사용하여 androiddeployqt 도구에 필요한 모든 설정을 지정할 수 있습니다. 애플리케이션 아이콘과 같은 Android 관련 설정을 지정하려면 Android 매니페스트 파일만 있으면 됩니다. 그러나 패키지를 Play 스토어에 게시하려면 매니페스트 파일이 필요합니다. 매니페스트 파일에 대한 자세한 내용은 안드로이드용 Qt 매니페스트 파일 구성을 참조하십시오.

CMake를 빌드 시스템으로 사용하는 경우 모바일 기기 튜토리얼의 지침에 따라 CMakeList.txt 파일에 Android 패키지 소스 디렉터리인 QT_ANDROID_PACKAGE_SOURCE_DIR 를 지정해야 합니다.

Qt Creator 을 사용하여 Android 매니페스트 파일을 생성하고 Android 매니페스트 편집기에서 열려면 다음과 같이 하세요:

  1. Projects > Build Settings > Build Android APK 로 이동하여 Create Templates 을 선택합니다.
  2. Android package source directory 에서 경로를 확인합니다.

    템플릿 만들기 대화 상자

  3. Qt 애플리케이션의 Java 부분을 확장하려는 경우 Copy the Gradle files to Android directory 을 선택합니다.
  4. Finish 을 선택하여 템플릿 파일을 android 디렉터리에 복사하고 편집을 위해 매니페스트 파일을 엽니다.

    Android 매니페스트 에디터의 패키지 정보

다음 표에는 설정할 수 있는 옵션이 요약되어 있습니다.

옵션
Package name애플리케이션의 유효한 패키지 이름입니다. 예: org.example.myapplication. 애플리케이션과 함께 APK로 패키징된 자동 생성된 Java 런처가 애플리케이션을 실행합니다.
Version code애플리케이션의 한 버전이 다른 버전보다 최신 버전인지 여부를 결정하는 패키지의 내부 버전 번호입니다.
Version name사용자에게 표시되는 버전 번호입니다.
Minimum required SDK매니페스트 파일에서 수동으로 설정한 경우 애플리케이션을 실행하는 데 필요한 최소 API 수준입니다.
Target SDK매니페스트 파일에서 수동으로 설정한 경우 애플리케이션의 대상 API 수준입니다.
Application name애플리케이션의 이름입니다.
Activity name활동 이름.
Style extractionQt가 사용할 UI 스타일을 결정하는 데 사용하는 메서드. 패키지 이름에 대한 자세한 내용은 스타일 추출을 참조하십시오.
Screen orientation화면 방향을 결정하는 방법.
Application icon화면 해상도에 따라 애플리케이션 아이콘으로 사용할 이미지.
Splash screen화면 방향과 해상도에 따라 스플래시 화면으로 표시할 이미지.
Permissions애플리케이션에 필요한 권한.

상단 헤더에서 XML Source 탭을 선택하여 XML 형식으로 파일을 편집합니다.

패키지 이름

Android 애플리케이션 패키지는 일반적으로 계층 구조 패턴을 사용하여 계층의 레벨을 마침표(.)로 구분하여 이름을 지정합니다. 일반적으로 패키지 이름은 조직의 최상위 도메인 이름으로 시작하여 조직의 도메인 이름과 하위 도메인 이름이 역순으로 나열됩니다. 그런 다음 조직은 패키지의 특정 이름을 선택할 수 있습니다. 패키지 이름은 가능한 한 모두 소문자로 작성해야 합니다. 예: org.qtproject.example.

패키지 이름을 명확하게 하기 위한 전체 규칙과 인터넷 도메인 이름을 패키지 이름으로 직접 사용할 수 없는 경우의 패키지 이름 지정 규칙은 Java 언어 사양 7.7항에 설명되어 있습니다.

패키지 이름에 대한 자세한 내용은 Android 애플리케이션 기본 사항을 참조하세요.

화면 방향

센서 판독값 또는 사용자 기본 설정에 따라 화면 방향을 결정하기 위한 다양한 옵션을 지정할 수 있습니다. 다음 표에는 사용 가능한 옵션이 나와 있습니다.

방향설명
지정되지 않음시스템이 방향을 선택합니다. 사용하는 정책과 따라서 특정 상황에서 선택되는 옵션은 디바이스마다 다를 수 있습니다.
뒤에활동 스택에서 바로 아래에 있는 활동과 동일한 방향을 사용합니다.
가로디스플레이 너비가 높이보다 큰 가로 방향입니다.
세로디스플레이 높이가 너비보다 큰 세로 방향입니다.
역방향 가로일반 가로와 반대 방향의 가로 방향입니다.
역 세로일반 세로와 반대 방향의 세로 방향입니다.
센서 가로가로 방향이지만 디바이스 센서에 따라 일반 또는 역방향 가로가 될 수 있습니다. 사용자가 센서 기반 회전을 잠근 경우에도 센서가 사용됩니다.
센서 세로세로 방향이지만 디바이스 센서에 따라 일반 또는 역 세로일 수 있습니다. 사용자가 센서 기반 회전을 잠근 경우에도 센서가 사용됩니다.
사용자 가로가로 방향이지만 디바이스 센서와 사용자의 선호도에 따라 일반 또는 역방향 가로가 될 수 있습니다.
사용자 세로세로 방향이지만 디바이스 센서와 사용자의 선호도에 따라 일반 또는 역세로가 될 수 있습니다.
센서방향은 디바이스 방향 센서에 의해 결정됩니다. 디스플레이의 방향은 사용자가 디바이스를 잡는 방식에 따라 달라집니다. 사용자가 디바이스를 회전하면 방향이 바뀝니다. 그러나 일부 디바이스는 기본적으로 네 가지 가능한 방향 모두로 회전하지 않습니다. 네 가지 방향을 모두 허용하려면 전체 센서 옵션을 선택합니다. 사용자가 센서 기반 회전을 잠근 경우에도 센서가 사용됩니다.
전체 센서네 가지 방향 중 어느 방향이든 디바이스 방향 센서에 의해 방향이 결정됩니다. 이 옵션은 센서 옵션과 비슷하지만 기기가 일반적으로 수행하는 작업과 관계없이 네 가지 가능한 화면 방향 중 하나를 허용한다는 점이 다릅니다. 예를 들어, 일부 디바이스는 일반적으로 세로 또는 가로를 사용하지 않지만 이 옵션을 사용하면 세로 또는 가로를 사용할 수 있습니다.
센서 없음방향은 물리적 방향 센서를 참조하지 않고 결정됩니다. 센서가 무시되므로 사용자가 디바이스를 움직이는 방식에 따라 디스플레이가 회전하지 않습니다.
사용자사용자가 현재 선호하는 방향입니다.
전체 사용자사용자가 센서 기반 회전을 잠근 경우 이 옵션은 사용자 옵션과 동일한 방식으로 작동합니다. 그렇지 않으면 전체 센서 옵션과 동일하게 작동하며 네 가지 가능한 화면 방향 중 하나를 허용합니다.
잠김방향을 현재 회전으로 고정합니다.

아이콘

저, 중, 고 및 매우 높은 DPI 디스플레이에서 애플리케이션 아이콘과 스플래시 화면으로 표시할 다양한 이미지를 설정할 수 있습니다. 다음 목록에는 일반적으로 각 카테고리와 관련된 DPI 값이 요약되어 있습니다:

  • 저밀도(LDPI): ~120dpi
  • 중간 밀도(MDPI): ~160dpi
  • 고밀도(HDPI): ~240dpi
  • 초고밀도(XHDPI): ~320dpi
  • 초초고밀도(XXHDPI): ~480dpi
  • 초초고밀도(XXXHDPI): ~640dpi

Application icon 탭에서 아이콘에 대한 설정을 지정합니다. Master icon 에서 가장 높은 해상도의 이미지를 선택하면 Qt Creator 에서 필요에 따라 저, 중, 고 및 초고 DPI 디스플레이에 맞게 크기가 조정된 버전을 생성하고 설정합니다. 또는 각 해상도에 대한 아이콘을 개별적으로 설정할 수도 있습니다.

Android 매니페스트 편집기의 애플리케이션 아이콘

스플래시 화면

Splash screen 탭에서 스플래시 화면 설정을 지정합니다. 디바이스 방향과 화면 해상도에 따라 스플래시 화면으로 표시할 이미지를 선택합니다.

Android 매니페스트 편집기의 스플래시 화면

기본적으로 활동을 그리면 스플래시 화면이 숨겨집니다. QNativeInterface::QAndroidApplication::hideSplashScreen() 이 호출될 때까지 계속 표시하려면 Sticky splash screen 을 선택합니다.

Image show mode 에서 스플래시 화면을 기기 디스플레이의 중앙에 배치할지 아니면 디스플레이를 채우도록 크기를 조정할지 선택합니다.

Background color 에서 배경색을 설정합니다.

Master image, Portrait master image, Landscape master image 에서 가장 높은 해상도의 이미지를 선택합니다.

Clear All 을 선택하여 모든 설정을 초기화하거나 모든 이미지를 제거합니다.

권한 설정하기

Android 6.0(API 23)부터 애플리케이션은 런타임에 권한을 요청해야 합니다( QCoreApplication::requestPermission() 참조). 사용자는 애플리케이션을 설치할 때 이러한 권한을 부여해야 낮은 Android API 레벨의 애플리케이션을 설치할 수 있습니다. 그러면 Android OS가 애플리케이션에 적절한 데이터 및 기능에 대한 액세스 권한을 부여합니다.

Android 매니페스트 편집기의 권한

Include default permissions for Qt modulesInclude default features for Qt modules 을 선택하여 Qt 라이브러리에 필요한 권한을 추가합니다(예: android.permission.ACCESS_BACKGROUND_LOCATION 의 경우 Qt Positioning.

권한을 추가하려면 목록에서 해당 권한을 선택한 다음 Add 을 선택합니다.

방법: 빌드 및 실행, 방법: 안드로이드용 개발, 안드로이드 실행 설정키트도참조하세요 .

Copyright © The Qt Company Ltd. and other contributors. 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.