Go to file
Romain Vimont f22d4decca Enable mouse focus clickthrough only if available
The hint SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH appeared in SDL 2.0.5. Ignore
it if the SDL version is older.
2018-02-05 16:15:52 +01:00
app Enable mouse focus clickthrough only if available 2018-02-05 16:15:52 +01:00
gradle/wrapper Convert server to an Android project 2018-01-30 12:01:36 +01:00
server Hide services in Device 2018-02-02 17:06:57 +01:00
.gitignore Convert server to an Android project 2018-01-30 12:01:36 +01:00
Makefile Fix Makefile for Windows 2018-02-05 14:52:19 +01:00
README.md Add window icon 2018-02-05 14:46:00 +01:00
build.gradle Convert server to an Android project 2018-01-30 12:01:36 +01:00
gradle.properties Convert server to an Android project 2018-01-30 12:01:36 +01:00
gradlew Convert server to an Android project 2018-01-30 12:01:36 +01:00
gradlew.bat Convert server to an Android project 2018-01-30 12:01:36 +01:00
settings.gradle Convert server to an Android project 2018-01-30 12:01:36 +01:00

README.md

ScrCpy

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

Run

Runtime requirements

This projects requires FFmpeg, LibSDL2, LibSDL2-image and LibSDL2-net.

Linux

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

sudo apt install ffmpeg libsdl2-2.0.0 libsdl2-image-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_image
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-image-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"

Build

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 build

To run the build:

make run

It is also pass arguments to scrcpy via make:

make run ARGS="-p 1234"

The purpose of this command is to execute scrcpy during the development.

Test

To execute unit tests:

make test

The server-side tests require JUnit 4:

sudo apt install junit4

Generate a release

From the project root directory, execute:

make release

This will generate the application in dist/scrcpy/.

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

Other options are available, check scrcpy --help.