README.ko - Genymobile/scrcpy GitHub Wiki

Only the original README is guaranteed to be up-to-date.

scrcpy (v1.11)

This document will be updated frequently along with the original Readme file ์ด ๋ฌธ์„œ๋Š” ์›์–ด ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ์˜ ์—…๋ฐ์ดํŠธ์— ๋”ฐ๋ผ ์ข…์ข… ์—…๋ฐ์ดํŠธ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค

์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ UBS ( ํ˜น์€ TCP/IP ) ๋กœ ์—ฐ๊ฒฐ๋œ Android ๋””๋ฐ”์ด์Šค๋ฅผ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. GNU/Linux, Windows ์™€ macOS ์ƒ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ ์„ค๋ช…์—์„œ ๋””๋ฐ”์ด์Šค๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ํ•ธ๋“œํฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)

screenshot

์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ€๋ฒผ์›€ (๊ธฐ๋ณธ์ ์ด๋ฉฐ ๋””๋ฐ”์ด์Šค์˜ ํ™”๋ฉด๋งŒ์„ ๋ณด์—ฌ์คŒ)
  • ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ (30~60fps)
  • ๋†’์€ ํ’ˆ์งˆ (1920ร—1080 ์ด์ƒ์˜ ํ•ด์ƒ๋„)
  • ๋น ๋ฅธ ๋ฐ˜์‘ ์†๋„ (35~70ms)
  • ์งง์€ ๋ถ€ํŒ… ์‹œ๊ฐ„ (์ฒซ ์‚ฌ์ง„์„ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ ์ตœ๋Œ€ 1์ดˆ ์†Œ์š”๋จ)
  • ์žฅ์น˜ ์„ค์น˜์™€๋Š” ๋ฌด๊ด€ํ•จ (๋””๋ฐ”์ด์Šค์— ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋จ)

์š”๊ตฌ์‚ฌํ•ญ

์•ˆ๋“œ๋กœ์ด๋“œ ์žฅ์น˜๋Š” ์ตœ์†Œ API 21 (Android 5.0) ์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฐ”์ด์Šค์— adb debugging์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์–ด๋–ค ๋””๋ฐ”์ด์Šค์—์„œ๋Š”, ํ‚ค๋ณด๋“œ์™€ ๋งˆ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ถ”๊ฐ€ ์˜ต์…˜ ์ด ํ•„์š”ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ ์„ค์น˜ํ•˜๊ธฐ

Linux (๋ฆฌ๋ˆ…์Šค)

๋ฆฌ๋ˆ…์Šค ์ƒ์—์„œ๋Š” ๋ณดํ†ต ์–ดํ”Œ์„ ์ง์ ‘ ์„ค์น˜ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์–ด๋ ต์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

Snap ํŒจํ‚ค์ง€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค : scrcpy.

Arch Linux์—์„œ, AUR ํŒจํ‚ค์ง€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค : scrcpy.

Gentoo์—์„œ ,Ebuild ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค : scrcpy/.

Windows (์œˆ๋„์šฐ)

์œˆ๋„์šฐ ์ƒ์—์„œ, ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์ข…์†์„ฑ์ด ์žˆ๋Š” ์‚ฌ์ „ ๊ตฌ์ถ•๋œ ์•„์นด์ด๋ธŒ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค (adb ํฌํ•จ) : ํ•ด๋‹น ํŒŒ์ผ์€ Readme์›๋ณธ ๋งํฌ๋ฅผ ํ†ตํ•ด์„œ ๋‹ค์šด๋กœ๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์–ดํ”Œ์„ ์ง์ ‘ ์„ค์น˜ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

macOS (๋งฅ OS)

์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์•„๋ž˜ ์‚ฌํ•ญ์„ ๋”ฐ๋ผ ์„ค์น˜ํ•œ๋‹ค๋ฉด Homebrew ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค :

brew install scrcpy

PATH ๋กœ๋ถ€ํ„ฐ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ adb ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์„ค์น˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋‹ค์Œ์„ ๋”ฐ๋ผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค :

brew cask install android-platform-tools

์–ดํ”Œ์„ ์ง์ ‘ ์„ค์น˜ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰

์•ˆ๋“œ๋กœ์ด๋“œ ๋””๋ฐ”์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค:

