AndroidにおけるQt QuickのView

本稿は「Qt Quick in Android as a View」の抄訳です。
 

このブログ投稿は、新しい機能であるQMLとQt Quickを非Qt AndroidアプリでAndroid Viewとして使用できるようにする、Qt 6.7.0のテクノロジープレビューの機能を紹介するシリーズの第1回です。また、ワークフローを簡素化するためのAndroid Studioプラグインも作成しました。この投稿では、その機能の概要、何をするか、なぜ追加しているのか、そしてどこで活用できるかについて紹介します。次の投稿では、いくつかのコード例を使用して使い方を示し、ツール、テスト、3Dなどのユースケースについて詳しく見ていきます。

Qt 5以降、QtアプリケーションをAndroidに展開することは可能でしたが、まずアプリケーションをQtで構築する必要がありました。クロスプラットフォームであることを望んでいる場合や、Android固有のAPIに深入りしたくない場合は、これは素晴らしいことですが、Qtに「全てを委ねる」ことができないユースケースもあります。もしかすると、Android向けのアプリを開発することに興味があり、他のプラットフォームが優先事項ではないかもしれません。Android APIを多用することを予想しており、Android固有のJavaやKotlinコードをQt C++やQMLと結びつけるためにJNIを使用することにあまり乗り気ではないかもしれません。

Androidアプリを最優先にしたい場合でも、UIに3D、アニメーション、カスタムスタイルの要素などを追加したい場合があるかもしれません。そして、Qt Quickを使用すれば、それが簡単に実現できます。そのため、Qt 6.7.0では、多くの要望があった機能を導入しました。つまり、QMLを使用して、AndroidアプリにQt Quickをビューとして追加できるようになりました。JavaやKotlinを使用してAndroid Studioでアプリを作成し、それを他のAndroidアプリと同じようにして、Qt Quickを輝かせるところに追加することができます。別のプロジェクトから既存のQMLコードをAndroidアプリに追加したい場合も簡単にできます。

morphing-example-landscape-3

図:QtQuick3D MorphingサンプルをネイティブのAndroidスライダーを利用してAndroidアプリに埋め込まれた状態

 

ネイティブUIにQWindows埋め込むことは多くのプラットフォームで可能でしたが、Javaから行うと複雑さが増します。そこで、必要な手順を扱う新しいJavaクラスである QtQuickView を追加しました。このクラスは、自身を表す外部ウィンドウと、指定されたQMLソースを持つ QQuickView を作成し、それを自身に親として設定します。さらに、Qtライブラリをロードし、Qtランタイムをセットアップします。これらのすべては内部で行われるため、JNIコールの作成やこれらのウィンドウのライフサイクルの監視を気にする必要はありません。必要なのは、QtQuickViewをビュー階層に追加するだけです。

このクラスを使用するには、まずAndroidプロジェクトにQtを追加する必要があります。この作業を手助けするためのAndroid Studioプラグインを作成しました。詳細はドキュメントをご覧ください。このプラグインを使用すると、Qt Quickプロジェクトを作成してインポートし、Androidプロジェクトのビルドチェーンに統合することができます。このプラグインにより、Qt Creatorを使用してQtプロジェクトをビルドし、ライブラリなどのビルド成果物をAndroidプロジェクトに手動でコピーする手間が省けます。

この機能はまだ初期段階にありますが、ぜひお試しいただき、さらなる開発のためのフィードバックやアイデアを共有していただければ幸いです。

次回の投稿では、QtコンテンツをAndroid Studioプロジェクトに追加するすべての手順を詳しく説明しますので、お楽しみにしてください!


Blog Topics:

Comments