犀牛派X1上部署LocalSend实操指南


主要分6步:

  1. 直接安装 Flutter 或使用 fvm 安装(所需版本见 .fvmrc)
  2. 安装 Rust
  3. 克隆 LocalSend 代码库
  4. 执行 cd app 进入 app 目录
  5. 运行 flutter pub get 下载依赖项
  6. 运行 flutter run 启动应用程序

:warning: Note重点:装好fvm后,要用 fvm flutter 替代 flutter 命令,不能直接用系统全局flutter。

环境:Ubuntu(22.04),普通用户,不要root操作

第一步:安装系统前置依赖

sudo apt update
sudo apt install -y git curl build-essential libssl-dev libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev pkg-config unzip

作用:编译Rust、Flutter桌面程序必须的系统库。

第二步:安装 Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • 弹出选项输入 1,默认安装
  • 安装完成加载环境变量
source "$HOME/.cargo/env"

校验:

rustc --version
cargo --version

第三步:安装 Dart,然后安装 FVM

FVM是dart的全局包,所以先装dart:

# 添加dart源
sudo apt install -y apt-transport-https

wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --yes --dearmor -o /usr/share/keyrings/dart.gpg
#科学上网

echo 'deb [signed-by=/usr/share/keyrings/dart.gpg] https://storage.googleapis.com/download.dartlang.org/linux/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list

sudo apt update
sudo apt install dart

配置dart环境变量

echo 'export PATH="$PATH:/usr/lib/dart/bin"' >> ~/.bashrc
source ~/.bashrc

安装 fvm

dart pub global activate fvm

把pub缓存目录加入PATH(不然找不到fvm命令)

echo 'export PATH="$PATH:$HOME/.pub-cache/bin"' >> ~/.bashrc
source ~/.bashrc

校验

fvm --version

第四步:克隆代码库

如果你已经下载好源码压缩包,可以跳过这步;想干净从头来就用git克隆:

git clone https://github.com/localsend/localsend.git
cd localsend

这个目录就是项目根目录,里面包含 .fvmrc 文件。

拉取项目指定版本Flutter(fvm核心操作)

fvm use

这条命令自动读取项目内 .fvmrc,下载项目需要的Flutter版本。

#科学上网

第五步:进入app目录

cd app

第六步:下载依赖

我们用fvm,所以替换成

fvm flutter pub get

第七步:启动程序

fvm flutter run -d linux

会编译Rust核心库 + Flutter UI,启动LocalSend桌面GUI。


文档下方 CLI 部分(协议调试,推荐复刻优先试这个)

LocalSend CLI:独立终端客户端,实现 LocalSend v2协议,不需要Flutter图形界面,用来调试传输逻辑。

# 回到项目根目录
cd ..
cd cli
# 直接运行命令行客户端
cargo run

运行后查看帮助:

cargo run -- --help

发送文件示例(文档给的命令):

cargo run -- send report.pdf photo.jpg ./project-backup

运行后会扫描局域网LocalSend设备,交互式选择设备发送文件。

:open_file_folder: 对应文档的核心源码位置(复刻重点)

文档标注:/packages/core/,Rust编写,LocalSend协议库

  • 设备局域网广播发现

  • 设备握手、身份校验

  • HTTP文件传输、分块、接收发送逻辑

    这就是LocalSend的灵魂,UI只是壳。

常见坑

  1. 新开终端 fvm 找不到:每次新开终端执行 source ~/.bashrc,或者重启终端。
  2. 编译桌面端报错缺少gtk:前面系统依赖那一步不能省略。
  3. 网络超时:flutter和pub用国内镜像;Rust在~/.cargo/config.toml配置国内crates镜像。
  4. 权限问题:全程普通用户,不要sudo执行fvm / flutter / cargo。
  5. 缺失工具(ninja-build、clang/g++):需要进行安装sudo apt install -y ninja-build cmake clang build-essential libstdc++-12-dev。
  6. Flutter UI 层的国际化:LocalSend 用了 slang 国际化包,lib/util/i18n.dart的switch 表达式没有新语言的分支,需要增加通配符 _ =>