ご存知のように、Qt(キュート)はクロスプラットフォームのGUIフレームワークです。
昔はGUIアプリケーションが作れるツールキットと位置づけでしたが、最近はJavaScriptエンジン
やHTMLレンダリングエンジンまで組み込まれてきており、Visual Studioにも劣らない開発環境と
言っても過言ではないように思います。
このQtで作ったアプリがAndroidでも動くようになるということで、先日リリースされたベータ版で
ボタン1個だけのアプリを作り、Android端末で動かしてみました。なんとか動いたので投稿します。
一部不安定なところもありますが、正式対応版で修正されることを期待しましょう。
下記の内容は、正式版では変わる可能性があります。
##環境構築##
環境の準備ですが、私は LinuxMint 上でやりました。
32bitライブラリを動作させるために必要なソフトをインスールします。
$ sudo apt-get install ia32-libs
Androidアプリビルド環境として Ant と OpenJDK をインストールします。
$ sudo apt-get install openjdk-7-jdk ant
Qt Project サイトから qt-linux-opensource-5.1.0-beta1-android-x86_64-offline.run のダウンロードし、実行します。インストール先は/usr/loca/Qt5.1.0beta/
としました。
Android NDK をインストールします。サイトから tarファイル android-ndk-r8e-linux-x86_64.tar.bz2 をダウンロードし、/usr/local/Android
に解凍にしました。
Android SDK をインストールします。サイトからzipファイル adt-bundle-linux-x86_64-20130514.zip をダウンロードし、HOMEディレクトリで解凍しました。
$ cd ~
$ unzip adt-bundle-linux-x86_64-20130514.zip
作られたディレクトリ名が長いので、リネームします。
$ mv adt-bundle-linux-x86_64-20130514 adt
Eclipse から Android SDK Manager を起動し、必要なツールやAPIをインスールします。
入れたら、 Eclipse を再起動するのが良いようです。
$ cd adt/eclipse
$ ./eclipse
インストールとしてチェックを入れたもの:
- Android SDK Tools
- Android SDK Platform-tools
- Android SDK Build-tools
- Android 4.2.2 (API17)
- あとはお好みで..
次に、Eclipseのメニュー [Window] - [Android Virtual Device Manager] をクリックし、仮想ディスクマネージャ(AVD)を起動します。次のような設定でAVDを作成します。
その後 [Start..]ボタンを押して、AVD を起動させておきます。
もうEclipseはいらないので閉じます。
##プロジェクト新規作成##
Qt Creator 起動します。
$ /usr/local/Qt5.1.0beta/Tools/QtCreator/bin/qtcreator.sh
メニューから [ファイル] - [ファイル/プロジェクトの新規作成...] をクリックします。その画面で Qt GUI アプリケーション (すべてのテンプレート)
を指定し選択ボタンを押します。私の環境では、プラットホームとしてAndroidだけを指定して進めると、途中で固まってしまったので、[すべてのテンプレート]を指定しています。
次の画面で、プロジェクトの名前と保存するディレクトリを指定し、「次へ」ボタンを押して進みます。
次の「キットの選択」画面では、Desktop と Androidの1つを選択しておけばよいでしょう。
あとはデフォルトで進めて、最後に完了ボタンを押して、ビルド&実行環境を作ります。メインウィンドウだけのプロジェクトができるはずです。
プロジェクトを作成したら、共有ライブラリへのパスを通します。
ldconfigコマンドでやる方法がありますが、ここでは環境変数で解決してしまいます。プロジェクトのビルド環境設定画面で LD_LIBRARY_PATH に /usr/local/Qt5.1.0beta/5.1.0-beta1/gcc_64/lib
を指定しました。
Android構成の設定をします。
Qt Creator の [ツール] - [オプション] - [Android] で、次のように設定しました。
プロジェクトのファイルから、mainwindow.ui をダブルクリックし、フォーム作成画面を開きます。 メインウィンドウに Push Button を貼り付けて保存します。こんな感じです。
プラットホームの選択をします。左下のアイコンから、Androidを選択します。
##ビルド##
「すべてビルド」をクリックしてビルドします。それでは、エミュレータで動かしてみましょう。
エミュレータはさっきから起動したままですよね。この状態で Qt Creatorの「実行」ボタンを押します。すると、Android 用の実行パッケージである apk が作成され、続けて Androidエミュレータにデプロイされます。その後、直ちにアプリが実行されます。アプリが表示されましたか?
私の環境では、[デバッグ]ボタンを押してデバッグしようとすると、固まってしまい強制終了するハメに。。正式版では、きっと対応してくれることでしょう。
##実機でも動かす##
Android端末でも動かしてみましょう。
作成された apk をAndroid端末にUSB経由でコピーし、Android側のファイルマネージャからクリックしインストールします。完了後、そのHelloアプリのアイコンをタップし起動してみましょう。起動しましたか?
##まとめ##
AndroidアプリはJavaかHTMLでしか作ったことなかったので、C++で書けるのはなんだか新鮮!
将来的には、カメラやGPSセンサーへのインターフェースが簡単に呼び出せるようになるのだろうか。現時点では、デバイスを直接オープンするしかなさそうな。。。 正式版で期待。
Androidには Qt バージョン5.2で正式に対応する予定のようです。そのバージョンでは iOS も正式に対応するとか、しないとか。
とにかく、今後の展開を見守りましょう。