このページでは

Androidへのアプリケーションのデプロイ

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

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

Androidでは、コードを「アプリケーションパッケージ(APK)」、「Androidアプリバンドル(AAB)」、または「Androidアーカイブ(AAR)」の3つの方法でパッケージ化できます。これらはそれぞれ、あらかじめ定義されたディレクトリ構造に従った特定のZIP形式です。これらの形式の違いは以下の通りです:

  • APKファイルは、デバイスに展開して実行することができます。
  • AABはGoogle Playストアによって解釈されることを目的としており、さまざまなデバイスアーキテクチャやフォームファクタ向けのAPKファイルを生成するために使用されます。
  • AARは、Androidライブラリであるという点で、APKやAAB形式とは根本的に異なります。Androidアプリモジュールの依存関係として使用できますが、単独で実行することはできません。詳細については、「Android: Android Archive (AAR)」を参照してください。

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

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

AAB 形式の詳細については、「Android App Bundles」を参照してください。

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

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

Android向けQtアプリのデプロイには、Qt Creator の使用を推奨します。それ以外の場合は、CMakeまたはqmakeを利用してコマンドラインから同様の操作を行うことも可能です。詳細については、「コマンドラインからのAndroid向けQtプロジェクトのビルド」を参照してください。

パッケージ化とデプロイのプロセスは CMake または qmake によって処理されます。これらは内部でandroiddeployqtツールを使用し、Android アプリのビルドおよびデプロイに関する詳細を管理しています。Qt Creator も同様のツールを使用しています。

Android機能によるQtの拡張

デフォルトでは、Qt for AndroidがAndroidアプリを起動・実行させるための主要な処理のほとんどを代行し、最も有用なAPIはQtから直接利用でき、すぐに利用できないAPIについてはQJniObject を使用して呼び出すことができます。これは、さまざまなビルドおよびデプロイのケースを処理するCMakeについても同様です。 しかし、場合によっては、Java/Kotlinコードの記述やAndroidのリソース管理の利用など、ネイティブなAndroid機能の全機能を活用する必要が生じることもあります。Qtでは、ユーザーがテンプレートのセットを拡張できるようにすることで、これを可能にしています。

Qtで使用されるデフォルトのテンプレートは、Qt for Androidのインストールパス(Unixの場合は~/Qt/<version>/android_<abi>/src/android/templates など)にあります。これらのテンプレートを使用するには、Qt Creator を実行してプロジェクトにコピーすることができます。詳細は「Qt Creator: Android Deploy Qt」を参照してください。 あるいは、手動でプロジェクトのソースディレクトリ内のandroid サブディレクトリにテンプレートをコピーすることもできます。その場合は、CMakeLists.txt で以下のプロパティを定義するようにしてください:

set_property(TARGET target_name PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
          "${CMAKE_CURRENT_SOURCE_DIR}/android")

あるいは、qmake を使用する場合は、pro ファイルに以下を記述してください:

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を使用して作成されます。

QT_ANDROID_GRADLE_MULTI_MODULEが有効になっている場合、パッケージングディレクトリには代わりに複数のモジュールからなるGradleプロジェクトが格納されます。その後、<build_path>/android-build/app からアプリケーションがパッケージ化され、各動的機能にはその隣に独自のモジュールが割り当てられます。

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

AndroidManifest.xml

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

AndroidManifest.xml の詳細については、Android Manifestファイルのドキュメントおよび{Qt Creator: Androidデプロイ構成}{マニフェストファイルの編集}を参照してください。

Gradle ファイル

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

  • Gradle ラッパー(Gradle 本体の特定のバージョンをダウンロードするために使用される)と、Gradle ビルドを呼び出すために使用されるビルドスクリプトです。これらのファイルは、例えば~/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:9.2.1'
        }
    }

    詳細については、「Android: ビルド構成ファイル」を参照してください。

Java/Kotlin コード

Qt でサポートされていない API を対象とする場合や、その他の理由で Java/Kotlin コードを含めるには、そのコードを `<QT_ANDROID_PACKAGE_SOURCE_DIR>/src/` パス下に配置してください。たとえば、Qt コード内から Java メソッドを呼び出すことができます。例については、「Qt for 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 プロジェクトへのライブラリの組み込み」を参照してください。

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