ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LocalSend 全平台使用与构建指南:安装渠道、网络配置到源码级实现剖析

LocalSend 全平台使用与构建指南:安装渠道、网络配置到源码级实现剖析 LocalSend 全平台使用与构建指南安装渠道、网络配置到源码级实现剖析【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend本篇指南基于 LocalSend 项目官方 README白俄罗斯语版 README_BE.md整理并深度扩充系统讲解这款开源跨平台 AirDrop 替代方案的下载渠道与兼容性、防火墙/路由器网络配置、便携模式与隐藏启动参数以及「无需互联网即可安全传文件」这一核心机制在 Rust 核心库中的实现依据。读完后你可以独立完成 LocalSend 在各平台的安装、排障、从源码构建Android/iOS/macOS/Windows/Linux 五个平台命令一应俱全并理解端口 53317、settings.json便携模式、--hidden参数背后的真实代码路径。LocalSend 是什么LocalSend 是一款免费、开源的跨平台程序通过REST API HTTPS 加密在局域网内的设备之间安全地交换文件与消息。与依赖外部服务器的其他传输/分享工具不同LocalSend不需要互联网连接也不需要任何第三方服务器——设备之间直接通信因此是快速、可靠的局域网互联方案。其核心工作方式所有数据均通过 HTTPS 传输TLS/SSL 证书在每台设备上即时生成运行时动态签发无需依赖任何预置 CA从源码结构看该能力由核心库 packages/core/src/crypto/cert.rs 所在的crypto模块含cert.rs、hash.rs、nonce.rs、token.rs提供支撑设备发现与数据传输遵循 LocalSend 自定义协议官方另有独立的 protocol 文档仓库本仓库中的协议实现位于 packages/core/。下载渠道与平台兼容性官方建议从应用商店或系统包管理器安装因为 LocalSend 本身没有自动更新机制。仓库内还收录了各平台的打包配置例如 app/linux/packaging/deb/make_config.yaml 与 app/linux/packaging/rpm/make_config.yaml。各平台安装渠道一览平台官方渠道WindowsMicrosoft Store、Winget、Scoop、Chocolatey、EXE 安装器、Portable ZIP后两者从 Releases 最新构建获取macOSApp Store、Homebrew、DMG 安装器Releases 最新构建LinuxFlathub、Nixpkgs、Snap、AUR、TAR / DEB / AppImageReleases 最新构建AndroidPlay Store、F-Droid、APKReleases 最新构建iOSApp StoreFire OSAmazon 商店Windows 二进制文件经过代码签名签名策略详见 CODE_SIGNING.md。注意非官方 MSIX 构建基于最新提交的构建可供尝鲜测试但其稳定性不作保证全部代码变更会在发布页同步列出。系统兼容性要求平台最低版本备注Android5.0—iOS12.0—macOS11 Big Sur更旧的 Mac 可借助 OpenCore Legacy Patcher 2.0.2见上游 issue #1005 的讨论Windows10支持 Windows 7 的最后一个版本是 v1.15.4未来可能逆向移植更新版本Linux视发行版而定GNOME 需xdg-desktop-portal与xdg-desktop-portal-gtkKDE 需xdg-desktop-portal与xdg-desktop-portal-kde网络配置防火墙端口与路由器设置大多数情况下 LocalSend 安装后即可开箱即用。但如果收发文件失败通常需要放行防火墙并检查路由器设置。防火墙规则流量方向协议端口操作入站InboundTCP、UDP53317允许出站OutboundTCP、UDP任意允许这个 53317 端口不是魔法数字——它就是核心库中广播发现的默认端口在 packages/core/src/multicast/mod.rs 中定义为常量pub const DEFAULT_PORT: u16 53317;仓库内多个测试packages/core/tests/v2_server.rs、packages/core/tests/v2_tls_pinning.rs以及 URL 构造逻辑packages/core/src/http/client/url.rs都围绕该端口验证了https://ip:53317/api/localsend/v2/...这类注册/信息接口地址印证了文档中「入站放行 53317TCPUDP」这条规则的必要性设备既要通过 UDP 广播被同网段设备发现也要在该端口上接受对端的 HTTPS 请求。路由器侧关闭 AP 隔离AP Isolation请确认路由器上已关闭接入点隔离。它默认在多数路由器上是关闭的但部分设备尤其是访客网络场景会默认开启一旦开启客户端之间的连接会被直接禁止表现为「互相看不到设备」。桌面端进阶用法便携模式Portable Modev1.13.0 引入在可执行文件所在目录创建一个名为settings.json的文件可以为空文件。程序会改为把设置保存在该文件里而不是默认位置。从源码可以确认其实现app/lib/util/shared_preferences/shared_preferences_portable.dart 中的SharedPreferencesPortable会解析可执行文件路径并在其同级目录拼接settings.json当虚拟盘如 ImDisk 内存盘导致Platform.resolvedExecutable抛异常时会回退到当前工作目录见该文件第 30–38 行的容错处理。判断逻辑位于 app/lib/provider/persistence_provider.dart在 Windows/Linux/macOS 上检测到该文件存在即启用便携设置并记录日志Using portable settings.。作为对照Windows 下默认非便携设置路径为%AppData%\LocalSend\settings.json。隐藏启动v1.15.0 更新以--hidden参数启动可让程序只在系统托盘通知区域运行不显示主窗口localsend_app.exe --hidden在 v1.14.0 及更早版本中只有当autostart参数被传入且「隐藏启动」设置开启时程序才会隐藏启动v1.15.0 起改为显式的--hidden参数。该参数在源码中是统一常量 app/lib/util/native/autostart_helper.dart 中的startHiddenFlag --hidden并且三个平台的开机自启实现都会把它写进启动入口Linux写入~/.config/autostart/应用名.desktop的Exec行Windows写入注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run的LocalSend值macOS通过setLaunchAtLoginMinimized设置为登录时最小化启动。依赖层次结构LocalSend 的代码组织遵循清晰的三层依赖项目内提供了可视化依赖图从源码结构看依据 support/docs/dependency-hierarchy.d2 的定义文件各层职责为层目录语言职责App/app/Dart/Flutter跨平台图形界面应用本仓库主工程CLI/cli/Rust命令行界面cli/src/main.rsServer/server/RustWebRTC 信令服务器server/src/controller/ws_controller.rsLocalSend Isolates/packages/localsend_isolates/Dart Rust后台线程Isolate与 Rust 绑定层Core/packages/core/Rust实现 LocalSend 协议的核心库发现、HTTP、加密、WebRTCApp 依赖 Isolates 层Isolates/CLI/Server 都依赖 Core 层Core 不反向依赖任何上层。该 SVG 图由 D2 描述文件渲染生成support/docs/README.md 给出了在仓库根目录重新生成它的命令d2 --theme 4 --dark-theme 200 --layout elk --pad 32 support/docs/dependency-hierarchy.d2 support/docs/dependency-hierarchy.svg从源码运行 LocalSend按以下步骤可以从源码构建并运行 LocalSend安装 Flutter——直接安装或经由fvm管理所需版本见 .fvmrc安装 Rust 工具链克隆 LocalSend 仓库cd app进入应用目录flutter pub get拉取依赖flutter run启动应用。注意Flutter 版本锁定当前仓库通过 .fvmrc 固定 Flutter 版本其内容为{ flutter: 3.41.9 }。因此构建问题常常源于「仓库要求的版本」与「本机已安装版本」不一致。为了让开发更可预期项目推荐使用fvm管理 Flutter安装fvm后用fvm flutter替代flutter执行命令。参与贡献项目欢迎任何形式的外部贡献。翻译翻译通过 Weblate 平台localsend/app 项目协作管理也可以直接 fork 本仓库手动添加翻译翻译文件位于 app/assets/i18n/添加或更新某个语言时编辑对应的_missing_translations_locale.json或locale.json例如 app/assets/i18n/zh-CN.json。生成产物对应 app/lib/gen/ 中的strings_locale.g.dart。注意以开头的字段不需要翻译程序不会使用它们它们只是文件或上下文信息供译者参考。修 Bug 与功能改进修 Bug发现问题后直接提交 Pull Request并清晰描述问题与修复方式功能改进先在 issue 区发起讨论说明改进动机再动手实现。完整流程见 CONTRIBUTING.md。故障排查问题平台发送方平台接收方解决方案设备互相不可见任意任意确认路由器已关闭 AP 隔离开启时设备间连接会被禁止设备互相不可见任意Windows确认网络配置文件设为「专用私人」对「公用」网络 Windows 会执行更严格的限制设备互相不可见macOS、iOS任意尝试在系统设置「隐私」中切换「本地网络」权限的开关速度过低任意任意改用 5 GHz 频段并在两台设备上同时关闭加密功能速度过低任意Android已知问题源于底层saf_stream插件的限制上游 flutter-cavalry/saf_stream issue #4各平台打包构建命令以下命令面向项目维护者需在app/目录下执行。Android普通 APKflutter build apkGoogle Play 用的 AppBundleflutter build appbundleiOSflutter build ipamacOSflutter build macosWindows普通构建flutter build windows本地 MSIX 包flutter pub run msix:create商店就绪的 MSIX 包flutter pub run msix:create --storeLinux普通构建flutter build linuxAppImageappimage-builder --recipe AppImageBuilder.ymlSnap构建说明位于上游独立的localsend/snap仓库本仓库不含该子项目。仓库support/scripts/目录中还提供了各平台的自动化打包脚本可作为上述命令的参考实现例如 support/scripts/compile_android_apk.sh、support/scripts/compile_windows_msix_signed.ps1、support/scripts/compile_mac_dmg.sh 等。小结LocalSend 的价值在于把「局域网传输」做成了零依赖外部服务的方案设备发现走 UDP 广播核心库 packages/core/src/multicast/数据通道走运行时自签证书的 HTTPSpackages/core/src/crypto/界面层由 Flutter 跨平台承载并通过 Rust 绑定packages/localsend_isolates/把重活丢到后台线程。理解上面这份「防火墙 53317 AP 隔离 便携模式 --hidden」配置清单后绝大多数「搜不到设备」的问题都能定位到路由器或防火墙层面而依赖图与.fvmrc版本锁定则为你二次开发或从源码构建提供了明确的可复现前提。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表