📲

SSHトンネルを使用してサーバー上のAndroidエミュレーターをリモートでデバッグする方法

2024/02/11に公開

サブマシンにMacbook12インチを使っているのだが、このマシンではFlutterのAndroid開発をする上でビルドに時間がかかるのしAndroidエミュレーターはとても使えるような速度で動いてくれないので、メインマシンでビルドとエミュレーターでの実行をしてAndroidエミュレーターの画面をScrypyで転送して動作確認することにした。

環境

メインマシン
Macbook Pro M1(Pro)32GB

サブマシン
Macbook 12
Ubuntu 22.04.3 LTS x86_64
Kernel: 6.5.0-17-generic
Intel M-5Y71 (4) @ 2.900GHz
Intel HD Graphics 5300
RAM 8GB

準備

サーバー側にAndroid開発環境一式をインストールにてAndroidエミュレーターを実行しておく
両方にADBをインストール、クライアント側にScrypyをインストール
リモートコンピュータ上でADBサーバーが実行されていることを確認する。

実行

SSHトンネルの確立:

ポートフォワーディングを使用してSSHトンネルを確立する。ここでは、ローカルのポート5038をリモートの5037に、そして27183を両方向にマッピングする。リモートポートフォワーディングを有効にする場合

$ ssh -CN -L5038:localhost:5037 -R27183:localhost:27183 your_remote_computer

ポートフォワーディングを使用してSSHトンネルを確立する。ここでは、ローカルのポート5038をリモートの5037に、そして27183を両方向にマッピングする。

SCRCPYの実行

別のターミナルを開き、環境変数ADB_SERVER_SOCKETにtcp:localhost:5038を設定してから、SCRCPYを実行する。

$ export ADB_SERVER_SOCKET=tcp:localhost:5038
$ scrcpy

これでリモート側でAndroid エミュレーターの状態を確認したり操作できるようになった。これでVScodeのSSH機能で開発マシンへ入れば非力なラップトップでもいつもと同じ速度で開発を進められる

tailscaleでメッシュVPNを構築してあるのでMacbookさえ持っていけばどこでもメインマシンのパワーで開発できるはず

iOSもおんなじような感じでリモート接続で開発したいんですけどなんかいい方法ないですか?XamarinのときVisual StudioにリモートMacのiOSシミュレーターをWindowsに転送して操作するやつあったのでがんばったらできそうな気がするけど…

Discussion