Androidへの移植
Android でサポートされていない特定のハードウェアやソフトウェアの機能に依存していない限り、ほとんどの Qt アプリケーションは Android へ容易に移植できるはずです。
移植のアプローチは、既存のアプリケーションが QML ベースかウィジェットベースか、使用するビルドツール、およびモバイルアプリケーションから移植するかデスクトップアプリケーションから移植するかによって異なります。
CMake でビルドされた QML ベースのアプリケーションは、モバイルアプリケーションにとって最適なアプローチと考えられています。
Qt デスクトップアプリケーションからの移植
既存のQtコードの大部分は動作するはずですが、UIのスケーラビリティや、異なる画面向きや画面サイズに対応したレイアウトについて、いくつかの判断を下す必要があります。Qt Qml アプリケーションの機能を最大限に活用するために、レスポンシブレイアウトのアプローチを検討してください。
アプリストアのガイドラインやテーマのガイドラインなど、Qtの使用自体には直接影響しないものの、アプリケーションの開発方法に影響を与える可能性のある考慮事項があります。これらについてはここでは扱いません。
リソースの追加
ほとんどのアプリケーションにはリソースが必要です。ここでは、それがアプリケーションのAndroidへの移植にどのような影響を与えるかについて説明します。
Qtリソースシステムの使用
ほとんどのUIアプリケーションと同様に、Qtアプリケーションも画像、アイコン、翻訳ファイルなどのリソースに依存しています。これらのリソースは、アプリケーションが正しく機能するために必要であるため、デバイス上で利用可能にする必要があります。
最も便利な方法は、リソースを qrc ファイルにバンドルし、アプリケーションのバイナリに組み込むことです。このアプローチにより、移植の労力が大幅に軽減され、リソースへのアクセスも高速化されます。また、これはクロスプラットフォームなアプローチであるため、他のプラットフォームへの移植も容易になります。
デフォルトでは、すべてのQtアプリケーションは、「:/」プレフィックスまたはURLスキーマプレフィックス「qrc:」を使用して、qrcファイルの内容にアクセスできます。qrcファイルの詳細およびその取り扱い方法については、『Qtリソースシステム』を参照してください。
アセット方式を使用したリソースの追加
Qt for Android は、Android の Assets メカニズムに基づいた特別な仮想ファイルシステムを提供します。「ANDROID_PACKAGE_SOURCE_DIR/assets/」ディレクトリ下に配置されたファイルは、アプリケーションパッケージの一部としてパッケージ化されます。
Android API との相互運用性を高めるには、アセット方式が最適な選択肢です。「assets:」プレフィックスを使用することで、このディレクトリ内のすべてのリソースにアクセスできます。qrc とは異なり、この方式は Android 固有のものであり、クロスプラットフォームのソリューションではありません。
注: Qtリソースシステムを使用する場合 、qrc ファイルが共有ライブラリにバンドルされるため、リンクツールによってまず解凍され、読み込まれる必要があります。一方、AndroidアセットはAPK内に圧縮されており、アプリケーション内で直接使用できます。つまり、Androidアセットを使用すると占有スペースを削減できますが、Qtとのクロスプラットフォームソリューションにはなりません。
CMake を使用したアセットの取り扱い
CMake の使用や Qt との併用が初めての場合は、「CMake によるビルド」を参照してください。ここでは、リソースを追加するための手順に焦点を当てます。
おそらく、Androidマニフェストファイルによって制御されているいくつかの項目を変更したいと思うでしょう。詳細については、「Qt for Android マニフェストファイルの設定」を参照してください。おそらく、すでに次のように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");© 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.