1. Home
  2. /
  3. AWS
  4. /
  5. AWSでAndroidを起動できる「Genymotion On Demand」を試してみた

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

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

はじめに

ローカルでの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をご覧ください。

Genymotion

はじめてのAWS EC2!

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

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

Genymotionチュートリアル

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

AWS_Genymotion

 

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

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

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

-w1084

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

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

AWSConsole

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

-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 「秘密鍵」 shell@「AWSのIPアドレス」

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

$ setprop persist.sys.usb.config adb

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

対策としては2種類で

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

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

$ ssh -i 「秘密鍵」 -NL 5555:localhost:5555  shell@「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分短縮した話

サイト内の商品リンクは一部アフィリエイトリンクとなっています

関連記事

UnityでOBBを使うときの話

UnityでOBBを使うときの話

AndroidのアプリをPlayStoreに上げるときにはAPK最大100MB制限があります。 ソシャゲなどは後からAssetBundleなどをDLする方式が多い印象ですが、頻繁に新規コンテンツの追加がない(アップデートする可能性が少ない)場合、OBBというAPKとは別枠で2GBx2ファイル配置できる機能があるので使ってみようというお話です。 OBBを使う方法は非常に簡単なのですが、変な所で思いっきり躓いて全治2日くらいかかったりしたので纏めておきます。
超小型スマホ「Unihertz Atom」を衝動買いした

超小型スマホ「Unihertz Atom」を衝動買いした

ここ10年程度は基本的に、AndroidとiPhoneを2年毎に変えていくスマホ式年遷宮を行っていました。しかし、Apple Watchを買ってしまったところ利便性の良さ(主にSuica)に感動してAndroidに戻れなくなってしまったのでiPhoneばかり溜まっていくという結果に…… 性格的にOSは最新版 or βを積極的に入れていくためiPhoneオンリーにすると遺伝的多様性が失われバグるときは全デバイスでバグってしめやかに死にます。