主要分6步:
- 直接安装 Flutter 或使用 fvm 安装(所需版本见
.fvmrc) - 安装 Rust
- 克隆 LocalSend 代码库
- 执行
cd app进入 app 目录 - 运行
flutter pub get下载依赖项 - 运行
flutter run启动应用程序
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设备,交互式选择设备发送文件。
对应文档的核心源码位置(复刻重点)
文档标注:/packages/core/,Rust编写,LocalSend协议库
-
设备局域网广播发现
-
设备握手、身份校验
-
HTTP文件传输、分块、接收发送逻辑
这就是LocalSend的灵魂,UI只是壳。
常见坑
- 新开终端 fvm 找不到:每次新开终端执行
source ~/.bashrc,或者重启终端。 - 编译桌面端报错缺少gtk:前面系统依赖那一步不能省略。
- 网络超时:flutter和pub用国内镜像;Rust在
~/.cargo/config.toml配置国内crates镜像。 - 权限问题:全程普通用户,不要sudo执行fvm / flutter / cargo。
- 缺失工具(ninja-build、clang/g++):需要进行安装
sudo apt install -y ninja-build cmake clang build-essential libstdc++-12-dev。 - Flutter UI 层的国际化:LocalSend 用了
slang国际化包,lib/util/i18n.dart的switch 表达式没有新语言的分支,需要增加通配符_ =>





