Build scrcpy

Here are the instructions to build scrcpy (client and server).

You may want to build only the client: the server binary, which will be pushed to the Android device, does not depend on your system and architecture. In that case, use the [prebuilt server] (so you will not need Java or the Android SDK).

Requirements

You need [adb]. It is available in the Android SDK platform tools, or packaged in your distribution (android-adb-tools).

On Windows, download the platform-tools and extract the following files to a directory accessible from your PATH: - adb.exe - AdbWinApi.dll - AdbWinUsbApi.dll

The client requires [FFmpeg] and [LibSDL2]. Just follow the instructions.

System-specific steps

Linux

Install the required packages from your package manager.

Debian/Ubuntu

```bash

runtime dependencies

sudo apt install ffmpeg libsdl2-2.0.0

client build dependencies

sudo apt install make gcc pkg-config meson ninja-build \ libavcodec-dev libavformat-dev libavutil-dev \ libsdl2-dev

server build dependencies

sudo apt install openjdk-8-jdk ```

On old versions (like Ubuntu 16.04), meson is too old. In that case, install it from pip3:

bash sudo apt install python3-pip pip3 install meson

Fedora

```bash

enable RPM fusion free

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

client build dependencies

sudo dnf install SDL2-devel ffms2-devel meson gcc make

server build dependencies

sudo dnf install java ```

Windows

Cross-compile from Linux

This is the preferred method (and the way the release is built).

From Debian, install mingw:

bash sudo apt install mingw-w64 mingw-w64-tools

You also need the JDK to build the server:

bash sudo apt install openjdk-8-jdk

Then generate the releases:

bash make -f Makefile.CrossWindows

It will generate win32 and win64 releases into dist/.

In MSYS2

From Windows, you need [MSYS2] to build the project. From an MSYS2 terminal, install the required packages:

```bash

runtime dependencies

pacman -S mingw-w64-x8664-SDL2 \ mingw-w64-x8664-ffmpeg

client build dependencies

pacman -S mingw-w64-x8664-make \ mingw-w64-x8664-gcc \ mingw-w64-x8664-pkg-config \ mingw-w64-x8664-meson ```

For a 32 bits version, replace x86_64 by i686:

```bash

runtime dependencies

pacman -S mingw-w64-i686-SDL2 \ mingw-w64-i686-ffmpeg

client build dependencies

pacman -S mingw-w64-i686-make \ mingw-w64-i686-gcc \ mingw-w64-i686-pkg-config \ mingw-w64-i686-meson ```

Java (>= 7) is not available in MSYS2, so if you plan to build the server, install it manually and make it available from the PATH:

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

Mac OS

Install the packages with [Homebrew]:

```bash

runtime dependencies

brew install sdl2 ffmpeg

client build dependencies

brew install pkg-config meson ```

Additionally, if you want to build the server, install Java 8 from Caskroom, and make it avaliable from the PATH:

bash brew tap caskroom/versions brew cask install java8 export JAVA_HOME="$(/usr/libexec/java_home --version 1.8)" export PATH="$JAVA_HOME/bin:$PATH"

Docker

See pierlon/scrcpy-docker.

Common steps

If you want to build the server, install the [Android SDK] (Android Studio), and set ANDROID_HOME to its directory. For example:

bash export ANDROID_HOME=~/android/sdk

If you don't want to build the server, use the [prebuilt server].

Clone the project:

bash git clone https://github.com/Genymobile/scrcpy cd scrcpy

Then, build:

bash meson x --buildtype release --strip -Db_lto=true cd x ninja

Note: ninja must be run as a non-root user (only ninja install must be run as root).

Run

To run without installing:

bash ./run x [options]

Install

After a successful build, you can install scrcpy on the system:

bash sudo ninja install # without sudo on Windows

This installs two files:

Just remove them to "uninstall" the application.

You can then run scrcpy.

Prebuilt server

Download the prebuilt server somewhere, and specify its path during the Meson configuration:

bash meson x --buildtype release --strip -Db_lto=true \ -Dprebuilt_server=/path/to/scrcpy-server.jar cd x ninja sudo ninja install