ブログ

リモート開発Tips : リモート上の開発環境から手元のAndroidアプリのデバッグをする

2022年1月13日
最近は、開発もリモートで出来るようなってきつつあり、弊社でもJetBrainsのProjectorを使ってリモート上のPCで開発ができるようにしました。
これで、ローカル上にソースコードを置かずに開発が可能になります。
このProjectorは、リモートでJetBrainsのIDEアプリを動かして、その画面だけを手元のPCで操作するというものです。従って、ローカルで動かしているIDEと同じようなスタイルで開発ができます。
しかし、実際にリモート開発をしているとちらほらと困ったことが出てくる事がある事も事実です。そんな、状態になった時の知っていると便利かもというテクニックを紹介していきます。
ただし、今回は、JetBrainsのツールの紹介ではありません。

リモート上のIDEから手元のPC上で動いているAndroidエミュレータに接続したい

想定している環境は、下図のような環境です。(VPN環境下ですが、技術的にはVPNでなくても使えるはずです。ただし、通常VPNがあるのではないかと思います。)

このようなリモート環境でAndroidアプリの開発をしていても、当然、Android端末上でデバッグをしたくなります。
しかし、リモートPC上にはAndroid端末は接続されていません。Androidエミュレータをインストールすることも出来なくはないですが、それではRDPやVNCなどを使ってリモート端末の画面をローカル側に転送する必要が出てきてしまいます。
そこで、なんとか手元のPC上で動いているAndroidに接続できないかと考えたわけです。

手元のPCにAndroidエミュレータを導入し、TCPで接続できるようにする

実機も考えましたが、いろいろとその後、面倒なのでここではAndroidエミュレータという前提です。
エミュレータのインストール方法はここでは紹介しません。
エミュレータを起動すると、USBで接続されている状態と同じになっています。これを以下のコマンドを使って、ネットワーク経由で接続できるようにします。

$adb tcpip 5555

このコマンドは、5555ポートで接続を受け付けるようにする設定です。ちなみに、USBに戻すには、以下のようにします。

$adb usb

リモートPCから手元のPCに接続できるようにするにトンネルを作成する

VPN環境なのだから、手元にもIPアドレスが割り振られていて直接接続出来る場合にはこの操作はいりません.
しかし、弊社ではネットワークの設定でVPNでリモートPC上と手元のPCでは異なるネットワークになっているので逆には接続できないようにしてあります。
そこで、手元のPCからリモートPC(remoteuser@172.16.1.1)へのトンネルを作って接続可能なようにします。

ssh -f -N -R 15544:localhost:5555 remoteuser@172.16.1.1

このコマンドの意味は、リモートPC上で15544ポートにアクセスすると、それが手元のPCの5555ポートに接続できるというものです。

リモートPC上からAndroidエミュレータに接続する

これで、リモートPC上でローカルPC上のAndroidエミュレータを認識させるには、以下のコマンドを実行します。
ちなみに、説明がもれていましたが、adbはリモートPCにもインストールされている前提です。

$adb connect 127.0.0.1:15544

このコマンドを実行すると、ローカル上のエミュレータにデバッグ許可のダイアログが表示されるので、接続されたことがわかるはずです。
これで、リモート上のAndroid Studioからローカル上のエミュレータ上でアプリが実行できるようになりました。

読み込み中