rebuild.fm で取り上げていたのでちょっとやってみました。
コード
コードはこんな感じ。まんまAndroid frameworkをRubyから呼んでいるだけですね。
class MainActivity < Android::App::Activity
def onCreate(savedInstanceState)
super
# R.layout.hello
layoutId = resources.getIdentifier('hello', 'layout', packageName)
self.contentView = layoutId
# R.id.text
viewId = resources.getIdentifier('text', 'id', packageName)
textView = findViewById(viewId)
textView.text = "Hello, RubyMotion!"
end
end
環境構築
セットアップについて Getting Started にはADTが必要とありますが、android-sdkとandroid-ndkだけで十分です。通常のAndroid開発とおなじようにandroid sdk managerで適当にSDKやビルドツールをインストールしておきましょう。Homebrewでいれてあればこんな感じ。
BREW_PREFIX=`brew --prefix`
export ANDROID_SDK="$BREW_PREFIX/opt/android-sdk"
export ANDROID_NDK="$BREW_PREFIX/opt/android-ndk"
export ANDROID_HOME="$ANDROID_SDK"
export RUBYMOTION_ANDROID_SDK="$ANDROID_SDK" # for RubyMotion
export RUBYMOTION_ANDROID_NDK="$ANDROID_NDK" # for RubyMotion
あとは motion device
でアプリを起動してREPL待機になります。Nexus 4 / Android 4.4 / ART な環境で一応うごきました。
疑問
まだよくわかってません。
- AndroidManifestはどうやって書くのか?
- resource idへのアクセスが煩雑すぎる。しかし
R::id.text
などは無理 - ライブラリはどうやって使うのか?Android用ライブラリは使えるのか?
まとめ
まだβ版ということを差し引いたとしても、IDEがないとアプリを書くのは正直つらいです。これからIDEを作っていくんでしょうね。RubyMine / IntelliJ IDEAにうまく乗ればかなり快適になる可能性はあります。
何をすれば面白いかなあ。実行可能ファイルがプラガブルならあとから一部機能をダウンロードしたりできればちょっと面白いかもしれないですが、それができるかどうか。
ちょっと遊ぶ分にはわりと面白いんですが、インストールするためにまず $199 払わないといけないのでハードル高いんですよね。