金子邦彦研究室プログラミングJavaScript による Web プログラミングUbuntu で Rhodes のインストールとテスト実行

Ubuntu で Rhodes のインストールとテスト実行

Rhodes を用いて,Ruby プログラムを Android で動かす

この Web ページで行うこと.

前準備

Rhodes のインストール

  1. rhodes gem のインストール
    sudo gem install rhodes
    

    [image]

    (64 ビット Linux のみ)rhodes-setup の実行前にファイルの調整

    エラーメッセージ

    古いバージョンの rhodes では 64 ビット Linux で「rake run:android」を実行すると、次のようなエラーメッセージが出る (2013/06時点).

    rake aborted!
    Can't detect NDK toolchain path (corrupted NDK installation?)
    

    [image]

    対策

    対策として、 gems/rhodes-3.5.1.12/platform/android/build/androidcommon.rb を探し、書き換える

    変更前: $ndkhost = `uname -s`.downcase!.chomp! + "-x86"

    変更後: $ndkhost = `uname -s`.downcase!.chomp! + "-x86_64"

    [image]
  2. rhodes-setup の実行

    ◆ 設定例(Android Studio をインストール済みのとき)

    rhodes-setup
    

    [image]
  3. 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
    

    [image]

    対策

    対策として、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
    
  4. 「apkbuilder がなくて Rhodes が動かない」ことに対する対処

    エラーメッセージ

    rhomobile で「rake run:android」を実行すると、次のようなエラーメッセージが出る. これも、Rhodes が Android 21 に対応しているが、Android 22 には対応していない(2013/06時点)ことに起因する

    rake aborted!
    No such file or directory - ./apkbuilder
    

    [image]

    対策

    対策として、次の手順で Android 21 の apkbuilder を使うことにする.

    1. Android 21 をダウンロード
      cd /tmp
      wget http://dl.google.com/android/android-sdk_r21.1-linux.tgz
      
    2. 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 
      

    .

  5. 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
    

    [image]

    対策

    ファイル lib/ruby/gems/1.9.1/gems/rhodes-3.5.1.12/platform/android/build/android_tools.rb を探し、その中で「rm_f」を含む行をすべて探し、コメントアウト(エラー回避のため)。ファイルは「find . android_tools.rb」で簡単に探せる

    [image]

    [image]

    .

  6. 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」で簡単に探せる

    [image]

Ubuntu での RhoMobile アプリケーションのひな形の作成 (コマンドライン)

◆ 作成手順例

端末で次のように操作

cd /var/tmp
rhogen app hoge http://localhost:9292/hoge

[image]

Android エミュレータの作成

android コマンドを使用

[image]

RhoMobile アプリケーションの各種設定

  1. build.ymlAndroid のバージョン, minSDK, Anroid エミュレータ名を設定

    ◆ 設定例(Android エミュレータ名は、実際にあわせて変更すること)

      version: 2.3.3
      minSDK: 10
      emulator: hogeavd
    

    ◆ Ubutnu でのエディタ画面

    [image]
  2. Android SDK マネージャを起動し、「Force https://... sources to be fetched using http://... 」にチェックする

    Android SDK マネージャの起動は,Ubuntu では「/usr/local/android-studio/sdk/tools/android」(Android Studio をインストール済みのとき)

    以下、設定手順と Ubuntu での画面を示す.

    1. 「Tools」をクリックする

      [image]
    2. 「Options」を選ぶ

      [image]
    3. Force https://... sources to be fetched using http://... 」にチェックする

      [image]

RhoMobile アプリケーションの起動

rake run:android の実行

cd /var/tmp/hoge
rake run:android 

実行画面の例

[image]

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

[image]
エラーが出る場合の対処法の例

◆ rhomobile で rake run:android の実行でエミュレータが起動しないときは、 まずは、Android SDK マネージャを使い、必要なパッケージがインストールされているかを確認すること

◆ rhomobile で rake run:android を実行すると 「RET: Failure [INSTALL_FAILED_OLDER_SDK]」というエラーメッセージが出る場合がある。そのときは、 build.yml の minSDK の部分を確認する