AWSでAndroidを起動できる「Genymotion On Demand」を試してみた

2019年5月4日Android, AWS, UnityGenymotion

はじめに

ローカルでのAndroidエミュ重くないですか?

ストレージ食い過ぎではないですか?

あとメモリ(ry

UnityエンジニアなんてやってるとUnityだけでもSSDがパンパンなのにAndroidのエミュとか入れたくないなぁと思うのです。

AzureとかでAndroidエミュ入れられないかなーと調べていたら、AWSかGCP上でGenymotionを走らせられるそうなのでAWSで試して見ました。

本記事は

  • Androidの開発環境が整っていてHalloWorldができる人
  • SSH使える人

を対象にしています。

Genymotionってなに?

有料の仮想Androidです。開発時にデバッグや自動テストなどで様々なOSバージョン、画面サイズでチェックする時に便利なやつです。

ローカルPCで動く物とCloudで動作される物の2種類あります。一番安いプランは各々下記の通りです。

   
ローカル 136ドル/年
クラウド 0.5ドル/時

他にも法人向けプランやSaaSなども提供してるので詳細は公式HPをご覧ください。

はじめてのAWS EC2!

「初めての人向け」じゃなくて「書いてる人が初めて」というヤツです。

チュートリアル動画が公式であるのでこれを見ながら進めていきます。(動画とUIが多少違いますが)

Genymotion Cloud : Android 6.0 (marshmallow)を使用します。まずお見積もりです。

 

リージョンはオハイオ州のを使います。(安いので)

Genymotionの推奨はm4.xLargeですが、性能は必要ないのでt2.smallを選びます。

t2.smallを選ぶとGenymotionが1時間0.125ドルに割引きされるようです。

-w1084

値段は確認したので仮想PCを追加します。

まずは管理コンソールに行きます。

そして「仮想マシンを起動する」を選択。

-w1411

「Amazon Marketplace」を選択しGenymotionを検索します。

 

ここで再度値段チェック。

-w1052

インスタンスを選びます。前述の通り最低スペックのt2.smallを選択。

「手順 3: インスタンスの詳細の設定」「手順 4: ストレージの追加」「手順 5: タグの追加」「手順 6: セキュリティグループの設定」を初期設定のまま行きます。(SSHのポートは変えた方がセキュリティ的によかったかも。)

インスタンスの起動前に公開鍵認証の設定を要求されるので、初めての場合はキーペア作成をします。SSHでログインするときに使うので「キーペアをダウンロード」を忘れないように。(ダウンロードしないと先に進めない仕様ですが)

これでインスタンスが動き始めました。

Androidの画面を出す為にパブリックDNS(もちくはIPv4)のアドレスにアクセスします。

-w935

Chromeさんに怒られますがそのまま接続をします。

ログインを求められるので

  • ID:genymotion
  • PASS:インスタンスID(画像だと「i-004b……」のもの)

でログインします。

そうするとAndroidのホーム画面が表示され自由に弄れるようになります。

めっちゃ簡単でした!

SSH接続

adbコマンドを弄れなければなにもできないのでSSHでadbを叩けるようにします。

$ chmod 0600 「秘密鍵」 
$ ssh -i 「秘密鍵」 [email protected]「AWSのIPアドレス」

ここまで普通のSSHログインです。続いて下記コマンドでADBを有効にします。

$ setprop persist.sys.usb.config adb

ADBが有効になりました。5555ポートに接続するとアクセスできるのですが、認証などがないので普通にポート開放すると入り放題になってしまいます。

対策としては2種類で

  • SSHポートフォワーディング
  • AWSへのアクセスIP制限

が考えられます。今回は(公衆Wifi経由で実験してたので)前者のSSHポートフォワーディングでいきます。

$ ssh -i 「秘密鍵」 -NL 5555:localhost:5555  [email protected]「AWSのIPアドレス」

ローカルの5555番ポートに設定したら、新しいターミナルを起動してADBコマンドでデバイスとして接続させます。

adb devicesの一覧に5555番ポート上のデバイスが見られればOKです。

$ adb connect localhost:5555
connected to localhost:5555

$ adb devices
List of devices attached
localhost:5555    device

ここまで来るとWifi経由でAndroidのADB繋いでるのと変わらないのでUnityのBuild SettingsからRun Device上にGenymotion端末が現れます。

あとはBuild And Runをいつも通り押して上げればOKです。

もちろん、デバッガを刺すこともできますし、

-w1362

Consoleでログを見る事もできます。Profilerも使えます。

-w496

あとがき

思った以上に簡単にAndroidのエミュレータをクラウドで走らせることができました。

使ってみた感想としては、t2.smallだとかなり重かったので素直にm4.xLargeを使った方が良いと思います。

また、x86AndroidなのでARMのDebugに使う事が出来ない点がネックですが、どうしようもないので諦めます。

最後に2時間くらい使って下記料金でした。Genymotionが初めて使う場合数日間無料なので実質EC2代だけになっています。

参考文献

Genymotion Cloud PaaS – Tutorial –

Genymotion VD for AWS を試したメモ

Genymotion On Demandを使うようになってAndroidのCIがさらに1分短縮した話