Introduction

何番煎じかわからないが。

今まで Android 端末の映像を PC に投影する時は、Android Studio の Device Mirroring を使っていたが、Android Studio 立ち上げるの面倒だし、そもそも上手く投影できないことも多い (参考:開発メモ その365 Android Studio の Device Mirroring で Repeated video encoder errors)。

最近は scrcpy を使うのがデファクトらしい。

何ができるかというと

  • リモートデスクトップみたいにマウスで Android を操作できる
  • PC 上のファイルをドラッグ&ドロップでアプリ(APK)のインストールやファイルのコピー可能
  • 端末の撮影

等。

How to use?

基本は ADB が入っていれば何もいらない。
強いて言えば環境変数を適切に設定し、 adb コマンドにパスが通るようにする。

下記は Mac での ~/.zprofile の記述。

1
2
export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools

この状態で brew からインストールし、USB で Android 端末とマシンを繋げて scrcpy コマンドを実行する。
あらかじめデバッグモードを有効に、マシンからのデバッグを常時有効にしておくこと。

1
2
3
4
5
6
7
8
9
10
$ brew install scrcpy
$ scrcpy
scrcpy 3.1 <https://github.com/Genymobile/scrcpy>
INFO: ADB device found:
INFO: --> (usb) HQ618G0E28 device SO_41B
/opt/homebrew/Cellar/scrcpy/3.1/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 413.8 MB/s (90640 bytes in 0.000s)
[server] INFO: Device: [Sony] docomo SO-41B (Android 13)
INFO: Renderer: metal
INFO: Texture: 720x1496
2025-02-16 15:17:35.400 scrcpy[19338:342293] +[IMKClient subclass]: chose IMKClient_Modern

scrcpy

WiFi 経由でも利用できる。
予めワイヤレスデバッグを有効にしておく必要がある。

scrcpy

ペア設定コードと IP アドレスとポートを確認。

1
2
$ adb pair 192.168.11.44:46589 366877
Successfully paired to 192.168.11.44:46589 [guid=adb-HQ618G0E28-NLvoYt]

scrcpy

IP アドレスとポートを指定して接続。
ここでのポートは先のペアリング時に使った値とは異なるので注意。

1
2
$ adb connect 192.168.11.44:42149
connected to 192.168.11.44:42149

後は、 scrcpy -e で WiFi 経由で接続できる。

1
2
3
4
5
6
7
8
9
10
$ scrcpy -e
scrcpy 3.1 <https://github.com/Genymobile/scrcpy>
INFO: ADB device found:
INFO: --> (tcpip) 192.168.11.44:42149 device SO_41B
INFO: (usb) adb-HQ618G0E28-NLvoYt._adb-tls-connect._tcp device SO_41B
/opt/homebrew/Cellar/scrcpy/3.1/share/scrcpy/scrcpy-server: 1 file pushed, 0 skipped. 326.7 MB/s (90640 bytes in 0.000s)
[server] INFO: Device: [Sony] docomo SO-41B (Android 13)
INFO: Renderer: metal
INFO: Texture: 720x1496
2025-02-16 15:32:01.449 scrcpy[20124:364193] +[IMKClient subclass]: chose IMKClient_Modern