반응형

Play Store 게시를 위한 Qt 앱 준비

이 블로그 게시물은 Play Store에 게시하기 위해 CMake로 Qt for Android 앱을 준비하는 전체 과정을 안내합니다. 마지막에는 수백만 명의 Android 사용자에게 Qt 앱을 배포할 준비가 될 것입니다. 안전띠를 매세요!


CMake를 사용한 앱 구성

Qt 6은 뛰어난 CMake 지원을 제공하며 여기에는 Android도 포함됩니다. Android 앱은 AndroidManifest.xml 또는 Gradle 빌드 구성 파일에서 설정되는 앱의 여러 측면에 따라 달라집니다. 원하는 경우 언제든지 Qt 프로젝트에서 해당 파일을 관리할 수 있지만, Qt는 CMake 프로젝트 구성 내에서 직접 관리할 수 있는 많은 API를 제공합니다:

대상 속성 설정

패키지, 앱 이름, 앱 아이콘, 버전 정보와 같은 필수적인 Android 속성을 정의합니다.

set_target_properties(${appname} PROPERTIES
    QT_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android"
    QT_ANDROID_PACKAGE_NAME "io.qt.calqlatr"
    QT_ANDROID_APP_NAME "Calqlatr"
    QT_ANDROID_APP_ICON "@drawable/ic_launcher"
    QT_ANDROID_TARGET_SDK_VERSION 35
    QT_ANDROID_MIN_SDK_VERSION 28
    QT_ANDROID_VERSION_NAME "1.0"
    QT_ANDROID_VERSION_CODE 10
)

QT_ANDROID_TARGET_SDK_VERSION의 경우 Google Play Store에서 요구하는 현재 버전을 사용해야 합니다.

QT_ANDROID_APP_ICON에 관해서는 아이콘 파일/그림 파일이 디렉토리 아래에 존재할 것으로 예상합니다:

/<QT_ANDROID_PACKAGE_SOURCE_DIR>/res/drawable-<dpi>

이러한 아이콘 파일을 생성하려면 Qt 크리에이터의 안드로이드 아이콘 생성기 또는 안드로이드 스튜디오의 아이콘 크리에이터를 사용할 수 있습니다. 또는 인터넷을 통해 여러 온라인 안드로이드 아이콘 생성 도구 중 하나를 사용할 수도 있습니다.

패키지 플러그인 관리

한 걸음 더 나아가 앱 번들에 어떤 플러그인을 패키징할지 사용자 지정할 수 있습니다. Qt Android 배포 도구의 작동 방식 때문에 빌드 시 어떤 플러그인이 필요한지 알 수 없기 때문에 런타임에 필요하지 않은 플러그인을 패킹할 수 있으며, 이를 해결하기 위해 어떤 플러그인을 포함하거나 제외할지 명시적으로 관리할 수 있습니다. 이 작업은 qt_import_plugins() 함수를 사용하여 수행할 수 있습니다:

qt_import_plugins(${appname}
    INCLUDE_BY_TYPE imageformats Qt::QSvgPlugin Qt::QJpegPlugin
    EXCLUDE_BY_TYPE iconengines networkinformation tls platforminputcontexts qmltooling
)

첫 번째 줄 INCURE_BY_TYPE은 이미지 형식 유형의 QSvg 및 QJpeg 플러그인만 포함되도록 보장하며, EXCURE_BY_TYPE이 포함된 두 번째 줄은 앱에 실제로 필요하지 않은 다른 플러그인 유형을 추가하지 않도록 보장합니다. qt_import_plugins()는 이 대상이 링크하는 종속성 목록에서 플러그인만 포함하려고 시도한다는 점을 명심하세요.

릴리스 빌드 유형 사용

Play 스토어에 게시된 앱은 항상 릴리스 빌드 유형으로 예상되므로 나중에 빌드 유형을 변경하기로 결정한 경우 일부 작업을 다시 수행하지 않으려면 이 단계를 처음부터 바로 설정하는 것이 중요합니다.

또는 명령줄에서 다음을 사용하여 이 작업을 수행할 수 있습니다.

qt-cmake -DCMAKE_BUILD_TYPE=Release ...

기본적으로 Android 릴리스 앱은 디버그할 수 없으므로 AndroidManifest.xml 또는 Gradle Configuration에서 디버그할 수 있는 상태를 false로 설정하는 것을 명시적으로 관리하면 됩니다. 또한 Android에서 권장하는 대로 다양한 로그는 프로덕션 장치에서 그다지 유용하지 않으므로 비활성화하는 것이 좋습니다.

다중 ABI 빌드 활성화

여러 디바이스 아키텍처를 지원하려면 Android 멀티 ABI APK 및/또는 번들(AAB)을 생성하도록 빌드를 구성하세요. 공식 설치 프로그램에서 Android 버전용 Qt를 설치한 경우 CMake 변수로 앱을 구성하는 것만큼이나 간단할 수 있습니다:

qt-cmake -DQT_ANDROID_BUILD_ALL_ABIS:BOOL=ON ...

이는 Qt Creator의 프로젝트 설정에서도 쉽게 설정할 수 있습니다.

Android 멀티 ABI 빌드의 Qt 처리에 대한 자세한 설명은 Alexey Edelev의 블로그 게시물인 사용자 프로젝트용 Android 멀티 ABI 빌드가 돌아왔습니다를 참조하세요.

서명 키 준비

