モバイル用 RingQt アプリケーションのビルド方法

モバイル用 RingQt アプリケーションのビルド方法です。

開発環境のダウンロード

このリンクをご確認ください : http://doc.qt.io/qt-5/androidgs.html

ダウンロード

Android SDK の更新

開発で必要な API および、ツールのパッケージを得るには Android SDK を更新します。

Android 4.4.2 (API 19) で検証済み。

  • Windows では - 愛用のシステムに合わせて環境変数を定義します。

  1. JAVA_HOME

用例 : C:\Program Files (x86)\Java\jdk1.8.0_05
  1. ANDROID_HOME

用例 : C:\JavaAndroid\AndroidSDK

Qt for Android のインストール

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 でアプリケーションをビルドします。

  1. リソースにはアプリケーションで使う画像を追加できます。

    またはテキストエディタを (Notepad など) で修正します : project.qrc

  2. Ring アプリケーションから画像を見つけ出すには、リソースで使われているファイル名が必要です。

    用例

if isandroid()
        mypic = new QPixmap(":/cards.jpg")
else
        mypic = new QPixmap("cards.jpg")
ok

Android 開発についての注釈 (RingQt)

  1. メインのプロジェクトファイルは main.cpp です。

    このファイルは Ring コンパイラ、仮想計算機 (VM) と RingQt で読み込まれます。

    実行中にリソースの一時作業フォルダから Ring オブジェクトファイルを取得します。

    そして Ring 仮想計算機 (VM) で Ring オブジェクトファイル (ringapp.ringo) を実行します。

    main.cpp で追加 (複数のファイルから構成されているプロジェクト) することにより、 リソースの一時作業フォルダから複数のファイルを抽出できます。

  2. この Ring エディションにおいて、この関数は未実装です。

    • データベース (ODBC, SQLite と MySQL)

    • セキュリティとインターネット関数 (LibCurl と OpenSSL)

    • RingAllegro (Allegro ライブラリ)

    • RingLibSDL (LibSDL ライブラリ)

    Qt クラスは RingQt から使います。

    データベースのアクセスには QSqlDatabase クラスを使います。

注釈

未実装のライブラリ (LibCurl, OpenSSL および Allegro) は全て Android 用にコンパイルできますが Qt プロジェクトは収録されていません。

  1. Android 用のコードへ動作を切り替えたい場合は isandroid() を使います。

用例:

if isandroid()
        // Android のコード
else
        // それ以外のプラットフォーム
ok
  1. ボタンのテキスト、または画像が繰り返し描画されることがあること気づくと思います!

    このコードで Qt の問題を回避できます。

if isandroid()
        setStyleSheet("
                border-style: outset;
                border-width: 2px;
                border-radius: 4px;
                border-color: black;
                padding: 6px;")
 ok
  1. 手動設定によるコントロールの位置と寸法ではなくレイアウトを必ず使います。

    これはユーザインタフェースの問題回避を想定した最良の方法 (小規模、追加の寸法を有するコントロール) です。

  2. 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
  1. プロジェクトのコード更新時、 Qt プロジェクトの生成に Ring2EXE を再実行する必要はありません。

Ring ノートパッドの配布メニューからオブジェクトファイルの生成 (*.ringo) を選択します。

その後 YourAppName.ringo ファイルを target/mobile/qtproject フォルダへコピーしてファイルの置き換えに応じてください。

  1. アプリケーションにフォルダに Qt リソースファイル (project.qrc) がある場合は、

Ring2EXE または Ring ノートパッドの配布メニュー → Ring2EXE (Qt プロジェクトの準備 - モバイル機器用の配布) を実行するとリソースファイルを使います。

用例は ring/applications/cards ゲームを参照してください。