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

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

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 を使用してコマンドラインから行うこともできます。詳細については、「コマンドラインから Qt for Android プロジェクトをビルドする」を参照してください。

パッケージングとデプロイのプロセスは、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 で以下のプロパティを定義してください:

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 CreatorQt Creator のページを参照してください: マニフェスト・ファイルの編集.

Gradleファイル

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

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

    注意: 通常、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 プロジェクトへのライブラリの追加 を参照してください。

© 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.