Gluon で Java & Android & iOSアプリ開発

今後 JavaFX の Scene Builder が提供されなくなるということで、Gluon という企業が Scene Builder 8.0 を公開したようです。

Bye Bye JavaFX Scene Builder, Welcome Gluon Scene Builder 8.0.0 | Javalobby

(Scene Builder の話題はここで終了)

公開した Gluon はどうやら JavaFX で デスクトップアプリだけではなく Androidアプリ・iOSアプリを作成できるツールを開発している企業らしい。(ざっくりとした理解)

最近お試しで契約してみた MacinCloud を持て余してたところなので Netbeans の plugin も公開されていることだし、さっそく Windows 上で Java を使った AndroidiOS アプリの動作確認を行ってみました。

Java の設定

Gluon が公開した Scene Builder を試す際に Java 8 Update 40 が必要だったので更新しましたが、これ以降の手順で最新の Java が必須かどうかわかりません。でもとりあえずセキュリティのためにも上げておきましょう。

Netbeans plugin の設定

以下の plugin をインストール

Gluon Plugin - NetBeans Plugin detail

インストール済みだったので必須かどうか不明ですが Gradle Support もインストール

Gradle Support - NetBeans Plugin detail

Gradle の設定

GVM でさくっとインストール。 Gradle Support plugin が 2.3 に対応できてないっぽいので 2.2 で。

プロジェクト作成

新規プロジェクト > JavaFX > Basic Gloun Application

プロジェクトを作成すると以下のコードがプリセットされています。

package org.example.gluon;

import javafx.application.Application;
import javafx.geometry.Rectangle2D;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Screen;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage stage) {
        StackPane root = new StackPane(new Label("Hello JavaFX World!"));

        Rectangle2D visualBounds = Screen.getPrimary().getVisualBounds();
        Scene scene = new Scene(root, visualBounds.getWidth(), visualBounds.getHeight());

        stage.setScene(scene);
        stage.show();
    }

}

Android SDK の設定

SDK をダウンロードして環境変数 ANDROID_HOME を設定する。 API は 21必須。 Build-tools は 22 (か21.1.2) 以上。 dx コマンドで ~list というオプションがないと言われたら Build-tools のバージョンを上げる必要あり。

いったん Android で動作確認

Gradle で

gradle androidInstall

Netbeans 上から プロジェクト右クリック > tasks > android > androidInstall を選択。

Installed on device.

BUILD SUCCESSFUL

Total time: 1 mins 55.745 secs

が表示されたらインストール成功。使用している PC はハイスペックではないとはいえ、そこそこ時間がかかります。 インストール後は自動でアプリが立ち上がるわけではないので、手動で起動します。 エミュレータも実行してみましたが、画面真っ暗で起動できず。とりあえず実機での動作確認はできました。アプリの起動時間は特に気にならず、普通のアプリが起動したように感じます。

f:id:erudoru:20150315014641p:plain

MacinCloud 上の iOSシミュレータ で動作確認

MacinCloud 上で iOS 用にビルドをしてみたいと思います。 Mac 上にも GVM と Gradle をインストール。git か何かでコードを Mac 上にダウンロードしたら

gradle launchIPhoneSimulator

でシミュレータを起動できます。 MacinCloud の安いプランだからなのか初回のビルドは10分近くかかりましたが、2回目以降はそこまでかかりませんでした。 RoboVM を使ってるようです。

f:id:erudoru:20150315015915p:plain

動作確認できました(^^)/
Gradle でビルドできるのはいいですね。