构建 scrcpy
以下为构建 scrcpy(客户端与服务端)的说明。
如果你只想构建并安装最新发行版,请遵循 doc/linux.md 中的简化流程。
项目主要有两个分支:
master:包含最新发行版,同时也是 GitHub 的项目首页。dev:当前开发分支。dev中的每个提交都会进入下一个发行版。
如果你打算贡献代码,请基于最新的 dev 分支进行提交。
需要安装 adb。它可从 Android SDK 平台工具 获得,或通过发行版的包管理器安装(adb)。
在 Windows 上,下载 platform-tools 并将以下文件解压到可通过 PATH 访问的目录:
adb.exeAdbWinApi.dllAdbWinUsbApi.dll
scrcpy 的发行包中也提供了这些文件。
客户端依赖 FFmpeg 与 LibSDL2。按照下文说明安装即可。
按系统进行的步骤
Section titled “按系统进行的步骤”请通过你的包管理器安装所需的软件包。
Debian/Ubuntu
Section titled “Debian/Ubuntu”# runtime dependenciessudo apt install ffmpeg libsdl2-2.0-0 adb libusb-1.0-0
# client build dependenciessudo apt install gcc git pkg-config meson ninja-build libsdl2-dev \ libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \ libswresample-dev libusb-1.0-0-dev
# server build dependenciessudo apt install openjdk-17-jdk在旧版本系统(如 Ubuntu 16.04)上,meson 过旧。此时可通过 pip3 安装新版:
sudo apt install python3-pippip3 install mesonFedora
Section titled “Fedora”# 启用 RPM fusion free 仓库sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
# client build dependenciessudo dnf install SDL2-devel ffms2-devel libusb1-devel libavdevice-free-devel meson gcc make
# server build dependenciessudo dnf install java-develWindows
Section titled “Windows”从 Linux 交叉编译
Section titled “从 Linux 交叉编译”这是推荐方法(发行版也是以此方式构建)。
在 Debian 上安装 mingw:
sudo apt install mingw-w64 mingw-w64-tools libz-mingw-w64-dev构建服务端还需要安装 JDK:
sudo apt install openjdk-17-jdk然后生成发行包:
./release.sh这将在 dist/ 目录生成 win32 与 win64 版本。
在 MSYS2 中构建
Section titled “在 MSYS2 中构建”在 Windows 上,你需要通过 MSYS2 构建该项目。请在 MSYS2 终端安装所需软件包:
# runtime dependenciespacman -S mingw-w64-x86_64-SDL2 \ mingw-w64-x86_64-ffmpeg \ mingw-w64-x86_64-libusb
# client build dependenciespacman -S mingw-w64-x86_64-make \ mingw-w64-x86_64-gcc \ mingw-w64-x86_64-pkg-config \ mingw-w64-x86_64-meson如需 32 位版本,将 x86_64 替换为 i686:
# runtime dependenciespacman -S mingw-w64-i686-SDL2 \ mingw-w64-i686-ffmpeg \ mingw-w64-i686-libusb
# client build dependenciespacman -S mingw-w64-i686-make \ mingw-w64-i686-gcc \ mingw-w64-i686-pkg-config \ mingw-w64-i686-mesonMSYS2 中不提供 Java(>= 7),如果你计划构建服务端,请手动安装并确保可通过 PATH 访问:
export PATH="$JAVA_HOME/bin:$PATH"Mac OS
Section titled “Mac OS”通过 Homebrew 安装相关包:
# runtime dependenciesbrew install sdl2 ffmpeg libusb
# client build dependenciesbrew install pkg-config meson此外,如需构建服务端,请通过 Caskroom 安装 Java 17,并确保可通过 PATH 访问:
brew tap homebrew/cask-versionsbrew install adoptopenjdk/openjdk/adoptopenjdk17export JAVA_HOME="$(/usr/libexec/java_home --version 1.17)"export PATH="$JAVA_HOME/bin:$PATH"Docker
Section titled “Docker”以非 root 用户身份克隆项目:
git clone https://github.com/Genymobile/scrcpycd scrcpy你可能只需要构建客户端:服务端二进制将被推送到 Android 设备,它不依赖你的系统与架构。此时可使用[预构建服务端](因此不需要 Java 或 Android SDK)。
方案一:从源码构建全部组件
Section titled “方案一:从源码构建全部组件”安装 Android SDK(Android Studio),并将 ANDROID_SDK_ROOT 设置为其目录。例如:
# Linuxexport ANDROID_SDK_ROOT=~/Android/Sdk# Macexport ANDROID_SDK_ROOT=~/Library/Android/sdk# Windowsset ANDROID_SDK_ROOT=%LOCALAPPDATA%\Android\sdk然后进行构建:
meson setup x --buildtype=release --strip -Db_lto=trueninja -Cx # DO NOT RUN AS ROOT注意:ninja 必须以非 root 用户运行(仅 ninja install 需要以 root 运行)ninja-user。
方案二:使用预构建服务端
Section titled “方案二:使用预构建服务端”scrcpy-server-v3.3.3
SHA-256:7e70323ba7f259649dd4acce97ac4fefbae8102b2c6d91e2e7be613fd5354be0
在某处下载预构建的服务端,并在 Meson 配置时指定其路径:
meson setup x --buildtype=release --strip -Db_lto=true \ -Dprebuilt_server=/path/to/scrcpy-serverninja -Cx # DO NOT RUN AS ROOT服务端仅能与匹配的客户端版本一起工作(该服务端适配 master 分支)。
无需安装直接运行:
Section titled “无需安装直接运行:”./run x [options]构建成功后,你可以将 scrcpy 安装到系统:
sudo ninja -Cx install # without sudo on Windows这会安装以下文件:
/usr/local/bin/scrcpy(main app)/usr/local/share/scrcpy/scrcpy-server(server to push to the device)/usr/local/share/man/man1/scrcpy.1(manpage)/usr/local/share/icons/hicolor/256x256/apps/icon.png(app icon)/usr/local/share/zsh/site-functions/_scrcpy(zsh completion)/usr/local/share/bash-completion/completions/scrcpy(bash completion)
随后即可运行 scrcpy。
sudo ninja -Cx uninstall # without sudo on Windows