# 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 [MSYS2]: http://www.msys2.org/ #### 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. [sdl]: https://www.libsdl.org/ [ffmpeg]: https://www.ffmpeg.org/ [meson]: http://mesonbuild.com/ [ninja]: https://ninja-build.org/ ### Build requirements Install the [Android SDK], the JDK 8 (`openjdk-8-jdk`), and the packages described below. [Android SDK]: https://developer.android.com/studio/index.html #### 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`.