スクールアイドルです

冷やし中華はじめました

DigitalOcean に Android x86 エミュレータを飼う

VPS で KVM を動かす場合のサービスの選び方(2015 年 8 月版)の続き。

動機

エミュレータの中ではそこそこ実行速度がある Android x86 エミュレータをインターネット上に展開し、CI 基盤として用いたい。

オープンソース向け CI サービスの中には Android のテストに対応していると記載されているものも存在するが、以下の問題が存在する。

  • androidTestを実行する場合には ARM エミュレータの起動が必須になるので、テストの実行速度が非常に低速
  • 画面なしでのエミュレータ実行が求められるので、UI メインのandroidTestを書く場合に実行状況を確認しにくい
  • 複数バージョンのエミュレータを展開してのテストができない
  • CI サービスの YAML 地獄辛い

なお、実行環境として、仮想化支援機構の存在する時間課金型 VPS である DigitalOcean を利用したい。

実装

github.com

software.intel.com

上記をベースに Ubuntu 14.04 LTS 上にエミュレーション環境を構築した。Itamae でプロビジョニングするのでbundle installしてnode.jsonを用意してから、下記コマンドを叩けば動く。

$ bundle exec itamae ssh -h host -u user -j node.json recipes.rb

f:id:MisumiRize:20150915001748p:plain

x11vnc でDISPLAYにアタッチできるので vnc 接続もできる。

プロビジョンが終わってからインスタンスをシャットダウンしてイメージにしておくと、次回以降の立ち上げが高速化する。

雑感

  • 日本国内リージョンがなく最寄りが多分シンガポールなので vnc が結構遅い
  • それを抜いても Genymotion の実行速度には勝てない
  • 最初は Genymotion を並べまくるという構想もあった
  • 適当に立てたインスタンスで Genymotion をアクティベートしまくったら個人開発者ライセンスの上限に達したので挫折した
  • まともに動かそうと思ったらメモリ 4G 以上のインスタンス推奨
  • つまり常時起動すると月額 4,000 円からかかるので時間課金推奨