LocalSend 快速上手教程:开源跨平台文件传输项目完整拆解
2026/8/29 15:45:34 网站建设 项目流程

LocalSend 快速上手教程:开源跨平台文件传输项目完整拆解

【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend

LocalSend 是一款开源的跨平台文件传输应用,可以看作 AirDrop 的免费替代品:同一 Wi-Fi 下,Android、iOS、Windows、macOS、Linux 之间都能安全收发文件和消息,全程不需要互联网。本教程带你从第一次 clone 的角度,看懂它的目录结构、启动流程和关键配置。

它解决什么问题

LocalSend 用 REST API + HTTPS 加密在局域网内直连设备,TLS 证书在每台设备上动态生成,数据不经过任何第三方服务器。它面向两类人:需要离线传文件、又不想装一堆 IM 工具的用户,以及想学习 Flutter + Rust 混合架构项目的开发者。

clone 下来之后先别急着找入口,两条命令就能跑起来:

git clone https://gitcode.com/GitHub_Trending/lo/localsend cd localsend/app && flutter pub get && flutter run
  • 第 1 行:把仓库拉到本地
  • 第 2 行:真正的 Flutter 应用在app/子目录,先拉依赖再启动

📁 30 秒看懂目录结构

localsend/ ├── app/ # Flutter 应用:lib/ 下的页面、provider、i18n 资源 ├── packages/ # core(Rust 协议核心)、localsend_isolates(Dart↔Rust 桥) ├── cli/ # Rust 命令行版 ├── server/ # 独立 Rust 服务端 ├── support/ # 构建脚本、多语言 README ├── pubspec.yaml # Flutter 配置 └── Cargo.toml # Rust 配置

  • packages/core里是协议、HTTP、WebRTC 的全部实现,用 Rust 写,UI 层通过localsend_isolates调过去
  • 同时存在pubspec.yamlCargo.toml,说明这是典型的双语言 monorepo,找代码前先分清是 Dart 还是 Rust 的事

启动流程:main 里只做了两件事

入口在 app 入口源码(注意不是app/main.dart):

Future<void> main(List<String> args) async { final container = await preInit(args); // 1. UI 出现前的全部准备工作 runApp(RefenaScope.withContainer( container: container, child: TranslationProvider(child: const LocalSendApp()), // 2. 套上依赖容器和翻译层 )); }
  • preInit(args)(定义在 config/init.dart)负责加载设置、启动本地网络服务、初始化 Rust isolate,失败则弹出错误页
  • RefenaScope是依赖注入容器,组件通过context.ref拿 provider
  • LocalSendApp外层还套了托盘、窗口、生命周期三个 Watcher,App 回到前台时会重启网络服务和发现广播

⚙️ 三个最容易踩坑的配置文件

app/pubspec.yaml:声明 Flutter 版本要求和依赖,其中本地包引用是理解架构的钥匙:

environment: flutter: ^3.41.0 # 要求的 Flutter 版本 localsend_isolates: path: ../packages/localsend_isolates # 指向仓库内的 Dart↔Rust 桥
  • path依赖直接指向仓库内模块,不用猜桥接层在哪

.fvmrc:把 Flutter 版本锁死在 3.41.9。不读它最容易在编译时报莫名其妙的错,项目建议用 fvm 管理版本,装好后用fvm flutter替代flutter命令。

Cargo.toml:Rust workspace 列出四个成员(clipackages/corepackages/localsend_isolates/rustserver),并单独给加密库开了优化等级,因为 RSA 密钥生成太慢会把拖慢本地测试。

下一步往哪看

  • CONTRIBUTING.md:本地完整跑法(多了dart run build_runner build -d这一步代码生成)和 PR 规范
  • README.md:防火墙放行的 TCP/UDP 53317 端口、设备搜不到时的排查表、各平台打包命令
  • app/assets/i18n/:60 多种语言的翻译文件,想从本地化切入贡献代码,这里门槛最低

从 clone 到flutter run只需要两分钟,读懂app/lib/main.dart和两个 workspace 配置文件之后,Dart 侧和 Rust 侧的边界就清楚了——这正是理解 LocalSend 源码的起点。

【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询