scrcpy

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ช…๋ น์ฐฝ ์˜ต์…˜ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

scrcpy --help

๊ธฐ๋Šฅ

์บก์ณ ํ™˜๊ฒฝ ์„ค์ •

์‚ฌ์ด์ฆˆ ์žฌ์ •์˜

๊ฐ€๋”์”ฉ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ์œ„ํ•ด ์•ˆ๋“œ๋กœ์ด๋“œ ๋””๋ฐ”์ด์Šค๋ฅผ ๋‚ฎ์€ ํ•ด์ƒ๋„์—์„œ ๋ฏธ๋Ÿฌ๋งํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ๋•Œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ˆ๋น„์™€ ๋†’์ด๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๊ฐ’์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (e.g. 1024) :

scrcpy --max-size 1024
scrcpy -m 1024  # ์ถ•์•ฝ ๋ฒ„์ „

์ด ์™ธ์˜ ํฌ๊ธฐ๋„ ๋””๋ฐ”์ด์Šค์˜ ๊ฐ€๋กœ ์„ธ๋กœ ๋น„์œจ์ด ์œ ์ง€๋œ ์ƒํƒœ์—์„œ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋””๋ฐ”์ด์Šค ์ƒ์—์„œ 1920ร—1080 ๋Š” ๋ชจ๋‹ˆํ„ฐ ์ƒ์—์„œ1024ร—576๋กœ ๋ฏธ๋Ÿฌ๋ง๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

bit-rate ๋ณ€๊ฒฝ

๊ธฐ๋ณธ bit-rate ๋Š” 8 Mbps์ž…๋‹ˆ๋‹ค. ๋น„๋””์˜ค bit-rate ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค (e.g. 2 Mbps๋กœ ๋ณ€๊ฒฝ):

scrcpy --bit-rate 2M
scrcpy -b 2M  # ์ถ•์•ฝ ๋ฒ„์ „

ํ”„๋ ˆ์ž„ ๋น„์œจ ์ œํ•œ

์•ˆ๋“œ๋กœ์ด๋“œ ๋ฒ„์ „ 10์ด์ƒ์˜ ๋””๋ฐ”์ด์Šค์—์„œ๋Š”, ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋กœ ์บก์ณ ํ™”๋ฉด์˜ ํ”„๋ ˆ์ž„ ๋น„์œจ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

scrcpy --max-fps 15

Crop (์ž˜๋ผ๋‚ด๊ธฐ)

๋””๋ฐ”์ด์Šค ํ™”๋ฉด์€ ํ™”๋ฉด์˜ ์ผ๋ถ€๋งŒ ๋ฏธ๋Ÿฌ๋งํ•˜๊ธฐ ์œ„ํ•ด ์ž˜๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, Oculus Go ์˜ ํ•œ ์ชฝ ๋ˆˆ๋งŒ ๋ฏธ๋Ÿฌ๋งํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค :

scrcpy --crop 1224:1440:0:0   # 1224x1440 at offset (0,0)
scrcpy -c 1224:1440:0:0       # ์ถ•์•ฝ ๋ฒ„์ „

๋งŒ์•ฝ --max-size ๋„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ, ์ž˜๋ผ๋‚ธ ๋‹ค์Œ์— ์žฌ์ •์˜๋œ ํฌ๊ธฐ๊ฐ€ ์ ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ™”๋ฉด ๋…นํ™”

๋ฏธ๋Ÿฌ๋งํ•˜๋Š” ๋™์•ˆ ํ™”๋ฉด ๋…นํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :

scrcpy --record file.mp4
scrcpy -r file.mkv

๋…นํ™”ํ•˜๋Š” ๋™์•ˆ ๋ฏธ๋Ÿฌ๋ง์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :

scrcpy --no-display --record file.mp4
scrcpy -Nr file.mkv
# Ctrl+C ๋กœ ๋…นํ™”๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
# ์œˆ๋„์šฐ ์ƒ์—์„œ Ctrl+C ๋Š” ์ •์ƒ์ •์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋””๋ฐ”์ด์Šค ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•˜์‹ญ์‹œ์˜ค.

