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 アセットを使用することで、より少ないスペースで済みますが、Qt とのクロスプラットフォーム・ソリューションではありません。

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

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

Android Manifestファイルによって制御されるいくつかのものを変更したいと思うでしょう。詳しくは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");

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