Ubuntu で Rhodes のインストールとテスト実行
Rhodes を用いて,Ruby プログラムを Android で動かす
この Web ページで行うこと.
- Rhodes のインストール
- RhoMobile アプリケーションのひな形の作成 (コマンドライン)
- RhoMobile アプリケーションの各種設定
- RhoMobile アプリケーションの起動
前準備
- JDK (Java Development Kit)のバージョン1.6.0_2
以上と、Android SDK のインストールが終わっていること
→ Ubuntu: Ubuntu での Android Studio についての Web ページ
- Android NDK のインストールが終わっていること
- Ruby
- RubyGems(v1.3.5以上)
- GNU make (v3.80以降,gemに必要)
Rhodes のインストール
- rhodes gem のインストール
sudo gem install rhodes
(64 ビット Linux のみ)rhodes-setup の実行前にファイルの調整
<エラーメッセージ>
古いバージョンの rhodes では 64 ビット Linux で「rake run:android」を実行すると、次のようなエラーメッセージが出る (2013/06時点).
rake aborted! Can't detect NDK toolchain path (corrupted NDK installation?)
<対策>
対策として、 gems/rhodes-3.5.1.12/platform/android/build/androidcommon.rb を探し、書き換える
変更前: $ndkhost = `uname -s`.downcase!.chomp! + "-x86"
変更後: $ndkhost = `uname -s`.downcase!.chomp! + "-x86_64"
- rhodes-setup の実行
◆ 設定例(Android Studio をインストール済みのとき)
- JDK Path: /usr/lib/jvm/java-6-oracle
- Android SDK path: /usr/local/android-studio/sdk
- Android NDK path: /usr/local/android-ndk-r9d
rhodes-setup
- SDK のファイルの調整
<エラーメッセージ>
rhomobile で「rake run:android」を実行すると、次のようなエラーメッセージが出る. これは、Rhodes が Android 21 に対応しているが、Android 22 には対応していない(2013/06時点)ことに起因する
rake aborted! No such file or directory - /usr/local/android-studio/sdk/platform-tools/aapt
<対策>
対策として、appt と dx.jar について、次のような手順でシンボリックリンクを作成する.
◆ 手順例(Android Studio をインストール済みのとき)
* 「android-4.2.2」のところは、実際のディレクトリ名に読み替えて下さい.
rm -f /usr/local/android-studio/sdk/platform-tools/aapt ln -s /usr/local/android-studio/sdk/build-tools/android-4.2.2/aapt /usr/local/android-studio/sdk/platform-tools/aapt mkdir /usr/local/android-studio/sdk/platform-tools/lib rm -f /usr/local/android-studio/sdk/platform-tools/lib/dx.jar ln -s /usr/local/android-studio/sdk/build-tools/android-4.2.2/lib/dx.jar /usr/local/android-studio/sdk/platform-tools/lib/dx.jar
- 「apkbuilder がなくて Rhodes が動かない」ことに対する対処
<エラーメッセージ>
rhomobile で「rake run:android」を実行すると、次のようなエラーメッセージが出る. これも、Rhodes が Android 21 に対応しているが、Android 22 には対応していない(2013/06時点)ことに起因する
rake aborted! No such file or directory - ./apkbuilder
<対策>
対策として、次の手順で Android 21 の apkbuilder を使うことにする.
- Android 21 をダウンロード
cd /tmp wget http://dl.google.com/android/android-sdk_r21.1-linux.tgz
- apkbuilder を /usr/local/android-studio/sdk/tools にコピー
tar -xvzof android-sdk_r21.1-linux.tgz sudo cp ./android-sdk-linux/tools/apkbuilder /usr/local/android-studio/sdk/tools sudo chown $USER /usr/local/android-studio/sdk/tools/apkbuilder
.
- Android 21 をダウンロード
- lib/ruby/gems/1.9.1/gems/rhodes-3.5.1.12/platform/android/build/android_tools.rb の書き換え
<エラーメッセージ>
rhomobile で「rake run:android」を実行すると、次のようなエラーメッセージが出る(2013/06時点).
rake aborted! undefined method `rm_f' for AndroidTools:Module
<対策>
ファイル lib/ruby/gems/1.9.1/gems/rhodes-3.5.1.12/platform/android/build/android_tools.rb を探し、その中で「rm_f」を含む行をすべて探し、コメントアウト(エラー回避のため)。ファイルは「find . android_tools.rb」で簡単に探せる
.
- lib/ruby/gems/1.9.1/gems/highline-1.6.18/lib/highline.rb の書き換え
ファイル lib/ruby/gems/1.9.1/gems/highline-1.6.18/lib/highline.rb を探し、次のように書き換える。(エラー回避のため)。ファイルは「find . highline.rb」で簡単に探せる
Ubuntu での RhoMobile アプリケーションのひな形の作成 (コマンドライン)
Ubuntu を使用する場合は,次のように操作する.
◆ 作成手順例
- ファイルを置くディレクトリ: /var/tmp
- プロジェクト名: hoge
端末で次のように操作
cd /var/tmp
rhogen app hoge http://localhost:9292/hoge

Android エミュレータの作成
android コマンドを使用

RhoMobile アプリケーションの各種設定
- build.yml に Android のバージョン, minSDK, Anroid エミュレータ名を設定
- minSDK: 実際にインストール済みの Android SDK の最も古いバージョンに一致させておく(とトラブルが少ないようです)
→ Ubuntu では「/usr/local/android-studio/sdk/tools/android」 で確認できる(Android Studio をインストール済みのとき)
- Android エミュレータ名: 実際に作成済みのエミュレータ名を設定する
→ Ubuntu では「/usr/local/android-studio/sdk/tools/android avd」 で確認できる(Android Studio をインストール済みのとき)
◆ 設定例(Android エミュレータ名は、実際にあわせて変更すること)
version: 2.3.3 minSDK: 10 emulator: hogeavd
◆ Ubutnu でのエディタ画面
- minSDK: 実際にインストール済みの Android SDK の最も古いバージョンに一致させておく(とトラブルが少ないようです)
- Android SDK マネージャを起動し、「Force https://... sources to be fetched using http://... 」にチェックする
Android SDK マネージャの起動は,Ubuntu では「/usr/local/android-studio/sdk/tools/android」(Android Studio をインストール済みのとき)
以下、設定手順と Ubuntu での画面を示す.
- 「Tools」をクリックする
- 「Options」を選ぶ
- 「Force https://... sources to be fetched using http://... 」にチェックする
- 「Tools」をクリックする
RhoMobile アプリケーションの起動
rake run:android の実行
cd /var/tmp/hoge
rake run:android
実行画面の例

Android エミュレータが自動起動したところ

* エラーが出る場合の対処法の例
◆ rhomobile で rake run:android の実行でエミュレータが起動しないときは、 まずは、Android SDK マネージャを使い、必要なパッケージがインストールされているかを確認すること
◆ rhomobile で rake run:android を実行すると 「RET: Failure [INSTALL_FAILED_OLDER_SDK]」というエラーメッセージが出る場合がある。そのときは、 build.yml の minSDK の部分を確認する