Find a file
Romain Vimont 2c4ea6869e Do not use device as a singleton
The device instance should be able to store a state (e.g. the maximum
size requested by the user), so it should not be a singleton.
2018-01-29 15:00:15 +01:00
app Swap position/point names 2018-01-29 14:52:22 +01:00
server Do not use device as a singleton 2018-01-29 15:00:15 +01:00
.gitignore Initial commit 2017-12-12 15:25:15 +01:00
Makefile Implement keyboard/mouse control 2018-01-18 17:25:13 +01:00
README.md Add unit testing instructions in README 2018-01-18 17:28:05 +01:00

ScrCpy

This project displays screens of Android devices plugged on USB in live.

Run

Runtime requirements

This projects requires FFmpeg, LibSDL2 and LibSDL2-net.

Linux

Install the packages from your package manager. For example, on Debian:

sudo apt install ffmpeg libsdl2-2.0.0 libsdl2-net-2.0.0

Windows

From MSYS2:

pacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-x86_64-SDL2_net
pacman -S mingw-w64-x86_64-ffmpeg

MacOS

TODO

Build

The project is divided into two parts:

  • the server, running on the device (in server/);
  • the client, running on the computer (in app/).

The server is a raw Java project requiring Android SDK. It not an Android project: the target file is a .jar, and a main() method is executed with shell rights.

The client is a C project using SDL and FFmpeg, built with Meson/Ninja.

The root directory contains a Makefile to build both parts.

Build requirements

Install the Android SDK, the JDK 8 (openjdk-8-jdk), and the packages described below.

Linux

sudo apt install make gcc openjdk-8-jdk pkg-config meson zip \
                 libavcodec-dev libavformat-dev libavutil-dev \
                 libsdl2-dev libsdl2-net-dev

Windows

Install these packages:

pacman -S mingw-w64-x86_64-make
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-pkg-config
pacman -S mingw-w64-x86_64-meson
pacman -S zip

Java 8 is not available in MSYS2, so install it manually and make it available from the PATH:

export PATH="$JAVA_HOME/bin:$PATH"

Generate

Make sure your ANDROID_HOME variable is set to your Android SDK directory:

export ANDROID_HOME=~/android/sdk

From the project root directory, execute:

make release

This will generate the application in dist/scrcpy/.

Test

To execute unit tests:

make test

The server-side tests require JUnit 4:

sudo apt install junit4

Run

Plug a device, and from dist/scrcpy/, execute:

./scrcpy

If several devices are listed in adb devices, you must specify the serial:

./scrcpy 0123456789abcdef

To change the default port (useful to launch several scrcpy simultaneously):

./scrcpy -p 1234