"skipped frames" ์€ ๋ชจ๋‹ˆํ„ฐ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€์ง€ ์•Š์•˜์ง€๋งŒ ๋…นํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค ( ์„ฑ๋Šฅ ๋ฌธ์ œ๋กœ ์ธํ•ด ). ํ”„๋ ˆ์ž„์€ ๋””๋ฐ”์ด์Šค ์ƒ์—์„œ ํƒ€์ž„ ์Šคํƒฌํ”„ ( ์–ด๋Š ์‹œ์ ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์œ„์น˜์— ์‹œ๊ฐ์„ ํ‘œ์‹œ ) ๋˜์—ˆ์œผ๋ฏ€๋กœ, packet delay variation ์€ ๋…นํ™”๋œ ํŒŒ์ผ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ

๋ฌด์„ ์—ฐ๊ฒฐ

Scrcpy ์žฅ์น˜์™€ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด adb ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. adb ๋Š” TCIP/IP ๋ฅผ ํ†ตํ•ด ๋””๋ฐ”์ด์Šค์™€ ์—ฐ๊ฒฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :

  1. ์ปดํ“จํ„ฐ์™€ ๋””๋ฐ”์ด์Šค๋ฅผ ๋™์ผํ•œ Wi-Fi ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  2. ๋””๋ฐ”์ด์Šค์˜ IP address ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค (์„ค์ • โ†’ ๋‚ด ๊ธฐ๊ธฐ โ†’ ์ƒํƒœ / ํ˜น์€ ์ธํ„ฐ๋„ท์— '๋‚ด IP'๊ฒ€์ƒ‰ ์‹œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ).
  3. TCP/IP ๋ฅผ ํ†ตํ•ด ๋””๋ฐ”์ด์Šค์—์„œ adb ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค: adb tcpip 5555.
  4. ๋””๋ฐ”์ด์Šค ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  5. adb ๋ฅผ ํ†ตํ•ด ๋””๋ฐ”์ด์Šค์— ์—ฐ๊ฒฐ์„ ํ•ฉ๋‹ˆ๋‹ค: adb connect DEVICE_IP:5555 (DEVICE_IP ๋Œ€์‹ ).
  6. scrcpy ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ bit-rate ์™€ ํ•ด์ƒ๋„๋ฅผ ์ค„์ด๋Š”๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค :

scrcpy --bit-rate 2M --max-size 800
scrcpy -b2M -m800  # ์ถ•์•ฝ ๋ฒ„์ „

์—ฌ๋Ÿฌ ๋””๋ฐ”์ด์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋งŒ์•ฝ์— ์—ฌ๋Ÿฌ ๋””๋ฐ”์ด์Šค๋“ค์ด adb devices ๋ชฉ๋ก์— ํ‘œ์‹œ๋˜์—ˆ๋‹ค๋ฉด, serial ์„ ๋ช…์‹œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค:

scrcpy --serial 0123456789abcdef
scrcpy -s 0123456789abcdef  # ์ถ•์•ฝ ๋ฒ„์ „

scrcpy ๋กœ ์—ฌ๋Ÿฌ ๋””๋ฐ”์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SSH tunnel

๋–จ์–ด์ ธ ์žˆ๋Š” ๋””๋ฐ”์ด์Šค์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๋กœ์ปฌ adb client์™€ ๋–จ์–ด์ ธ ์žˆ๋Š” adb ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋””๋ฐ”์ด์Šค์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋™์ผํ•œ ๋ฒ„์ „์˜ adb protocol์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.):

adb kill-server    # 5037์˜ ๋กœ์ปฌ local adb server๋ฅผ ์ค‘๋‹จ
ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer
# ์‹คํ–‰ ์œ ์ง€

๋‹ค๋ฅธ ํ„ฐ๋ฏธ๋„์—์„œ๋Š” :

scrcpy

๋ฌด์„  ์—ฐ๊ฒฐ๊ณผ ๋™์ผํ•˜๊ฒŒ, ํ™”์งˆ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ๋‚˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

scrcpy -b2M -m800 --max-fps 15

Window์—์„œ์˜ ๋ฐฐ์น˜

๋งž์ถคํ˜• window ์ œ๋ชฉ

๊ธฐ๋ณธ์ ์œผ๋กœ, window์˜ ์ด๋ฆ„์€ ๋””๋ฐ”์ด์Šค์˜ ๋ชจ๋ธ๋ช… ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝํ•˜์„ธ์š”.

