Scrcpyというソフトウェアをご存知でしょうか?

AndroidエミュレータのGenymotionで有名なGenymobile社が開発したOSS (Open Source Software)で、USBあるいはWiFi経由で接続したAndroid端末の画面をPC上に表示したり、Android端末をPCから操作することができます。Android端末へアプリをインストールする必要はありません。

日本語の簡単な紹介記事もあります。

GitHubリポジトリのREADMEにあるとおり、Linux/Mac/Windows向けのソフトウェアなのですが、FreeBSDでも使えないかと試しにビルドしてみました。すると、驚くほどあっさりと使えてしまいました。使えるとしても、多少のソースコード変更は必要だろうと予想したのですが、ビルド手順を少し変更しただけでソースにはまったく手をつけていません。

以下、本記事ではFreeBSDにおけるScrcpyのビルド手順と、Scrcpyを使ってAndroid端末の画面を表示および操作するための手順を記録していきます。

ビルド

以下のコマンドを実行します。sudoパッケージをインストールしていない場合、sudoコマンドの部分は、代わりにrootユーザでの実行をお願いします。また、この例ではディレクトリ/home/example以下にリポジトリをクローンしていますが、お使いの環境に合わせて読み替えをお願いします。

sudo pkg install git meson pkgconf ffmpeg sdl2 android-tools-adb                            # 必要なパッケージのインストール
cd /home/example                                                                            # 任意のディレクトリにcd
git clone https://github.com/Genymobile/scrcpy.git                                          # GitHubリポジトリのクローンを作成
cd scrcpy                                                                                   # クローンしたディレクトリにcd
fetch https://github.com/Genymobile/scrcpy/releases/download/v1.1/scrcpy-server-v1.1.jar    # ビルド済みのサーバjarファイルをダウンロード
meson x --buildtype release --strip -Db_lto=false \
    -Dprebuilt_server=/home/example/scrcpy/scrcpy-server-v1.1.jar                           # ビルドディレクトリxを作成(xは任意の名前でOK)
cd x                                                                                        # ビルドディレクトリxにcd
ninja                                                                                       # ビルド
sudo ninja install                                                                          # インストール

一連のコマンドを実行すると、以下の二つのファイルが/usr/local以下にインストールされます。

実行

まず、USBケーブルを用いてAndroid端末をFreeBSDマシンに接続します。Android端末が認識されていることを、以下のコマンドを実行して確認します。(参考: FreeBSDからAndroid端末にADBで接続する)

$ adb devices
List of devices attached
xxxxxxx	device              # xxxxxxxはAndroid端末のシリアル番号

端末が認識されていれば、あとは以下のコマンドを実行すればOKです。

scrcpy

コマンドを実行すると、下図右側のような、Android端末の画面を表示するウィンドウが現れますので、あとはお好みの操作を行なってください。(ちなみに、下図左側のターミナルは「FreeBSD上で動いてます」という一応の証拠(?)画像です。)

FreeBSD - Scrcpy

操作は基本的にマウスの左ボタンを使って行ないます。クリックがタップ、ドラッグがスワイプになります。その他にも操作のためのショートカットがいくつか定義されていますので、詳しくは以下のURLを参照してください。

WiFi経由での接続

Scrcpyでは、USBの代わりにWiFi接続を使うこともできます。

WiFi接続のためには下準備が必要です。いったん、USBケーブルを用いてAndroid端末をFreeBSDマシンに接続してください。そして、以下のコマンドを実行します。すると、Android端末が指定されたポートで接続を待ち受ける状態になります。

adb tcpip 5555

上記コマンドを実行したら、USBケーブルを外してもだいじょうぶです。次に、以下のコマンドを実行して、TCP/IP経由でFreeBSDマシンからAndroid端末に接続してください。

adb connect <Android端末のIPアドレス>:5555

USB接続のときと同様、正しく認識されているかを念のため確認しておきましょう。

$ adb devices
List of devices attached
<Android端末のIPアドレス>:5555	device

接続が確認できたらあとはUSBの場合と同じです。scrcpyコマンドを実行してください。

参考文献

  1. Genymobile/scrcpy - Display and control your Android device, https://github.com/Genymobile/scrcpy
  2. Scrcpy - Android端末をPCから操作, https://www.moongift.jp/2018/04/scrcpy-android%E7%AB%AF%E6%9C%AB%E3%82%92pc%E3%81%8B%E3%82%89%E6%93%8D%E4%BD%9C/
  3. Open Source Project: Scrcpy now works wirelessly!, https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/
  4. Wi-Fi を介した端末への接続, https://developer.android.com/studio/command-line/adb#wireless