Qt for Android(Necessitas Framework)-本当に機能しますか?

この投稿は、コンテスト「Smart Posts for Smart Posts」に参加しています。



Qt用のアプリケーションを開発した経験があり、最近Androidにコミュニケーターがいました。 Necessitasプロジェクト(以前はAndroid-Lighthouseと呼ばれていました)があることを知ったので、実際にAndroid用Qtアプリケーションを起動する可能性をテストしたかったのです。











プログラムの移植を開始するには、Necessitas SDKをインストールする必要があります(Linux、Windows、MacOSのバージョンがあります)。 Qt Creator、さまざまなQtコンポーネント、独自のライブラリが含まれており、Android SDKとNDKがまだコンピューターにインストールされていない場合はインストールされます。



設定ウィンドウ([ツール]-> [オプション])[Necessitas Qt Creator]には、追加のタブ-Androidがあります。 プロジェクトのプロパティも異なります;電話リソースを使用する権限など、Androidに固有のオプションが表示されます。 また、アプリケーションが使用するライブラリを明確に示す必要があります(私の場合、QtCore、QtGUI、QtDeclarative)。 目的のライブラリを指定しない場合、またはアプリケーションの名前を指定しない場合、出力は壊れた.apkになります。



実際のデバイスでテストするには、adbをさらに掘り下げる必要があります。 これはおそらく、LinuxでAndroid向けに何かを開発するすべての人にはおなじみですが、Qtの世界から来た人にとっては、これは予想外のことかもしれません。 デバイスをアプリケーションの展開に使用できるようにするには(そのようなデバイスが見つからなくてもQt Creatorがクラッシュしません)、 USB設定を行い、ルートの下でadbを再起動する必要があります



cd / opt / necessitas / android-sdk-linux_x86 / platform-tools /

./adb kill-server

sudo ./adb start-server



Android 2.2以降のQtアプリケーションのみをビルドできます;古いバージョンを選択すると、コンパイル中にエラーが表示されます。 アセンブリ中にエラーが発生した場合、プロジェクトフォルダーからすべての.pro.userファイルを削除し、1つの.proファイルのみを残して、Qt Creatorでプロジェクトを再度開く価値があります。



それ以外の場合、Necessitas SDKは完全に完了しています。5分で構成され、出力は.apkをインストールする準備ができています。







プログラムがデバイスで初めて起動されると、Android MarketからMinistroアプリケーションがダウンロードされます。 これは、Qtアプリケーションとオペレーティングシステム間のブリッジとして機能し、特定のQtアプリケーションに必要なライブラリをロードします。 最初の起動時に、ライブラリはWebからダウンロードされ、メモリに読み込まれます。



これがすべてどのように機能するかを理解したので 、Froyoで再フラッシュされたZTE Bladeコミュニケーターで外国語を学習するためのOppiaSanojaプログラムを正常にコンパイルして実行することができました。 Necessitasは必要な主な機能を正しくサポートしています-QMLのレンダリング(要素の比率と外観に関して-すべてがMaemoおよびMeeGoとまったく同じに見えます)、ファイルシステムの操作、QSettingsへのアクセス(ただし、プログラムを再インストールするとすべての設定がリセットされます)たとえば、Maemoでは発生しません)。







開発者やその他の利害関係者がこの製品を使用することは非常に可能です-Necessitasには重大な欠陥や制限はありません(ただし、OpenGLのハードウェアレンダリングなど、より複雑なプログラムにはない場合があります)。 そして、あなたを魅了するのは視覚そのものです。Androidデバイスで動作するQtアプリケーションの外観です。 しかし、そのような作品を大衆に移すのは時期尚早です。 簡単なプログラムでも見つかったエラーを次に示します。



-アプリケーションがアイドル状態で再起動すると、エラーウィンドウが表示されます。 Nokia N900では、同じアプリケーションが数週間バックグラウンドでハングし、正しく復元されるため、この問題はAndroidで一般的です。



-バックグラウンドから復元する場合、現在のQMLビューは描画されません(ユーザーが画面またはスライドを突くまで黒い画面が表示されます)。 この問題は開発者によってすでに気づかれています;将来のバージョンで修正されます。



-仮想キーボードは常に画面に残り、少なくとも1回呼び出されます(もちろん、ユーザーは[戻る]ボタンを押すことで削除できますが、プログラム自体がこれを行う方法を知っている方が良いでしょう)。



-最後に、横向きのみの明確なタスクにもかかわらず、Ministroはセンサーで動作し、ユーザーがデバイスを回転させるとプログラムをポートレートモードにします。







これらの問題のいくつかは何らかの方法で解決できるかもしれませんが、Nescessitasには詳細なドキュメントがなく、メーリングリストでこれらの質問を無視しました(ただし、他のほとんどは無視されます)。



要約すると、Necessitasは、開発で実際に適用可能なフレームワーク(プロジェクトページで大規模なアプリケーションを作成することも不可能です)よりも、オタクにとってはかなり美しいおもちゃです(ちなみに、BadaでQtアプリケーションを起動するバージョンがあります) )



Nokiaの状況と少数のNecessitas開発者を考えると、近い将来、Android向けのQtアプリケーションを作成して大衆にリリースすることが可能になることはほとんどありません。 ただし、いつでもプロジェクトに参加して(Necessitasはオープンソースの原則に基づいて動作します)、Qt + Androidバンドルの改善に取り組むことができます。



All Articles