构建 scrcpy
以下是构建 scrcpy(客户端和服务器)的说明。
如果你只想构建并安装最新版本,请按照 doc/linux.md 中描述的简化流程进行操作。
分支
有两个主要分支:
- master
:包含最新版本。它是项目在 GitHub 上的主页。
- dev
:当前开发分支。dev
中存在的每个提交都将在下一个版本中。
如果你想贡献代码,请基于最新的 dev
分支进行提交。
要求
你需要 adb。它可以在 Android SDK platform tools 中获得,或者在你们的发行版中打包(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 免费版
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 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
它将在 dist/
目录中生成 win32 和 win64 发布。
在 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
Java(>= 7)在 MSYS2 中不可用,所以如果您计划构建服务器,请手动安装它,并使其可从 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 # DO NOT RUN AS ROOT
注意:ninja
必须 以非 root 用户身份运行(只有 ninja install
必须以 root 用户身份运行)。
选项 2:使用预构建服务器
scrcpy-server-v2.6.1
SHA-256:ca7ab50b2e25a0e5af7599c30383e365983fa5b808e65ce2e1c1bba5bfe8dc3b
下载预构建服务器到某个地方,并在 Meson 配置中指定其路径:
meson setup x --buildtype=release --strip -Db_lto=true \
-Dprebuilt_server=/path/to/scrcpy-server
ninja -Cx # DO NOT RUN AS ROOT
服务器仅与匹配的客户端版本一起工作(本服务器与`master`分支一起工作)。
### 无需安装即可运行:
```bash
./run x [选项]
安装
构建成功后,您可以在系统上安装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
```