scrcpy --window-title 'My device'

๋ฐฐ์น˜์™€ ํฌ๊ธฐ

์ดˆ๊ธฐ window์ฐฝ์˜ ๋ฐฐ์น˜์™€ ํฌ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600

๊ฒฝ๊ณ„ ์—†์• ๊ธฐ

์œˆ๋„์šฐ ์žฅ์‹(๊ฒฝ๊ณ„์„  ๋“ฑ)์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

scrcpy --window-borderless

ํ•ญ์ƒ ๋ชจ๋“  ์œˆ๋„์šฐ ์œ„์— ์‹คํ–‰์ฐฝ ๊ณ ์ •

์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์œˆ๋„์šฐ ์ฐฝ์€ ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋กœ ๋‹ค๋ฅธ window ์œ„์— ๋””์Šคํ”Œ๋ ˆ์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

scrcpy --always-on-top
scrcpy -T  # ์ถ•์•ฝ ๋ฒ„์ „

์ „์ฒด ํ™”๋ฉด

์ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ „์ฒดํ™”๋ฉด์œผ๋กœ ๋ฐ”๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

scrcpy --fullscreen
scrcpy -f  # short version

์ „์ฒด ํ™”๋ฉด์€ Ctrl+fํ‚ค๋กœ ๋„๊ฑฐ๋‚˜ ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฏธ๋Ÿฌ๋ง ์˜ต์…˜

์ฝ๊ธฐ ์ „์šฉ(Read-only)

๊ถŒํ•œ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” (๋””๋ฐ”์ด์Šค์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ: ์ž…๋ ฅ ํ‚ค, ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ , ํŒŒ์ผ์˜ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋ž(drag&drop)):

scrcpy --no-control
scrcpy -n

ํ™”๋ฉด ๋„๊ธฐ

๋ฏธ๋Ÿฌ๋ง์„ ์‹คํ–‰ํ•˜๋Š” ์™€์ค‘์— ๋””๋ฐ”์ด์Šค์˜ ํ™”๋ฉด์„ ๋Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ์ปค๋งจ๋“œ ๋ผ์ธ ์˜ต์…˜์„(command line option) ์ž…๋ ฅํ•˜์„ธ์š”:

scrcpy --turn-screen-off
scrcpy -S

ํ˜น์€ Ctrl+o์„ ๋ˆŒ๋Ÿฌ ์–ธ์ œ๋“ ์ง€ ๋””๋ฐ”์ด์Šค์˜ ํ™”๋ฉด์„ ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ™”๋ฉด์„ ์ผœ๊ธฐ ์œ„ํ•ด์„œ๋Š”POWER (ํ˜น์€ Ctrl+p)๋ฅผ ๋ˆ„๋ฅด์„ธ์š”.

์œ ํšจ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ํ”„๋ ˆ์ž„ ์ œ๊ณต (Render expired frames)

๋””ํดํŠธ๋กœ, ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด scrcpy ๋Š” ํ•ญ์ƒ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋””์ฝ”๋”ฉ๋œ ํ”„๋ ˆ์ž„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค ๊ณผ๊ฑฐ์˜ ํ”„๋ ˆ์ž„์€ ํ•˜๋‚˜์”ฉ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”„๋ ˆ์ž„์„ ๊ฐ•์ œ๋กœ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” (๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค) ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”:

scrcpy --render-expired-frames

ํ™”๋ฉด์— ํ„ฐ์น˜ ๋‚˜ํƒ€๋‚ด๊ธฐ

๋ฐœํ‘œ๋ฅผ ํ•  ๋•Œ, ๋ฌผ๋ฆฌ์ ์ธ ๊ธฐ๊ธฐ์— ํ•œ ๋ฌผ๋ฆฌ์  ํ„ฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ์šด์˜์ฒด์ œ๋Š” ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ _Developers options_์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Scrcpy ๋Š” ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ์‹œ์ž‘ํ•  ๋•Œ์™€ ์ข…๋ฃŒํ•  ๋•Œ ์˜ต์…˜์œผ๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

scrcpy --show-touches
scrcpy -t

