2015-12-15
basilisk-fw について試食した雑感
gradle, javafx, robovm, android, retorolamda
F0000;">この記事は、no title の 15 日目の記事です。
- 昨日は no title さんの ゆっちのBlog » Intel RealSense 3Dカメラを JavaFX で動かしてみた。 のお話です
- 明日は no titleさんの カードリーダー? のお話です
basilisk-fw ってなんぞや? って方も多いと思います。
Java Champion で griffon を作られている aalmirayさんが新規立ち上げたプロジェクトです。
現時点では griffonとほぼおなじものらしいのですが、
今後はJavaFX専用に特化していこうみたいなプロジェクト。
まあここらへんの事情は
griffon-fw 自体が
等の状況で色々と引きずられやすいからでしょうね。
でもまあtwitterだと
griffon や basilisk みたいなアカウントやハッシュタグ等 が結構あってググりビリティが悪いので
情報収集がgrails等より大変で不遇だなーと思いながら見てたりしてます。。
実際に
のチュートリアルを触ってみた感想など
事前準備編)
チュートリアルベースであれば
- lazybone
- java8
- javafxのために必要
- java6 or java7
- org.javafxports:jfxmobile-plugin のretrolambdaに依存
が必要になります
上記のチュートリアルだと
- SDKManが下記のソフト必須のように書いていますが、
- lazybones
- gradle
- Lazybonesによるプロジェクトテンプレート管理(1): Lazybones概要/Hello Lazybones - nobusueの日記
に記載があるように no title
から直接バイナリをダウンロードしてきて
bin/lib をPATHに通せば,lazybone自体は Windowでも使うことが出来ます.
gradle自体も、実はgradlew warperが生成されているのでいりません*1
■jfxmobile-plugin 単体に関して
ぐらいしか情報出てこないかな。。(汗
このpluginは
no titleのソースを読むと
apk生成は minsdk4/combile sdk21のものを作成する感じ
android gradle pluginは1.1.0の物をクラス継承して使っててちょっと古めかな。。
実行編)
とりあえずチュートリアルを進めていきます
> lazybones create basilisk-javafx-ios sample
この直後状態のままだと動かないので修正を加えます。*2
- build.gradle
retrolambda { if(macosx){ jdk '/usr/libexec/java_home -v 1.8'.execute().text oldJdk '/usr/libexec/java_home -v 1.7'.execute().text } else{ //Linuxとかであればgradle.propertiesから参照 jdk System.properties['JAVA8_HOME'] oldJdk System.properties['JAVA7_HOME'] } javaVersion JavaVersion.VERSION_1_7 }
- gradle.properties
group = org.example version = 0.1.0-SNAPSHOT groovyVersion=2.4.4 spockVersion=1.0-groovy-2.4 org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureondemand=true org.gradle.jvmargs=-Xmx512m -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 -Dgroovy.source.encoding=UTF-8 org.gradle.workers.max=4 # window/linux とかの場合 org.gradle.java.home=/opt/jdk8 systemProp.JAVA8_HOME=/opt/jdk8 systemProp.JAVA7_HOME=/opt/jdk7 systemProp.ANDROID_HOME=/opt/android-sdks
- gradle/wrapper/gradle-wrapper.properties
- 最新のgradleを使うように修正
distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-bin.zip
でもこの状態でも
> gradlew build
はコケてしまいますので
> gradlew build -x checkMain -x test
で実行します。
によるとtemplateが治ってるそうですが、まだjcenterにリリースされていない状態のよう
ビルド完了後
> gradlew run
で通常のJavaFXとしては実行できます。
その後
> gradlew launchIPhoneSimulator
をすると、依存ライブラリをかなりの時間かけて落としてきてやっと
iPhoneSimulatorで 実行されるみたいな状況になります。。。
考察編)
jfxmobile-plugin はandroidの対応が出来るはずなので
試してみましたが解決できず質問中。
理由的には、
やろうとして出来無いからだと思うけど。。(汗
ちなみにこのチュートリアルのlazyboneのテンプレートWindowsでは動きません><。
理由は jfxmobile-plugin が
- iphoneの実行環境チェックtaskでwindowsだとコケる
- gradlew taskのレベルで
- robovmのビルドが基本公式でもmac専用を歌ってる
- 一応windowsでもbuildだけはできたみたいな話はStackOverFlowに出てくるんですけどね(汗
- no title
の大本のサンプルレベルでwinだと gradlew tasks できなかったですし・・
ここらへんコメントにすると
> gradlew build
> gradlew run
で普通に実行はできるのでノーマルプロジェクトのテンプレートは欲しかったかなーと
環境に依存しない実行できるものであれば
辺りをコピーしてきて弄る形のほうが楽になってしまう。。
まあこの手のモバイル対応*3って
って話になるので対応が後手に回るのは仕方ないのかなーとか考えていたりも・・(苦笑
winサポートの話をするなら
チュートリアルのテンプレートで記述されてる
- grdlew lzpack
- grdlew idea
のタスク対応を説明記載しても良かったのではないかと思う*4
まあデスクトップアプリ主力にすると
ので、そこら辺を簡易にしないと業務リリース向けはやはり難しいのかな−
とか色々と考えてしまうことが有りますが。。
- 173 https://www.google.co.jp/
- 48 https://www.google.co.jp
- 17 http://www.facebook.com/Gertruda
- 13 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=17&ved=0ahUKEwjiqKuGo9rJAhWGKaYKHc78DAs4ChAWCEcwBg&url=http://d.hatena.ne.jp/kimukou_26/20130122/1358861361&usg=AFQjCNFej60mHc6MRth5SYAwaqncDwrXGg
- 6 https://t.co/YzTBU3t5yT
- 5 http://qiita.com/advent-calendar/2015/javafx
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0ahUKEwjHlJih69rJAhWHJqYKHRTXAVwQFggxMAM&url=http://d.hatena.ne.jp/kimukou_26/20131114/p1&usg=AFQjCNEVyLWCSKTJejNvfSKmMld5UE8yZw&sig2=6STD1OgbpP-VLcidE3s05A
- 4 https://t.co/JkcYJEH4co
- 3 http://search.yahoo.co.jp/search?p=AndroidStudio2.0+NDK&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=27&ved=0ahUKEwi2sZyAm9rJAhUEl5QKHQf6CEI4FBAWCEAwBg&url=http://d.hatena.ne.jp/kimukou_26/20131212/p1&usg=AFQjCNGBGXlqD4H8In2vTxyPzWMf3gQ50w