目次
Rhodes
since 2011-01-16
「Rubyを使って多くのスマートフォンプラットフォームのネイティブアプリケーションを開発できる」
http://www.infoq.com/jp/news/2010/04/rhodes-update
モトローラソリューションズに買収された。
ruby で書く。ruby_on_rails に似た雰囲気。
マルチモーダルインタフェースのミドルウェア設計の参考になりそうなので要調査。
- RhoBook 日本語のドキュメント 2000円 ちょっと古い。
Mac で rhodes-3.5
since 2013-04-07
$ rvmsudo gem install rhodes .. Successfully installed rhodes-3.5.1.12
バグらしい:
https://groups.google.com/forum/?fromgroups=#!topic/rhomobile/gdyfRdHeK78
修正箇所は rvm 環境の場合 ~/.rvm/gems/ruby-1.9.3-p392/gems/rhodes-3.5.1.12/platform/android/build/android_tools.rb
Open /var/lib/gems/1.9.1/gems/rhodes-3.5.1.12/platform/android/build/android_tools.rb At line 211 And make this line to look as FileUtils.rm_f $applog_path if !$applog_path.nil?
$ rhodes-setup ADK と NDK の path を指定する $ rake switch_app
名前をつけてアプリを生成:
$ rhogen app mobapp $ cd mobapp
Android エミュレーターで実行する
$ rake run:android $ rake uninstall:android
rake -T するとタスク一覧が出てくる。
Xcode の PCH エラー
Xcode を 4.6.2 から 4.6.3 に更新した。
rake run:iphone するとこんなエラーが出る:
error: PCH file built from a different branch ((clang-425.0.27)) than the compiler ((clang-425.0.28))
http://stackoverflow.com/questions/16027725/xcode-version-4-6-2-4h1003-compiler-error
プロジェクトを Xcode で管理していれば Clean するだけでいいらしいが。。
けっきょくエラーメッセージから PCH の場所を探して消去したら復旧した。
/private/var/folders/pf/n139yg5d44n******04s6vkh0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/
みたいな場所の中のフォルダを全部ゴミ箱へ。
Androidデバイス
rake run:android:device するときには、デバイスを「外部メモリーモード」でUSB接続して、USBデバッグを有効にする。
が、
error: device not found - waiting for device -
とか
error: more than one device and emulator
と言われてしまう。
$ which adb /Applications/android-sdk-macosx/platform-tools/adb $ adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached 04C0******** device emulator-5554 device $ adb -s 04C0******** install bin/target/android/mobapp-debug.apk 1806 KB/s (3535523 bytes in 1.911s) pkg: /data/local/tmp/mobapp-debug.apk Success
http://yktmnb.b.sourceforge.jp/?p=20
これはできる。
けっきょくシリアルを指定すれば rake run:android:device できるようになった。
export ANDROID_SERIAL=04C0******** rake run:android:device
ただし * * * * 部分を含む文字列は adb devices ででてくるシリアル番号。
rake uninstall:android:device も成功した。
この環境変数は rake run:android で emulator-arm を起動するときにも影響がある。
RhoSimulator
RhoSimulator を使うと Web Inspector で動作確認できる。ADKのエミュレーターよりも起動が早い。
$ rake run:android:rhosimulator
rake run:iphone:rhosimulator もできるが違いがわからない。。
GPS
http://docs.rhomobile.com/rhodes/device-caps#geolocation
# build.yml: capabilities: - gps
RhoSync/RhoConnect
$ rvmsudo gem install rhosync $ rvmsudo gem install rhoconnect
APIサンプル
下記を git clone して試してみる。
RhoElements という有償ライセンスが必要な部分があるらしい。
下記のようにしたら実機で動いた。
index 0a7da18..460a0d2 100644 --- a/build.yml +++ b/build.yml @@ -51,12 +51,11 @@ bb: extensions: ["barcode"] android: - extensions: ["barcode", "rainbow", "nfc", "digest", "digest-md5", "digest-sha1", "pdf-writer", "thread", "digest-sha2", "openssl.so", "openssl", "ezcrypto", "rawsensors", "audiocapture"] + extensions: ["rainbow", "digest", "digest-md5", "digest-sha1", "pdf-writer", "thread", "digest-sha2", "openssl.so", "openssl", "ezcrypto"] capabilities: - network_state - sdcard - calendar - mapping: yes version: 2.1 wp:
実機で確認したところ Navigation Bar はデバイスを再起動してアプリを再実行すると消えているので、こういう情報はストレージに書かれるのではなさそう。
spec
http://docs.rhomobile.com/rhodes/generator の Adding Test Framework に書いてある。
SpecRunner コントローラーへのリンクを自分で作る。
Mac で rhodes-3.1.0
since 2011-08-27
新しいバージョンが出ているので再チャレンジしてみた:
$ sudo gem install rhodes Password: Fetching: rhodes-3.1.0.gem ( 58%)
$ rhodes-setup We will ask you a few questions below about your dev environment. JDK path (required) (/Library/Java/Home): Android SDK path (blank to skip) (/Applications/android-sdk-mac_x86): Android NDK path (blank to skip) (/Applications/android-ndk-r6): Windows Mobile 6 SDK CabWiz (blank to skip) (): BlackBerry JDE 4.6 (blank to skip) (): BlackBerry JDE 4.6 MDS (blank to skip) (): BlackBerry JDE 4.2 (blank to skip) (): BlackBerry JDE 4.2 MDS (blank to skip) (): If you want to build with other BlackBerry SDK versions edit: /Users/nishimotz/.rvm/gems/ruby-1.9.2-p290/gems/rhodes-3.1.0/rhobuild.yml
$ rhogen app myspace2 $ cd myspace2 $ rake switch_app $ rake run:iphone
build.yml:
android: version: 2.3.3
rhoAndroid233 という名前の AVD が必要。
$ rake run:android
Mac で rhodes-3.0.2
since 2011-07-25
http://docs.rhomobile.com/rhodes/install
下記、うまくいっているかどうかわからないがやってみる。
rvm で ruby 1.9 + rails 3.0 が動いている環境。
下記、sudo ではなく rvmsudo にすべき。。
$ sudo gem install rhodes Password: Fetching: highline-1.6.2.gem (100%) Fetching: diff-lcs-1.1.2.gem (100%) Fetching: extlib-0.9.15.gem (100%) Fetching: templater-1.0.0.gem (100%) Fetching: macaddr-1.0.0.gem (100%) Fetching: uuid-2.3.2.gem (100%) Fetching: rhodes-3.0.2.gem (100%) Building native extensions. This could take a while... Successfully installed highline-1.6.2 Successfully installed diff-lcs-1.1.2 Successfully installed extlib-0.9.15 Successfully installed templater-1.0.0 Successfully installed macaddr-1.0.0 Successfully installed uuid-2.3.2 Successfully installed rhodes-3.0.2 7 gems installed Installing ri documentation for highline-1.6.2... Installing ri documentation for diff-lcs-1.1.2... unable to convert "\xA9" from ASCII-8BIT to UTF-8 for lib/diff/lcs/ldiff.rb, skipping Installing ri documentation for extlib-0.9.15... Installing ri documentation for templater-1.0.0... Installing ri documentation for macaddr-1.0.0... Installing ri documentation for uuid-2.3.2... Installing ri documentation for rhodes-3.0.2... unable to convert "\xA9" from ASCII-8BIT to UTF-8 for lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/README, skipping Enclosing class/module 'mDigest' for class MD5 not known Enclosing class/module 'mDigest' for class SHA1 not known Installing RDoc documentation for highline-1.6.2... Installing RDoc documentation for diff-lcs-1.1.2... unable to convert "\xA9" from ASCII-8BIT to UTF-8 for lib/diff/lcs/ldiff.rb, skipping Installing RDoc documentation for extlib-0.9.15... Installing RDoc documentation for templater-1.0.0... Installing RDoc documentation for macaddr-1.0.0... Installing RDoc documentation for uuid-2.3.2... Installing RDoc documentation for rhodes-3.0.2... unable to convert "\xA9" from ASCII-8BIT to UTF-8 for lib/extensions/barcode/ext/barcode/platform/iphone/ZBarSDK/README, skipping Enclosing class/module 'mDigest' for class MD5 not known Enclosing class/module 'mDigest' for class SHA1 not known
$ rhodes-setup We will ask you a few questions below about your dev environment. JDK path (required) (/Library/Java/Home): Android SDK path (blank to skip) (): /Applications/android-sdk-mac_x86 Android NDK path (blank to skip) (): /Applications/android-ndk-r6 Windows Mobile 6 SDK CabWiz (blank to skip) (): BlackBerry JDE 4.6 (blank to skip) (): BlackBerry JDE 4.6 MDS (blank to skip) (): BlackBerry JDE 4.2 (blank to skip) (): BlackBerry JDE 4.2 MDS (blank to skip) (): If you want to build with other BlackBerry SDK versions edit: /Users/nishimotz/.rvm/gems/ruby-1.9.2-p290/gems/rhodes-3.0.2/rhobuild.yml
$ pwd /Users/nishimotz/work/rhodes $ rhodes app myspace Generating with app generator: [ADDED] myspace/rhoconfig.txt [ADDED] myspace/build.yml [ADDED] myspace/app/application.rb [ADDED] myspace/app/index.erb [ADDED] myspace/app/index.bb.erb [ADDED] myspace/app/layout.erb [ADDED] myspace/app/loading.html [ADDED] myspace/Rakefile [ADDED] myspace/app/loading.png [ADDED] myspace/app/helpers [ADDED] myspace/icon [ADDED] myspace/app/Settings [ADDED] myspace/public
下記に書いてあるとおりに
http://docs.rhomobile.com/rhodes/generator
モデルの生成
$ rhodes model account name,industry
テストフレームワークの生成
$ rhodes spec
次の画面で気づいたが ruby 1.8.7 を使えと。。
http://docs.rhomobile.com/rhodes/build
まあこのままやってみよう。
iOS SDK
$ rake switch_app
$ rake build:iphone:setup_xcode_project
なんと Xcode Project ファイルがこんなところに。。
/Users/nishimotz/.rvm/gems/ruby-1.9.2-p290/gems/rhodes-3.0.2/platform/iphone
これを Xcode 3.2 で開いて「ビルドと実行」した。いきなり iPad のシミュレーター画面だが、動いた。何をするアプリなのかわかってないが。。
Xcode を使わないで下記でも可能。
$ rake run:iphone
Android SDK
Android は。。。
rake aborted! Can't detect NDK toolchain path (corrupted NDK installation?)
https://groups.google.com/forum/#!topic/rhomobile/H2JiBSqfc1U/discussion
http://osdir.com/ml/rhomobile/2011-07/msg00337.html
http://osdir.com/ml/rhomobile/2011-07/msg00357.html
Current Rhodes 3.0.2 gem supports r5b NDK. ということで、頑張ってみたが ndk-r6 では動かないようだ。
https://www.pivotaltracker.com/projects/45686?story_id=15725849
ndk-r5b を入手したいのだがわからない。。
rhodes gem を git リポジトリの最新版にしてみろという話。。
と思ったら、下記から r5c が手に入った。。
http://androidapplications2011.blogspot.com/2011/07/download-android-ndk.html
NDK の path を変えて、下記も再実行:
$ rhodes-setup
myspace ディレクトリにて:
$ rake run:android
一生懸命コンパイルを始めた。。
しばらくして emulator のウィンドウが開いた。
その後もコンソールで何やら続いている。。
どうやら Android 3.1 のエミュレーターがものすごくゆっくり動いているらしい。。
いったん止める。
build.yml に下記を追加:
android: version: 2.1
もう一度 rake run:android したら今度は小さな画面のエミュレータが出た。