ํ™”๋ฉด์— ๋ฌผ๋ฆฌ์ ์ธ ํ„ฐ์น˜๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์— ์œ ์˜ํ•˜์„ธ์š” (์†๊ฐ€๋ฝ์„ ๋””๋ฐ”์ด์Šค์— ๋Œ€๋Š” ํ–‰์œ„).

์ž…๋ ฅ ์ œ์–ด

๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ

์ปดํ“จํ„ฐ์™€ ๋””๋ฐ”์ด์Šค ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํด๋ฆฝ๋ณด๋“œ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:

  • Ctrl+c ๋””๋ฐ”์ด์Šค์˜ ํด๋ฆฝ๋ณด๋“œ๋ฅผ ์ปดํ“จํ„ฐ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค;
  • Ctrl+Shift+v ์ปดํ“จํ„ฐ์˜ ํด๋ฆฝ๋ณด๋“œ๋ฅผ ๋””๋ฐ”์ด์Šค๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค;
  • Ctrl+v ์ปดํ“จํ„ฐ์˜ ํด๋ฆฝ๋ณด๋“œ๋ฅผ text event ๋กœ์จ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค ( ๊ทธ๋Ÿฌ๋‚˜, ASCII ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค )

ํ…์ŠคํŠธ ์‚ฝ์ž… ์šฐ์„  ์ˆœ์œ„

ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์ƒ์„ฑ๋˜๋Š” ๋‘ ๊ฐ€์ง€์˜ events ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

  • key events, ํ‚ค๊ฐ€ ๋ˆŒ๋ ค์žˆ๋Š” ์ง€์— ๋Œ€ํ•œ ์‹ ํ˜ธ;
  • text events, ํ…์ŠคํŠธ๊ฐ€ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์‹ ํ˜ธ.

๊ธฐ๋ณธ์ ์œผ๋กœ, ๊ธ€์ž๋“ค์€ key event ๋ฅผ ์ด์šฉํ•ด ์ž…๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ‚ค๋ณด๋“œ๋Š” ๊ฒŒ์ž„์—์„œ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค ( ๋ณดํ†ต WASD ํ‚ค์— ๋Œ€ํ•ด์„œ ).

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” issues ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•  ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

scrcpy --prefer-text

( ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๊ฒŒ์ž„์—์„œ์˜ ์ฒ˜๋ฆฌ๋ฅผ ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค )

ํŒŒ์ผ ๋“œ๋ž

APK ์‹คํ–‰ํ•˜๊ธฐ

APK๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, APK file(ํŒŒ์ผ๋ช…์ด.apk๋กœ ๋๋‚˜๋Š” ํŒŒ์ผ)์„ ๋“œ๋ž˜๊ทธํ•˜๊ณ  scrcpy window์— ๋“œ๋žํ•˜์„ธ์š” (drag and drop)

์‹œ๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์€ ์—†๊ณ ,log ํ•˜๋‚˜๊ฐ€ ์ฝ˜์†”์— ์ถœ๋ ฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋””๋ฐ”์ด์Šค์— ํŒŒ์ผ pushํ•˜๊ธฐ

๋””๋ฐ”์ด์Šค์˜/sdcard/์— ํŒŒ์ผ์„ pushํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, APKํŒŒ์ผ์ด ์•„๋‹Œ ํŒŒ์ผ์„_scrcpy_ window์— ๋“œ๋ž˜๊ทธํ•˜๊ณ  ๋“œ๋žํ•˜์„ธ์š”.(drag and drop).

์‹œ๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์€ ์—†๊ณ ,log ํ•˜๋‚˜๊ฐ€ ์ฝ˜์†”์— ์ถœ๋ ฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์‹œ์ž‘ํ•  ๋•Œ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:

scrcpy --push-target /sdcard/foo/bar/

์˜ค๋””์˜ค์˜ ์ „๋‹ฌ

_scrcpy_๋Š” ์˜ค๋””์˜ค๋ฅผ ์ง์ ‘ ์ „๋‹ฌํ•ด์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. USBaudio (Linux-only)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ถ”๊ฐ€์ ์œผ๋กœ issue #14๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋‹จ์ถ•ํ‚ค

