Genymotionで開発作業効率化d(๑╹ω╹๑ )

  • 95
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

Android Advent Calendar 2013の5日目です!!

簡単に実践できるちょっとした開発作業効率化について書きたいと思ったので
今回は効率化に繋がりそうなGenymotionというものを紹介します。

はじめに(>ヮ<)

Genymotionとは

VirtualBoxの仮想化技術を利用したAndroidデバイスエミュレータです。

メリットは

標準のAndroidエミュレータよりも動作が軽い

これは特に補足の必要はありませんね だって速いもん!

Playストアが利用できる

例えば端末内のストレージにアクセスして色々するアプリのデバッグ時にファイラーアプリをインストールしておけばADBを利用するよりも素早く動作検証することができるようになります!

この記事の目標

既にGenymotionに関する日本語の解説が様々な技術ブログ等で提供されていますが、
Genymotion開発チームの活発な機能追加や不具合改善に伴い、既存の導入手順では最近の仕様に対応しきれないので現段階で最新のGenymotionの概要と導入手順の一元化を目標としています。

環境

MacBook Air Mid 2012 OS X 10.9

(*>ヮ・)Genymotionに登録しよう

Genymotion: genymotion.comにてユーザー登録を行います
Sign upページの下記項目を入力

☆Username – ユーザー名
☆Password – パスワード
☆Password confirmation – 確認のためパスワードを再入力
・Allow Genymotion to send me emails about new releases – ニューリリース情報などをメールで購読
☆I accept terms of privacy statements – 利用規約に同意
・Enterprise size – 利用する組織の規模?
・Usage type – 利用目的

☆印は入力必須です\(>ヮ<)/

Sign upボタンを押下すると登録したアドレス宛てに

welcome to Genymotion - User account activation

というメールアドレスが正当なものかを確認するメールが送られてくるので
Please use the link below to activate your account.辺りにある、
Click hereのリンクをクリックしてアカウントをアクティベーションは完了です。

※初回起動時にプランの選択を問われますが後から変更ができます。
今回はお試しということでFREEプランを選択しました。

Genymotionのセットアップ(」・ワ・)」

Genymotionのインストール

先程のアカウントでログインした状態でDownload Genymotionから自分の環境に合ったGenymotion本体をダウンロードしましょう。

Windows版はインストーラー形式になっているようですがここではOSX環境での導入解説になるのでWindows環境をお使いの方は途中まで頑張ってください><
OSX環境での導入はGenymotion.appをApplicationsディレクトリにコピーすれば完了です。

VirtualBoxが入っていない状態でGenymotion.appを起動すると下記のエラーが出て先に進めません。

Unable to load VirtualBox engine.

仮想環境ソフトウェアには数種類ありますが、VirtualBox環境でのみ動作するようです。
Parallels使えないのかよファーーーーーーーーーック!!!!!!!!!!!!!!

ということで

VirtualBoxのインストール

ちなみに既にVirtualBox導入済みの方と、Windows 32/64 bits (with VirtualBox)を使ってGenymotionをインストールしたWindowsユーザーさんは恐らくVirtualBoxの導入は完了していると思われるのでこの手順は不要です。

導入手順はDownload VirtualBoxからVirtualBox本体をダウンロードしてインストールするだけです。

仮想デバイスのインストール

準備が整ったところでいよいよGenymotion起動です(」・ワ・)」

初回起動の段階ではデバイス環境の構築が済んでいないので以下のダイアログが表示されます。

You have no virtual device available yet.

Do you want to add a new one?

「仮想デバイスがありません。新規作成しますか?」とのことなのでYesを選択します。

Create a new virtual devicesというタイトルの次画面では

login to discover all available virtual devices

ログインを求められているので画面右下のConnectボタンを押してログインします。

正常にログイン処理が完了するとインストール可能なデバイス環境一覧がリスト表示されるので、
任意の端末を選択してNextボタンを押すとデバイス環境の詳細画面に遷移します。
今回は以降の解説用にGalaxy NexusのAndroid 4.3を選択してみました!
Installボタンを押すと選択したデバイス環境のダウンロードからインストールまでが自動で行われます。
僕の環境で5分くらいかかったのでコーヒーでも飲んで待ちましょう
・・・
インストールが完了するとVirtual device created successfullyと表示されるのでFinishボタンを押して環境作成画面を終了します。

