モバイル用 RingQt アプリケーションのビルド方法¶
モバイル用 RingQt アプリケーションのビルド方法です。
開発環境のダウンロード¶
このリンクをご確認ください : http://doc.qt.io/qt-5/androidgs.html
ダウンロード
Android SDK ツール
Android NDK (android-ndk-r21 で検証済み)
Java SE Development Kit (JDK) v6 以降
Android SDK の更新¶
開発で必要な API および、ツールのパッケージを得るには Android SDK を更新します。
Android 4.4.2 (API 19) で検証済み。
Windows では - 愛用のシステムに合わせて環境変数を定義します。
JAVA_HOME
用例 : C:\Program Files (x86)\Java\jdk1.8.0_05
ANDROID_HOME
用例 : C:\JavaAndroid\AndroidSDK
Qt for Android のインストール¶
このリンクから Qt for Android をインストールします。
- Qt Creator を実行後に、 ツール → オプション → Android を選択して
Android NDK と SDK のパスを追加します。
Ring2EXE の用法¶
Qt プロジェクトのアプリケーションを Ring2EXE で手軽に用意できます。
用例:
ring2exe myapp.ring -dist -mobileqt
注釈
Ring ノートパッドの配布メニューからでもできます。
ちなみに
Ring2EXE (Qt プロジェクトの準備 - モバイル機器用の配布) オプションは配布メニューにあります。
Ring アプリケーション用の Qt プロジェクト¶
Ring2EXE または Ring ノートパッドの配布メニューを使用後に、
Qt Creator で生成された Qt プロジェクトを開きます。
フォルダ : target/mobile/qtproject
プロジェクトファイル : project.pro
Qt Creator からリソース (YourAppName.ringo) にコンパイルされた Ring アプリケーションを見つけられます。
このファイル (Ring オブジェクトファイル) は Ring コンパイラで生成します。
ring YourAppName.ring -go -norun
Qt Creator でアプリケーションをビルドします。
リソースにはアプリケーションで使う画像を追加できます。
またはテキストエディタを (Notepad など) で修正します : project.qrc
Ring アプリケーションから画像を見つけ出すには、リソースで使われているファイル名が必要です。
用例
if isandroid()
mypic = new QPixmap(":/cards.jpg")
else
mypic = new QPixmap("cards.jpg")
ok
Android 開発についての注釈 (RingQt)¶
メインのプロジェクトファイルは main.cpp です。
このファイルは Ring コンパイラ、仮想計算機 (VM) と RingQt で読み込まれます。
実行中にリソースの一時作業フォルダから Ring オブジェクトファイルを取得します。
そして Ring 仮想計算機 (VM) で Ring オブジェクトファイル (ringapp.ringo) を実行します。
main.cpp で追加 (複数のファイルから構成されているプロジェクト) することにより、 リソースの一時作業フォルダから複数のファイルを抽出できます。
この Ring エディションにおいて、この関数は未実装です。
データベース (ODBC, SQLite と MySQL)
セキュリティとインターネット関数 (LibCurl と OpenSSL)
RingAllegro (Allegro ライブラリ)
RingLibSDL (LibSDL ライブラリ)
Qt クラスは RingQt から使います。
データベースのアクセスには QSqlDatabase クラスを使います。
注釈
未実装のライブラリ (LibCurl, OpenSSL および Allegro) は全て Android 用にコンパイルできますが Qt プロジェクトは収録されていません。
Android 用のコードへ動作を切り替えたい場合は isandroid() を使います。
用例:
if isandroid()
// Android のコード
else
// それ以外のプラットフォーム
ok
- ボタンのテキスト、または画像が繰り返し描画されることがあること気づくと思います!
このコードで Qt の問題を回避できます。
if isandroid()
setStyleSheet("
border-style: outset;
border-width: 2px;
border-radius: 4px;
border-color: black;
padding: 6px;")
ok
- 手動設定によるコントロールの位置と寸法ではなくレイアウトを必ず使います。
これはユーザインタフェースの問題回避を想定した最良の方法 (小規模、追加の寸法を有するコントロール) です。
Qt クラスを扱う場合はリソースから画像を決定できます (main.cpp で使うためのコピーは不要です)。
用例:
if isandroid()
mypic = new QPixmap(":/cards.jpg")
else
mypic = new QPixmap("cards.jpg")
ok
RingQt にはファイル名を決定するために AppFile() 関数があります。
用例:
mypic = new QPixmap(AppFile("cards.jpg")) # デスクトップまたは Androrid
プロジェクトのコード更新時、 Qt プロジェクトの生成に Ring2EXE を再実行する必要はありません。
Ring ノートパッドの配布メニューからオブジェクトファイルの生成 (*.ringo) を選択します。
その後 YourAppName.ringo ファイルを target/mobile/qtproject フォルダへコピーしてファイルの置き換えに応じてください。
アプリケーションにフォルダに Qt リソースファイル (project.qrc) がある場合は、
Ring2EXE または Ring ノートパッドの配布メニュー → Ring2EXE (Qt プロジェクトの準備 - モバイル機器用の配布) を実行するとリソースファイルを使います。
用例は ring/applications/cards ゲームを参照してください。