Androidにアプリケーションをデプロイする

この記事では、Qt アプリケーションを Android デバイスにデプロイするために必要な技術的手順について説明します。

Android パッケージングオプション

Androidでは、アプリケーションパッケージ(APK)、Android App Bundle(AAB)、Android Archive(AAR)の3つの方法でコードをパッケージすることができます。それぞれ特定のタイプのZIP形式で、事前に定義されたディレクトリ構造に従っています。これらのフォーマットの違いは以下の通りです:

  • APKファイルは、デバイス上に配置して実行することができます。
  • AABは、Google Playストアで解釈されることを意図しており、異なるデバイスアーキテクチャやフォームファクター用のAPKファイルを生成するために使用されます。
  • AARはAndroidライブラリであるという点で、APKやAAB形式とは根本的に異なります。Androidアプリモジュールの依存関係として使用することはできますが、単独で実行することはできません。

Androidアプリケーション・バンドル

アプリケーションをローカルでテストするには、デバイスに直接インストールして実行できるAPK形式が適しています。Google Playストアに配布する場合は、同じようなレイアウトのAABを使用することをお勧めします。AABの利便性は、ユーザーがダウンロードする実際のパッケージのサイズを大きくすることなく、すべてのターゲットABIを同じバンドルに含めることができることです。AABを使用する場合、Google Playストアはダウンロードリクエストを発行したデバイス用に最適化されたAPKパッケージを生成し、あなたのパブリッシャーキーで自動的に署名します。詳細については、Google Playへの公開を参照してください。

AABフォーマットの詳細については、Android App Bundlesを参照してください。

どちらの場合でも、アプリケーションバンドルは、プロジェクトのshared ライブラリと、アプリケーションに必要な Qt の依存関係を含む特定のディレクトリ構造から生成されます。さらに、アセット、リソース、jar ファイル、またはプロジェクトの Java コードがコンパイルされて含まれます。

アプリケーションバンドルの生成

Qt for Android アプリのデプロイには Qt Creator の使用を推奨します。そうでない場合は、CMake や qmake を使ってコマンドラインから行うこともできます。詳細は、Building Qt for Android Projects from Command Line を参照してください。

パッケージングとデプロイのプロセスは、CMake または qmake によって処理されます。CMake または qmake は、androiddeployqtツールを使用して、Android アプリのビルドとデプロイの詳細を管理します。Qt Creatorも同じツールを使用します。

Qt を Android 機能で拡張する

QJniObject デフォルトでは、Qt for AndroidはAndroidアプリを起動するために必要なほとんどの作業を行い、最も便利なAPIをQtから直接利用できるようにしています。同じことがCMakeにも当てはまり、様々なビルドとデプロイのケースを処理します。しかし、他のケースでは、Java/kotlinコードを書いたり、Androidリソース管理を使用するなど、Androidネイティブ機能のフルパワーを必要とする場合があります。Qtは、ユーザーがテンプレートのセットを拡張できるようにすることで、それを可能にします。

Qtが使用するデフォルトのテンプレートは、Qt for Androidのインストールパスの下、例えば~/Qt/<version>/android_<abi>/src/android/templates for Unixの下にあります。これらのテンプレートを使用するには、Qt CreatorでプロジェクトにコピーすることができますQt Creator:Editing Manifest Files を参照してください。あるいは、android サブディレクトリの下のプロジェクトソースに手動でコピーすることもできます。それから、CMakeLists.txt.NET Frameworkの中で以下のプロパティを定義してください:

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を使用してこれらのファイルパスをプロジェクトに手動で追加してください。

ビルドプロセスは、あなたのプロジェクトから、またはプロジェクトがQT_ANDROID_PACKAGE_SOURCE_DIR を設定していない場合はデフォルトのテンプレートから、ビルドディレクトリ<build_path>/android-build にテンプレートをコピーします。その後、<build_path>/android-build ディレクトリがパッケージング・ディレクトリとして機能します。アプリケーションバンドルはGradleを使ってそこから作成されます。

では、デフォルトのテンプレートを拡張した後、ユーザーが作業できるさまざまな部分を見ていきましょう。

AndroidManifest.xml

AndroidManifest.xml ファイルは、アプリケーションに関する詳細なメタ情報を提供します。この情報は、アプリケーションバンドルをカスタマイズするために使用され、アプリケーションのデフォルトの向きなど、どの機能を有効にするかを決定するためにデバイスによって使用されます。さらに、Google Playストアでは、バージョンコード、デバイスサポート、パッケージ名などの情報が使用されます。Androidマニフェストは、AndroidサービスやカスタムAndroidアクティビティを定義するためにも使用されます。

AndroidManifest.xml の詳細については、Android Manifest ファイルのドキュメント、および Qt Creator のQt Creator のページを参照してください:マニフェストファイルの編集

Gradle ファイル

GradleはAndroidパッケージのビルドに使用されます。Qtには2つのGradle関連ファイルが含まれています:

  • Gradle wrapperはGradle自体の特定のバージョンをダウンロードするために使用され、ビルドスクリプトはGraldeビルドを呼び出すために使用されます。これらのファイルは、例えば~/Qt/<version>/android_<abi>/src/3rdparty/gradle などのQtに付属しています。

    注意: 通常、Qtと同じバージョンのGradleを使用することを推奨します。しかし、異なるGradleバージョンを使用したい場合は、Gradleラッパーgradle-wrapper.properties を修正し、使用したいGradleバージョンに設定することができます。

  • Gradleの設定ファイルbuild.gradleAndroid Templatesの下にあります。このファイルは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 Android Notifier Example を参照してください。

リソース

Androidでは、アイコン、画像、文字列、色などのリソースファイルを追加できます。これらのリソースは、Java/Kotlinコードまたはマニフェスト・ファイルから直接参照できます。このようなファイルは、<QT_ANDROID_PACKAGE_SOURCE_DIR>/res/ でプロジェクトに追加できます。たとえば、アプリのアイコンはres/drawable/icon.png の下に追加できます。

詳細については、「Android:アプリ・リソースの概要」を参照してください。

Qt内部リソース

デフォルトでは、Qtはアプリを正しく実行するために必要なリソースをいくつかパッケージ化しています。例えばUnixの場合、これらのリソースは~/Qt/<version>/android_<abi>/src/android/templates/res の下にあります。

strings.xml

このファイルはres/values/strings.xml にあります。このファイルには、Qtライブラリが様々な言語のメッセージ翻訳を参照するために使用する文字列が含まれています。

libs.xml

このファイルはres/values/libs.xml にあります。このファイルは純粋にQtライブラリのデプロイ情報を管理するために使用されます。

Android アセット

Android アセットの管理については、リソースの追加を参照してください。

Androidライブラリ

Qt プロジェクトでサードパーティライブラリを使用する方法については、Android プロジェクトへのライブラリの追加 を参照してください。

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権はそれぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。