089378926b
The server is currently a JAR, but it may ba an APK or a DEX, so the variable name should not contain the type. Rename the environment variable, the Meson options and the C definitions. |
||
---|---|---|
app | ||
config | ||
gradle/wrapper | ||
scripts | ||
server | ||
.gitignore | ||
Makefile | ||
README.md | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
meson.build | ||
meson_options.txt | ||
run | ||
settings.gradle |
README.md
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"
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
.