编译 scrcpy
以下是编译 scrcpy(客户端和服务器)的说明。
如果只需构建并安装最新版本,请按照 linux.md 中的简化流程操作。
分支
项目有两个主要分支:
master
:包含最新发布版本。这是 GitHub 上的项目主页。dev
:当前开发分支。所有提交到dev
的代码将包含在下一个版本中。
如需贡献代码,请基于最新的 dev
分支提交。
要求
需要 adb。可从 Android SDK 平台工具 获取,或通过系统包管理器安装(如 adb
)。
在 Windows 上,下载 platform-tools 并将以下文件解压到 PATH
可访问的目录:
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
scrcpy 的发布版本中也包含这些文件。
客户端需要 FFmpeg 和 LibSDL2。请按照说明安装。
系统特定步骤
Linux
通过包管理器安装所需依赖。
Debian/Ubuntu
# 运行时依赖
sudo apt install ffmpeg libsdl2-2.0-0 adb libusb-1.0-0
# 客户端构建依赖
sudo 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
# 服务器构建依赖
sudo apt install openjdk-17-jdk
在旧版本(如 Ubuntu 16.04)中,meson
可能过旧。此时可通过 pip3
安装:
sudo apt install python3-pip
pip3 install meson
Fedora
# 启用 RPM Fusion Free
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
# 客户端构建依赖
sudo dnf install SDL2-devel ffms2-devel libusb1-devel libavdevice-free-devel meson gcc make
# 服务器构建依赖
sudo dnf install java-devel
Windows
从 Linux 交叉编译
这是推荐的方法(也是发布版本的构建方式)。
在 Debian 中安装 mingw:
sudo apt install mingw-w64 mingw-w64-tools libz-mingw-w64-dev
还需安装 JDK 以构建服务器:
sudo apt install openjdk-17-jdk
然后生成发布版本:
./release.sh
生成的 win32 和 win64 版本将位于 dist/
目录。
在 MSYS2 中构建
在 Windows 上,需要 MSYS2 来构建项目。在 MSYS2 终端中安装所需依赖:
# 运行时依赖
pacman -S mingw-w64-x86_64-SDL2 \
mingw-w64-x86_64-ffmpeg \
mingw-w64-x86_64-libusb
# 客户端构建依赖
pacman -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
:
# 运行时依赖
pacman -S mingw-w64-i686-SDL2 \
mingw-w64-i686-ffmpeg \
mingw-w64-i686-libusb
# 客户端构建依赖
pacman -S mingw-w64-i686-make \
mingw-w64-i686-gcc \
mingw-w64-i686-pkg-config \
mingw-w64-i686-meson
MSYS2 中没有 Java(>= 7),如需构建服务器,请手动安装并将其添加到 PATH
:
export PATH="$JAVA_HOME/bin:$PATH"
Mac OS
使用 Homebrew 安装依赖:
# 运行时依赖
brew install sdl2 ffmpeg libusb
# 客户端构建依赖
brew install pkg-config meson
如需构建服务器,还需从 Caskroom 安装 Java 17 并添加到 PATH
:
brew tap homebrew/cask-versions
brew install adoptopenjdk/openjdk/adoptopenjdk17
export JAVA_HOME="$(/usr/libexec/java_home --version 1.17)"
export PATH="$JAVA_HOME/bin:$PATH"
Docker
通用步骤
以非 root 用户克隆项目:
git clone https://github.com/Genymobile/scrcpy
cd scrcpy
构建
如果只需构建客户端(服务器二进制文件将被推送到 Android 设备,不依赖于系统架构),可以使用 预构建服务器(此时无需 Java 或 Android SDK)。
选项 1:从源码构建所有内容
安装 Android SDK(Android Studio),并设置 ANDROID_SDK_ROOT
环境变量。例如:
# Linux
export ANDROID_SDK_ROOT=~/Android/Sdk
# Mac
export ANDROID_SDK_ROOT=~/Library/Android/sdk
# Windows
set ANDROID_SDK_ROOT=%LOCALAPPDATA%\Android\sdk
然后构建:
meson setup x --buildtype=release --strip -Db_lto=true
ninja -Cx # 不要以 root 用户运行
注意:ninja
必须 以非 root 用户运行(只有 ninja install
需要 root 权限)。
选项 2:使用预构建服务器
scrcpy-server-v3.2
SHA-256:b920e0ea01936bf2482f4ba2fa985c22c13c621999e3d33b45baa5acfc1ea3d0
下载预构建服务器,并在 Meson 配置中指定路径:
meson setup x --buildtype=release --strip -Db_lto=true \
-Dprebuilt_server=/path/to/scrcpy-server
ninja -Cx # 不要以 root 用户运行
服务器仅与匹配的客户端版本兼容(此服务器适用于 master
分支)。
不安装直接运行
./run x [options]
安装
构建成功后,可以安装 scrcpy 到系统:
sudo ninja -Cx install # Windows 上无需 sudo
安装的文件包括:
/usr/local/bin/scrcpy
(主程序)/usr/local/share/scrcpy/scrcpy-server
(推送到设备的服务器)/usr/local/share/man/man1/scrcpy.1
(手册页)/usr/local/share/icons/hicolor/256x256/apps/icon.png
(应用图标)/usr/local/share/zsh/site-functions/_scrcpy
(zsh 补全)/usr/local/share/bash-completion/completions/scrcpy
(bash 补全)
之后可直接运行 scrcpy
。
卸载
sudo ninja -Cx uninstall # Windows 上无需 sudo