FEATURED · 精选文章

LocalSend AppImage 制作完全指南:跨发行版兼容这样落地

发布时间 / 2026/8/29 9:40:07
来源 / 创域科博编辑部
栏目 / 资讯中心
LocalSend AppImage 制作完全指南:跨发行版兼容这样落地 LocalSend AppImage 制作完全指南跨发行版兼容这样落地【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsendLocalSend 是一个走局域网的文件传输工具不经过任何云端。但它在 Linux 上的分发一直很头疼同一份程序在 Ubuntu 上正常换到 Fedora 托盘图标消失在老系统上又缺库。本文围绕 LocalSend AppImage 的制作过程拆解它如何通过“锁定基础源 精准打包依赖”实现跨发行版兼容你可以直接照着复现也可以把思路搬到自己项目里。一句话说清它是什么AppImage 就是可执行文件 它跑起来所需的那几套库被压进一个文件。对 LocalSend 而言意味着把一个LocalSend-x.x.x-x86_64.AppImage丢给同事chmod x之后双击就能用不用先问对方装的是什么发行版、缺不缺依赖。动手之前先拍板三个决策点很多人一上来就抄配置但真正影响成败的是下面三个选择。决策一到底要不要做 AppImage选 AppImage 的场景不选更合适的场景用户横跨多个发行版你不想维护 N 套包目标用户基本都在同一发行版上面向不懂包管理的普通用户要求下载即运行用户愿意装 Flatpak / 用官方源更新体验更好需要在干净机器上验证依赖是否齐全需要深度系统集成开机自启、桌面菜单深度定制LocalSend 的官方渠道里Linux 其实同时提供了 DEB、TAR、Flatpak、Snap、AUR 和 AppImage。它把 AppImage 当成兜底通用档——仓库渠道管更新AppImage 管覆盖长尾系统两条腿走路。决策二基础源锁定哪个发行版这是整个配方里最关键的取舍。官方配方support/build/appimage/AppImageBuilder_x86_64.yml把 apt 源全部锁在 Ubuntu jammy22.04 LTS并且带上了 jammy-security 安全源。选新版源如 noble库新、工具链舒服但基准抬高老机器可能载不动等于主动缩小兼容面选过老的源新工具链的依赖装不上构建本身就会卡住选 jammy LTS够老以兼容大多数机器够新以满足 Flutter 构建期依赖而且 LTS 的安全源维护周期长配方几年不用动。一句话基础源不是选最好的是选维护窗口最长、兼容面最大的。决策三依赖怎么取舍配方的 include 列表只有两个包libayatana-appindicator3-1—— 系统托盘库。LocalSend 是常驻托盘应用缺了它应用还能跑但托盘入口直接消失等于残废librsvg2-common—— SVG 图标渲染界面图标显示需要它。而 exclude 列表则反向操作砍掉adwaita-icon-theme再砍usr/share/man和各包的 README / changelog / NEWS / TODO 文档。取舍哲学就是只带必然缺失的不带锦上添花的。判断方法很简单ldd跑一遍产物把系统大概率没有的库加进 include把纯文档类内容加进 exclude。LocalSend AppImage 制作四步出产物官方构建脚本在support/scripts/compile_linux_appimage.sh配方分 x86_64 和 arm_64 两份support/build/appimage/AppImageBuilder_arm_64.yml两份内容几乎一样只差arch字段和依赖包的架构后缀。第 1 步准备构建机# Flutter 构建依赖 托盘库开发包 AppImage 挂载所需的 fuse sudo apt install curl clang cmake libgtk-3-dev ninja-build libayatana-appindicator3-dev libfuse2 # 另需从发布页获取 appimage-builder v1.1.0 并赋予执行权限第 2 步克隆仓库并编译出 Linux 可执行文件git clone https://gitcode.com/GitHub_Trending/lo/localsend cd localsend git submodule update --init # 拉取仓库内自带的 Flutter SDK ./submodules/flutter/bin/flutter pub get ./submodules/flutter/bin/flutter build linux # 产物在 build/linux/x64/release/bundle/第 3 步组装 AppDir跑配方mkdir AppDir cp -r build/linux/x64/release/bundle/* AppDir # 把编译产物放进 AppDir cp support/build/appimage/AppImageBuilder_x86_64.yml AppImageBuilder.yml appimage-builder # 自动读取同目录配方生成 AppImage第 4 步验证chmod x LocalSend-*-x86_64.AppImage ./LocalSend-*-x86_64.AppImage # 托盘里出现 LocalSend 即成功配方里每个配置块各管一件事app_info产物的身份卡。exec: localsend_app指定入口可执行文件exec_args: $保证命令行参数原样透传给应用version写进元数据apt定义依赖基线。sources 是锁定 jammy 的那一长串include/exclude 就是决策三里说的取舍runtime.env把/usr/local/share/等路径前置进XDG_DATA_DIRS让应用在自己的沙箱里也能找到图标和桌面元数据files.exclude裁剪文档类文件控制最终体积AppImage声明目标架构update-information: guess是更新探测方式。有个容易漏的细节配方里的version目前是写死的当前为 1.18.2你切新版本自己出包时记得手动同步这个字段否则产物元数据是错的。踩坑清单遇到 X这样做报mksquashfs不存在→ 配方顶部那行which mksquashfs || apt install squashfs-tools就是干这个的本地构建前自己也装一份chmod x后执行报cannot execute或找不到文件→ 构建机/目标机没装libfuse2AppImage 挂载靠它托盘图标不显示→ 检查 include 里有没有libayatana-appindicator3-1架构后缀amd64/arm64别拼错想在 x86 机器上顺手出 arm_64 包→ 两份配方不能互替需要 arm64 构建机或 CI 环境想在 CI 里跑配方中的 test 容器验证→ 官方配方把 test 块整段注释掉了原因是容器化测试环境在 CI 里不稳定跨发行版验证靠真机更靠谱最小化系统上文件选择框打不开→ 文件对话框依赖宿主系统的 xdg-desktop-portal它不在 include 清单里属于宿主应该有的那类Gnome 下需xdg-desktop-portal-gtkKDE 下需xdg-desktop-portal-kde。效果与验证实际跑起来是什么状态✅体积单个文件数十 MB包含 Flutter 运行时、GTK 相关依赖和那两三个显式声明的库换来的是零安装、零 root✅启动体验双击或./执行秒进托盘无需任何系统级配置卸载就是删文件✅架构覆盖x86_64 与 arm_64 各有一份产物树莓派和 ARM 服务器也能用兼容面基础源锁 jammy 意味着发行版越老越吃香——Debian 11、Ubuntu 20.04、Fedora 这类主流系统都是安全区越新的系统自带更新版库通常也向下兼容。真正的验证方式不是猜而是丢两三台不同发行版的真机或虚拟机跑一遍发现设备 → 互传文件的完整流程。按你的身份给两条建议如果你是终端用户直接拿现成的 AppImage 即可。老系统上执行失败时先补libfuse2另外 AppImage 本身没有自动更新建议定期从官方发布页拉新版或者干脆走 Flatpak / 发行版仓库让系统替你管更新。如果你是集成开发者拿support/build/appimage/下这两份 yml 当模板。给自己的 Flutter 应用做 AppImage 时照本流程走一遍唯一要改的就是app_info、include 列表先ldd找出缺失库再逐个加和 version 字段——把依赖基线和最小包含这两个思路保住坑会少一大半。回到开头那个场景同事的 Ubuntu、你的 Fedora、还有一台不知道装了啥的老 Linux现在它们只需要同一个文件。这就是 AppImage 给 LocalSend 带来的东西——不是更炫的功能而是少一个解释多一台能跑的机器。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