Android への移植

Android がサポートしていない特定のハードウェアやソフトウェアの機能に依存していない限り、ほとんどの Qt アプリケーションは Android に簡単に移植できます。

移植方法は、既存のアプリケーションが QML ベースか Widget ベースか、ビルドツール、モバイルアプリケーションから移植するかデスクトップアプリケーションから移植するかによって異なります。

QML ベースのアプリケーションを CMake でビルドするのが、モバイルアプリケーショ ンには最適なアプローチと考えられます。

Qt デスクトップアプリケーションからの移植

既存の Qt コードのほとんどは動作するはずですが、UI のスケーラビリティや、さまざまな方向や画面サイズに対応したレイアウトについて、いくつか決定しなければなりません。Qt Qml アプリケーションを十分に活用するために、レスポンシブレイアウトのアプローチを検討してください。

アプリストアのガイドラインやテーマのガイドラインなど、Qt を使用することで直接影響を受けない考慮事項があり、アプリケーションの開発方法に影響を与える可能性があります。これらについては、ここでは説明しません。

リソースの追加

ほとんどのアプリケーションにはリソースが必要です。ここでは、それが Android へのアプリケーションの移植にどのように影響するかについて説明します。

Qt リソースシステムの使用

ほとんどのUIアプリケーションと同様に、Qtアプリケーションも画像、アイコン、翻訳ファイルなどのリソースに依存します。これらのリソースは、アプリケーションが正しく機能するために必要なので、デバイス上で利用できるようにする必要があります。

最も便利な方法は、リソースをqrcファイルにバンドルし、アプリケーションのバイナリに組み込むことです。この方法は移植の手間を大幅に削減し、リソースへのアクセスを高速化します。また、クロスプラットフォームなアプローチなので、他のプラットフォームへの移植も容易になります。

デフォルトでは、すべてのQtアプリケーションは":/"接頭辞またはURLスキームの接頭辞 "qrc: "を使用してqrcファイルのコンテンツにアクセスできます。qrc ファイルの詳細とその扱い方については、Qt Resource System を参照してください。

アセットアプローチを使ったリソースの追加

Qt for Android では、Android Assets メカニズムに基づいた特別な仮想ファイルシステムを提供しています。ANDROID_PACKAGE_SOURCE_DIR/assets/"ディレクトリに置かれたファイルは、アプリケーションパッケージの一部としてパッケージ化されます。

アセットアプローチは、Android APIとの相互運用性を高めるための最良の選択肢です。assets: "というプレフィックスを使って、ディレクトリ内のすべてのリソースにアクセスできます。qrcとは異なり、この方法はAndroidに特化したもので、クロスプラットフォームのソリューションではありません。

注意: Qt Resource System を使用するには、qrc ファイルを共有ライブラリにバンドルし、最初に解凍してリンカで読み込む必要があります。一方、Android アセットはAPKに圧縮されており、アプリケーションで直接使用できます。Android アセットは APK 内で圧縮されており、アプリケーションで直接使用することができます。つまり、Android アセットを使用することで、より少ないスペースで済みますが、Qt とのクロスプラットフォーム・ソリューションではありません。

CMakeを使ったアセットアプローチ

CMake や CMake with Qt を初めて使う場合は、Build with CMake を参照してください。ここでは、リソースの追加に適用できるステップに焦点を当てています。

Androidマニフェストファイルによって制御されるいくつかのものを変更したいと思うでしょう。詳しくはQt Android Manifest File Configurationを参照してください。そのため、QT_ANDROID_PACKAGE_SOURCE_DIRをこのように設定する必要があります:

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

これで、アセットをそのフォルダに直接配置するか、CMakeでカスタムステップを作成して、メインプロジェクトのパスからアセットパスにコピーすることができます。

その後、以下のように C++ からイメージアセットにアクセスできます:

QImage image("assets:/images/happy.png");

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