ichigo.jpg
仮想デバイス管理画面です。次回以降は直接この画面が起動時に表示されます。

リスト内に作成したデバイス環境が選択されている事を確認してPlayボタンを押しましょう。
仮想デバイスが起動します。また、初回起動時には

To use ADB connection, you should configure correctly the path to Android SDK.

Do you want to configure it now?

「ADBで仮想デバイスを操作するにはSDKのパスを設定する必要があります。直ちに設定しますか?」
といった内容ダイアログが表示されますが後で設定する事もできます。
設定しておくと仮想デバイスをeclipseやAndroid StudioのDDMSから操作できたり、デバッグ時に利用できるようになるので通常はYesを選択して表示されたダイアログでパスを設定しておきましょう。

別ウィンドウで仮想デバイスが起動したら導入完了です。
ichigo.jpg
なんだこの壁紙ゎ

仮想デバイスにGoogle Appsをインストール

Genymotion2.0系ではGoogle Appsが同梱されていないのでPlayストアが入っていません。
参考:Genymotion2.0のGCMなどGoogle Apps周りの問題を解決する

これではGenymotionを利用するメリットが半減してしまうためPlayストアをバンドルしているGoogle Apps Universal Packagesをインストールしましょう。

  1. wiki.rootzwiki.comGoogle Apps Universal Packages Downloadsから作成した仮想デバイスのAndroidOSに対応するGoogle Apps Universal Packagesのzipファイルをダウンロード。
  2. ダウンロードしたzipファイルを起動中の仮想デバイスのウィンドウにドラッグアンドドロップするとインストールするかを問うダイアログが表示されるのでYesを選択するとインストールが始まります。
  3. インストールおわったよダイアログが表示されたら仮想デバイスを再起動して完了です!

導入に関してのハマりどころ(;ヮ;)

  • VirtualBoxがインストールされているにもかかわらず「Unable to load VirtualBox Engine」と表示されてGenymotionが起動しない場合は下記コマンドにてvboxdrvモジュールの読み込み操作を行ってください。
$sudo /etc/init.d/vboxdrv status
$sudo /etc/init.d/vboxdrv setup
$sudo /etc/init.d/vboxdrv status
  • 確認ダイアログ等が操作しているウィンドウの裏に表示される事が多かったので、操作しても反応がない場合はウィンドウの裏に何か隠れていないかを確認してみてください。
  • 最初のライセンス選択画面のFREEとTRIALボタンはdisenableっぽいけど押せます。

~(=^・ヮ・^)IDEの設定

設定する目的

メニューバーに genymotion.png のようなアイコンが表示されてGenymotion.appを直接起動することなくAVD(Android Virtual Device)と同じように端末を管理することが出来るのですヾ(*╹◡╹)ノ゙

※デバッグに利用できるデバイスが1台もadbで接続されていない状態でAndroidプロジェクトのデバッグを実行した場合にはADVが反応するのでその点は今後の機能対応に期待ですね

eclipseの設定編

ヘルプ -> 新規ソフトウェアのインストール追加ボタンを押して表示されるダイアログに以下を入力
名前: (任意)
ロケーション: http://plugins.genymotion.com/eclipse
以降はいつも通りの流れでGenymotion Pluginをインストールしてください。

または、Genymotionにログインした状態でDownload Genymotionからeclipse用のプラグインファイルをダウンロードしてきてjarファイルをプラグインディレクトリに置くことで手動インストールも可能です。
後者の方法ではプラグインの更新が面倒なのでお勧めしません。

Android Studioの設定編