์‹คํ–‰๋‚ด์šฉ ๋‹จ์ถ•ํ‚ค ๋‹จ์ถ•ํ‚ค (macOS)
์ „์ฒดํ™”๋ฉด ๋ชจ๋“œ๋กœ ์ „ํ™˜ Ctrl+f Cmd+f
window๋ฅผ 1:1๋น„์œจ๋กœ ์ „ํ™˜ํ•˜๊ธฐ(ํ”ฝ์…€ ๋งž์ถค) Ctrl+g Cmd+g
๊ฒ€์€ ๊ณต๋ฐฑ ์ œ๊ฑฐ ์œ„ํ•œ window ํฌ๊ธฐ ์กฐ์ • Ctrl+x | Double-clickยน Cmd+x | Double-clickยน
HOME ํด๋ฆญ Ctrl+h | Middle-click Ctrl+h | Middle-click
BACK ํด๋ฆญ Ctrl+b | Right-clickยฒ Cmd+b | Right-clickยฒ
APP_SWITCH ํด๋ฆญ Ctrl+s Cmd+s
MENU ํด๋ฆญ Ctrl+m Ctrl+m
VOLUME_UP ํด๋ฆญ Ctrl+โ†‘ (up) Cmd+โ†‘ (up)
VOLUME_DOWN ํด๋ฆญ Ctrl+โ†“ (down) Cmd+โ†“ (down)
POWER ํด๋ฆญ Ctrl+p Cmd+p
์ „์› ์ผœ๊ธฐ Right-clickยฒ Right-clickยฒ
๋ฏธ๋Ÿฌ๋ง ์ค‘ ๋””๋ฐ”์ด์Šค ํ™”๋ฉด ๋„๊ธฐ Ctrl+o Cmd+o
์•Œ๋ฆผ ํŒจ๋„ ๋Š˜๋ฆฌ๊ธฐ Ctrl+n Cmd+n
์•Œ๋ฆผ ํŒจ๋„ ๋‹ซ๊ธฐ Ctrl+Shift+n Cmd+Shift+n
๋””๋ฐ”์ด์Šค์˜ clipboard ์ปดํ“จํ„ฐ๋กœ ๋ณต์‚ฌํ•˜๊ธฐ Ctrl+c Cmd+c
์ปดํ“จํ„ฐ์˜ clipboard ๋””๋ฐ”์ด์Šค์— ๋ถ™์—ฌ๋„ฃ๊ธฐ Ctrl+v Cmd+v
Copy computer clipboard to device Ctrl+Shift+v Cmd+Shift+v
Enable/disable FPS counter (on stdout) Ctrl+i Cmd+i

ยน๊ฒ€์€ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ ๋ถ€๋ถ„์„ ๋”๋ธ” ํด๋ฆญํ•˜์„ธ์š” _ยฒํ™”๋ฉด์ด ๊บผ์ง„ ์ƒํƒœ์—์„œ ์šฐํด๋ฆญ ์‹œ ๋‹ค์‹œ ์ผœ์ง€๋ฉฐ, ๊ทธ ์™ธ์˜ ์ƒํƒœ์—์„œ๋Š” ๋’ค๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

๋งž์ถค ๊ฒฝ๋กœ (custom path)

ํŠน์ •ํ•œ adb binary๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๊ทธ๊ฒƒ์˜ ๊ฒฝ๋กœ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•˜์„ธ์š”. ADB:

ADB=/path/to/adb scrcpy

scrcpy-server.jarํŒŒ์ผ์˜ ๊ฒฝ๋กœ์— ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ๊ทธ๊ฒƒ์˜ ๊ฒฝ๋กœ๋ฅผ SCRCPY_SERVER_PATH์— ์ €์žฅํ•˜์„ธ์š”.

scrcpy ์ธ ์ด์œ ?

ํ•œ ๋™๋ฃŒ๊ฐ€ gnirehtet์™€ ๊ฐ™์ด ๋ฐœ์Œํ•˜๊ธฐ ์–ด๋ ค์šด ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๋„๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

strcpy ๋Š” string์„ copyํ•˜๊ณ ; scrcpy๋Š” screen์„ copyํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•?

BUILD์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

ํ”ํ•œ issue

FAQ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๊ฐœ๋ฐœ์ž๋“ค

developers page๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

๋ผ์ด์„ ์Šค

Copyright (C) 2018 Genymobile
Copyright (C) 2018-2022 Romain Vimont

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

๊ด€๋ จ ๊ธ€ (articles)