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).
You need [adb]. It is available in the Android SDK platform
tools, or packaged in your distribution (adb
).
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.
Install the required packages from your package manager.
```bash
sudo apt install ffmpeg libsdl2-2.0-0 adb
sudo apt install gcc git pkg-config meson ninja-build \ libavcodec-dev libavformat-dev libavutil-dev \ libsdl2-dev
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
```bash
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install SDL2-devel ffms2-devel meson gcc make
sudo dnf install java-devel ```
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/
.
From Windows, you need [MSYS2] to build the project. From an MSYS2 terminal, install the required packages:
```bash
pacman -S mingw-w64-x8664-SDL2 \ mingw-w64-x8664-ffmpeg
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
pacman -S mingw-w64-i686-SDL2 \ mingw-w64-i686-ffmpeg
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"
Install the packages with [Homebrew]:
```bash
brew install sdl2 ffmpeg
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"
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
ninja -Cx
Note: ninja
must be run as a non-root user (only ninja
install
must be run as root).
To run without installing:
bash
./run x [options]
After a successful build, you can install scrcpy on the system:
bash
sudo ninja -Cx install # without sudo on Windows
This installs two files:
/usr/local/bin/scrcpy
/usr/local/share/scrcpy/scrcpy-server
Just remove them to "uninstall" the application.
You can then run scrcpy.
scrcpy-server-v1.12
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
ninja -Cx
sudo ninja -Cx install