LocalSend 完整教程:5 步跑通 AirDrop 开源替代,并看懂它的源码结构 LocalSend 完整教程5 步跑通 AirDrop 开源替代并看懂它的源码结构【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsendLocalSend 是一个开源、跨平台的局域网文件传输工具手机、电脑、平板之间互传文件和消息全程走本地网络不需要互联网、不经过任何第三方服务器。本文带你把它从源码跑起来并讲清楚你后续真正会碰到的几处代码。它解决什么问题适合谁AirDrop 只在苹果设备之间工作而 LocalSend 支持 Windows、macOS、Linux、Android、iOS甚至 Fire OS。它和同类工具的区别在于完全离线走局域网多播发现 HTTPS 传输断网也能传文件自带加密TLS 证书由每台设备在启动时临时生成设备间点对点通信开源可读界面是 FlutterDart协议核心是 Rust两者用 flutter_rust_bridge 打通想改协议或改 UI 都有明确入口。它适合三类人想给自家网络搭一个万能 AirDrop的普通用户想学 Flutter Rust 混合架构的开发者以及想写自己传输工具的工程师。最快把 LocalSend 跑起来整个应用入口在app/目录Rust 核心在packages/下编译时会自动构建。跟着做安装 Flutter。项目通过.fvmrc锁定了 Flutter 版本app/pubspec.yaml要求flutter: ^3.41.0版本不一致会出编译问题建议直接用 fvm 管理安装 Rust。根目录的rust-toolchain.toml会指定工具链版本克隆代码git clone https://gitcode.com/GitHub_Trending/lo/localsend进入应用目录拉依赖启动cd app flutter pub get flutter run首次启动会编译 Rust 核心耗时较长属正常现象。启动后先打开接收标签用另一台设备打开 LocalSend 或任一浏览器指向它生成的地址即可互相发现并传文件。如果两台设备互相发现不了先查三件事路由器是否开了 AP 隔离需关闭、Windows 是否把当前网络设成了公用应设为私有、防火墙是否放行了 TCP/UDP 53317 端口。跑起来之后你真正会碰到的几处不用通读全部代码下面这张表覆盖了 90% 的改动场景位置作用什么时候碰它app/lib/main.dartDart 入口先调preInit建好依赖容器再runApp想理解启动流程从这里看app/lib/config/init.dart应用初始化日志、RustLib.init()加载 Rust 核心、持久化改启动行为、加初始化逻辑app/lib/pages/页面层主页、发送页、接收页、设置页改界面布局、加页面app/lib/provider/状态与网络服务器、附近设备、设置等 Provider改业务逻辑app/assets/i18n/全部翻译文件含_missing_translations_*.json加语言、修文案packages/core/src/Rust 协议核心HTTP 服务器、WebRTC、多播发现改传输协议、加功能packages/localsend_isolates/Flutter 与 Rust 之间的桥接层给 Dart 侧暴露新 Rust 接口cli/纯 Rust 命令行版TUI想在脚本/服务器里无界面收发文件server/可选的信令服务器Rust WebSocket需要跨 NAT 的 WebRTC 信令时一个值得注意的设计Dart 侧几乎不直接碰网络细节发现、收发、加密全部由packages/core的 Rust 代码完成main.dart里的preInit通过RustLib.init()把这套核心拉起来。所以界面层和协议层是真正解耦的。改哪里四种最常见的自定义换语言/修文案编辑app/assets/i18n/下对应语言的 JSON缺失的键在_missing_translations_语言.json里列出界面即生效换主题app/lib/config/theme.dart里集中处理明暗主题与动态取色界面代码通过 Provider 读取桌面便携模式在 Windows/macOS 可执行文件旁放一个可为空的settings.json应用就会把设置存在这里加--hidden启动参数可只进托盘不弹窗口用 CLI 版收发cli/目录可单独构建--alias、--port、--destination或环境变量LOCALSEND_ALIAS、LOCALSEND_PORT、LOCALSEND_DESTINATION可自定义设备名、端口与接收目录默认端口同样是 53317。server/默认不用部署只有当你需要让 WebRTC 通道跨网络发现对端时才单独跑这个信令服务。建议你现在就克隆仓库在电脑上按上面 5 步执行一次flutter run再拿手机实测发送一个视频文件——跑通一次再回头对照上表定位你想改的那一层。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考