SSHトンネルを使用してサーバー上のAndroidエミュレーターをリモートでデバッグする方法
サブマシンに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