File/Settingsのメニューから"Plugins" -> "Browse repositories..."を選択。
表示されるリストの中からGenymotionを選択して"Download and install"ボタンをポチー
以降はいつも通りの流れで(ry

実機とのスコア比較ヾ(*╹◡╹)ノ゙

ベンチマーク

定番のベンチマークアプリ『AnTuTu Benchmark』にて計測しました。

計測デバイスの紹介
  • Genymotion Galaxy Nexus Android 4.3 Genymotionデフォルト
  • Galaxy Nexus Android 4.3 Google純正
結果
項目名 Genymotion 実機
総合 27253 10033
Multitask 6409 2003
Dalvik 3341 1033
CPU Int 3225 994
CPU Float 2590 690
RAM Operation 1673 766
RAM Speed 5082 633
2D [720x1184] 1636 [720x1184] 540
3D 0 [720x1184] 2362
I/O Storage 2567 637
I/O Database 730 375

なんと実機の3倍近い結果にw
GenymotionのGNはOpenGLの3D描画スコア計測中にアプリが強制終了しました。
何度かリトライしましたがその度に強制終了したので現時点でOpenGLを利用するアプリのデバッグは出来ない可能性があります。

ちなみに測定中はMBAのCPU使用率が測定前と比べると40%程度上昇し50%台をキープしていました。

ファイル転送速度

デバッグする際のapkファイル転送を想定したadbコマンドのpushで転送速度を比較してみました。
計測デバイスはベンチマークの計測と同じで、転送するファイルは36.7MBです。

結果

Genymotion

$adb push ~/Downloads/genymotion-2.0.1.dmg /sdcard/
3662 KB/s (36701555 bytes in 9.785s)

実機

$adb push ~/Downloads/genymotion-2.0.1.dmg /sdcard/
4267 KB/s (36701555 bytes in 8.398s)

何故か物理ケーブル接続の実機の方が転送速度が速いという結果になりました。
数回測定しましたが、やはり実機が0.4〜0.5秒程速い感じです。

(*・ヮ・)使ってみてわかったこと

実際にデバッグに使用して気付いたことを書いていきます。

仮想デバイスウィンドウ

メニューバーでの端末操作

genymotion.png

各ボタン類の概要

  • バッテリー状態操作
  • GPS情報操作
  • ダミーカメラ・Webカメラ切り替え
  • 画面静止画・動画キャプチャ(プレミアム会員オプション)
  • リモートコントロール(プレミアム会員オプション)
  • 仮想デバイス音量操作
  • 仮想デバイス回転エミュレーション
  • その他仮想デバイスボタン操作

個人的に素晴らしいと感じたのはバッテリー状態とGPS情報の操作で、
adbコマンドで行うよりもグラフィカルに状態を反映させることが可能です。

genymotion.png
プレミアム会員オプションのリモートコントロールは実機から仮想デバイスを操作できる機能です。

genymotion.png
項目内の……部分を引っ張ることでメニューバーを移動したり、
仮想デバイスウィンドウから切り離す事もできて自分好みの配置にカスタマイズできます。

ファイル転送が簡単

仮想デバイスウィンドウ内にファイルをドラッグアンドドロップすることで、
デバイスストレージのDownloadsディレクトリにファイルコピーされます。

デバイスウィンドウとしての操作感

Android標準のエミュレータと比較して、マウスでのスワイプ操作が快適です。
標準エミュレータではドラッグの動きに忠実でViewFlipper等のページ送りが難しかったのですが、
Genymotionの仮想デバイスでは慣性の動きを再現していて、なめらかに操作できます。

その他

root権限

Superuserがプリインストールされているので要rootなアプリのデバッグも出来ます。

日本語環境

Settingsアプリ->「Language & input」->「Language」->「日本語」の順に選択することで仮想デバイスの言語を日本語に設定できます。
ソフトウェアキーでの日本語入力は適当なIMEアプリをPlayストアから入手しましょう。

まとめに(>ヮ<)

執筆時の導入構成

Genymotion Version 2.0.1
VirtualBox Version 4.3.4

Thank you for reading …and

Genymotionを導入すると簡単な動作検証はとても捗ります。
しかし、仮想デバイスの環境では発見することのできない端末特有の問題もあるので本当に品質の良いアプリケーションを作成するならば最終的に実機で確認することを忘れないでください。

この投稿は Android Advent Calendar 20135日目の記事です。