Google Play 스토어에서는 모든 앱 릴리스에 서명해야 합니다. 이 블로그 게시물을 작성할 때 Google은 Google Play 관리 서명 키를 사용할 것을 권장합니다. 이렇게 하면 두 개의 서명 키가 생성되며, 하나는 Play 스토어 콘솔에서 앱을 만들 때 생성되고 이후 Google에서 관리합니다. 두 번째 키는 로컬에 있는 키로, 업로드 키라고 불리며, 번들의 진위 여부를 확인하기 위해 Google Play 콘솔에 업로드할 때 앱 번들에 서명하는 데 사용됩니다. 자세한 내용은 Play 앱 서명 사용을 참조하세요.

결론적으로 업로드 키를 생성해야 합니다. Qt 크리에이터와 안드로이드 스튜디오 모두 이러한 키를 만드는 데 도움이 되는 UI 도구를 갖추고 있습니다.

Qt Creator 사용

Qt 크리에이터를 사용하여 이 문제를 처리하려면 안드로이드 패키지 서명을 참조하세요. 키가 생성되면 프로젝트 설정 > 안드로이드 APK 빌드 > 애플리케이션 서명 > 패키지 서명 확인란을 눌러야 합니다.

  • Project Settings > Build Android APK > Application Signature > Sign package

명령줄 사용

명령줄 프롬프트만을 사용하여 서명 키 저장소를 생성하려면 다음을 사용하세요.

keytool -genkey -keyalg RSA -keystore upload-key.keystore \
    -alias play_apps \
    -storepass <password> -keypass <key-password> \
    -dname "CN=<name>, OU=<unit>, O=<organisation>, L=<city>, ST=<state>, C=<country>"

준비가 완료되면 다음 인수로 프로젝트를 구성하여 프로젝트에 서명할 수 있습니다:

qt-cmake -DQT_ANDROID_SIGN_APK:BOOL=ON -DQT_ANDROID_SIGN_AAB:BOOL=ON ...

그런 다음 키의 세부 정보를 지정하는 다음 환경 변수를 설정합니다.

export QT_ANDROID_KEYSTORE_PATH=upload-key.keystore
export QT_ANDROID_KEYSTORE_ALIAS=play_apps
export QT_ANDROID_KEYSTORE_STORE_PASS=<password>
export QT_ANDROID_KEYSTORE_KEY_PASS=<key-password>

AAB 번들 활성화

오늘날 Play Store는 APK보다 주로 Android App Bundle(AAB)을 사용합니다. 이는 더 많은 호환성을 제공하고 출시 목적에 더 실용적이기 때문입니다. AAB는 다양한 디바이스 아키텍처, 화면 크기 및 밀도를 위한 리소스와 라이브러리를 패키지로 제공합니다. 이후 스토어는 각 디바이스의 요구 사항에 따라 설치 가능한 APK를 생성합니다. 자세한 내용은 Android App Bundle에서 자주 묻는 질문을 참조하세요.

이제 Qt에게 AAB 번들을 생성하라고 말해 보겠습니다...

Qt Creator 사용

Qt Creator를 사용하여 이 문제를 처리하려면 안드로이드 패키지 서명을 참조하세요. 키가 생성되면 프로젝트 설정 > 안드로이드 APK 빌드 > 고급 작업 > 안드로이드 앱 번들 빌드 확인란을 눌러야 합니다. 또한 Qt Creator가 빌드된 후 릴리스 디렉토리를 열도록 하려면 "빌드 후 패키지 위치 열기 (Open package location after build)" 확인란을 클릭합니다.

  • Project Settings > Build Android APK > Advanced Actions > Build Android App Bundle

명령줄 사용

앱에 대한 AAB를 생성하려면 다음을 실행하세요.

cd build
cmake --build . --target aab

프로젝트 아래에 여러 앱이 있는 경우, 이전 명령어는 프로젝트의 각 앱/실행 가능한 대상에 대해 AAB를 생성하므로 특정 대상에 대해서만 AAB를 생성하려면 다음을 실행할 수 있습니다:

cd build
cmake --build . --target appname_make_aab

그러면 경로 아래에 AAB가 생성됩니다.

/<project-build-path>/android-build-appname/build/outputs/bundle/release/android-build-appname-release.aab

그 후에는 빌드에서 Play 스토어에서 허용되는 서명된 릴리스 패키지를 생성해야 합니다.


Play 스토어 콘솔

앱을 게시하기 전에 다양한 디바이스와 시나리오로 앱을 테스트하여 앱이 대중에게 적합한지 확인해야 한다는 것은 말할 필요도 없습니다. 지금은 스크린샷, 시연 디자인, 홍보 동영상 등 작품을 준비하기에도 좋은 시기입니다.

Google은 Google Play Console을 통해 게시된 앱을 관리할 수 있도록 지원하므로, 가장 먼저 필요한 것은 계정을 준비하고 Play Console 시작 방법에 제공된 단계를 따르는 것입니다.

이제 마지막 단계는 게시입니다. 스토어에서 앱을 사용할 수 있도록 하는 다양한 요구 사항과 단계에 대한 종합적인 가이드를 보려면 공식 플레이 콘솔 가이드인 앱 생성 및 설정을 따르는 것이 좋습니다. 앱 준비, 테스트 트랙 생성, 앱 번들 업로드, 검토 및 최종적으로 앱을 Play 스토어에 출시하는 방법에 대해 단계별로 안내해 드립니다.

스토어에 대한 더 유용한 정보를 통해 최상의 결과를 얻으려면 Google Play Console 웨비나를 확인하는 것도 좋습니다.

Android 앱을 출시할 때 고려해야 할 전반적인 팁과 고려 사항도 제공하므로 Google에서 앱 게시 가이드가 매우 유용하다고 생각하시면 됩니다.

728x90
반응형

+ Recent posts