Go to file
Romain Vimont 2172c53b7b Force the server target filename
The server path may be customized using SCRCPY_APK. If its basename is
different from "scrcpy.apk", it will be pushed with a different name,
so the execution would fail.

Therefore, force the push target filename.
2018-02-02 09:34:52 +01:00
app Force the server target filename 2018-02-02 09:34:52 +01:00
gradle/wrapper Convert server to an Android project 2018-01-30 12:01:36 +01:00
server Add bit-rate command-line option 2018-02-01 17:11:40 +01:00
.gitignore Convert server to an Android project 2018-01-30 12:01:36 +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
Makefile Convert server to an Android project 2018-01-30 12:01:36 +01:00
README.md Add unit testing instructions in README 2018-01-18 17:28:05 +01:00
settings.gradle Convert server to an Android project 2018-01-30 12:01:36 +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