尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

LocalSend AppImage 打包实战:Linux 便携版应用完整制作流程

LocalSend AppImage 打包实战:Linux 便携版应用完整制作流程 LocalSend AppImage 打包实战Linux 便携版应用完整制作流程【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend想在任何 Linux 机器上免安装分发 LocalSendAppImage 打包是绕不开的一条路。这篇文章按动手顺序带你从装依赖走到产出可校验的单文件中间每个环节给出怎么算成功的判断标准。它到底解决了什么问题场景很常见你在 Ubuntu 24.04 上把 LocalSend 打包成 .deb同事的机器是 Fedora装不上就算装上系统里共享库版本对不上运行就报缺.so。AppImage 的思路是把可执行文件、它依赖的共享库、桌面元数据全部压进一个文件用户双击时靠 FUSE 临时挂载成目录再运行目标机器不需要预先装任何应用依赖也不动系统库。对比维度AppImagedeb/rpmFlatpak依赖来源打进文件内部依赖系统源依赖沙盒 runtime分发方式一个文件直接拷走跟发行版仓库绑定需要远程仓库或商店安装动作加执行权限即可包管理器安装需 flatpak 环境对目标系统的侵入不装任何东西写入系统目录装 runtime 到用户目录动手前 5 分钟先把 6 项依赖备好依赖/工具为什么要装curl clang cmake libgtk-3-dev ninja-buildFlutter 的 Linux 编译链全靠它们缺一个就在编译期报错libayatana-appindicator3-devLocalSend 的系统托盘走这个库不装编译期插件报错libfuse2AppImage 靠 FUSE 临时挂载本机没有它连双击运行都做不到squashfs-toolsmksquashfsAppDir 最后要压成 squashfs配方第一行脚本就是兜底装它appimage-builder 1.1.0打包主力工具项目配方按 1.x 语法写版本差太多解析会失败x86_64 或 arm64 构建机两套配方按架构分开构建机架构决定能出哪份产物安装命令只有两行第一条给 Flutter 编译链第二条给托盘、FUSE 和压缩工具# Flutter Linux 构建链 sudo apt install curl clang cmake libgtk-3-dev ninja-build # 托盘库 FUSE 运行时 squashfs 压缩工具 sudo apt install libayatana-appindicator3-dev libfuse2 squashfs-toolsappimage-builder 去 AppImageCrafters 的 release 页下 1.1.0 的 AppImage 版改名放进/usr/local/bin/appimage-builder并加执行权限即可。从 0 到 14 步跑通 AppImage 打包整体链路不长先用一张图记住各步的产物关系第 1 步拉代码并初始化子模块git clone https://gitcode.com/GitHub_Trending/lo/localsend cd localsend git submodule update --init怎么确认成功submodules/flutter目录下有实际文件——项目的 Flutter SDK 就放在这个子模块里后面构建全靠它。第 2 步构建 Flutter Linux 发布包flutter clean flutter pub get flutter pub run build_runner build -d # 生成 i18n 等代码跳过会缺符号 flutter build linux怎么确认成功build/linux/x64/release/bundle/里出现localsend_app可执行文件和.desktop文件。第 3 步组装 AppDir 并运行打包器把发布产物拷进 AppDir再让打包器按配方工作mkdir AppDir cp -r build/linux/x64/release/bundle/* AppDir/ cp support/build/appimage/AppImageBuilder_x86_64.yml AppImageBuilder.yml appimage-builder # 默认读取当前目录的 AppImageBuilder.yml sudo chmod x LocalSend-*-x86_64.AppImage怎么确认成功当前目录出现带执行权限的LocalSend-1.18.2-x86_64.AppImage。第 4 步目标机上冒烟./LocalSend-1.18.2-x86_64.AppImage怎么确认成功窗口弹出、系统托盘出现图标、能完成一次文件收发。arm64 机器则把配方换成support/build/appimage/AppImageBuilder_arm_64.yml两份文件唯一差异是apt.arch和AppImage.arch字段。项目自带脚本support/scripts/compile_linux_appimage.sh就是上面第 1 到 3 步的合并版赶时间可以直接跑它。读懂配方里的 4 个关键配置配方文件是support/build/appimage/AppImageBuilder_x86_64.yml一百来行里真正决定成败的是这 4 项配置项作用改错会怎样app_info.id反向域名 ID桌面环境靠它把进程映射到 .desktop 文件和代码里注册的 application-id 对不上任务栏/窗口管理器就认不出是 LocalSendexec/exec_args入口可执行文件 参数透传$exec 指错文件AppRun 秒退漏掉$--hidden这类命令行参数就传不进去apt.include要随包携带的运行时库白名单如libayatana-appindicator3-1少写一个库用户机器上ldd直接 not found应用起不来runtime.env.XDG_DATA_DIRS运行期补数据搜索路径让主题、图标找得到配错后应用能跑但图标、桌面集成悄悄失效最难排查另外files.exclude里排掉了 man 页和 changelog 之类的文档纯粹为了压体积删不删都能跑。踩坑速查5 个常见现象怎么定位打包第一步报 mksquashfs not found定位which mksquashfs解决sudo apt install squashfs-tools双击后报某个 .so 打不开定位ldd AppDir/usr/bin/localsend_app | grep not found解决把缺失库对应的 deb 名加进apt.include重跑appimage-builder执行时报 FUSE 打不开、挂载失败定位dpkg -s libfuse2看本机是否有 FUSE 运行时 解决sudo apt install libfuse2或在无 FUSE 环境用./LocalSend-*-AppImage --appimage-extract解压后直接跑squashfs-root/AppRun验证双击毫无反应定位ls -l LocalSend-*-x86_64.AppImage看权限位 解决chmod x LocalSend-*-x86_64.AppImage很多运行不了其实是没加执行权限应用能跑但托盘图标缺失定位ldd AppDir/usr/bin/localsend_app | grep ayatana确认库是否进包 解决核对apt.include里有libayatana-appindicator3-1仍无图标则先确认桌面环境本身支持 appindicator上生产前必做把support/scripts/compile_linux_appimage.sh接进发布流水线打 tag 自动出产物避免手工敲命令漏步骤。产物命名固定为LocalSend-版本-x86_64.AppImage/LocalSend-版本-arm_64.AppImage版本号与pubspec.yaml及配方里的version字段当前 1.18.2三处保持一致。发布前签名gpg --detach-sign 产物分发渠道附上.sig接收方用gpg --verify校验防止文件被中间环节篡改。挑一台干净机器无 snapd/flatpak、库版本尽量旧做终测能启动、能收发明细、托盘正常才算可发布。一页纸总结步骤动作通过标准1apt 装 GTK/clang/FUSE 等依赖各工具which均可见2git submodule update --initsubmodules/flutter 有内容3flutter build linuxbundle/ 出现 localsend_app4cp -r bundle/* AppDir/AppDir 与 bundle 内容一致5appimage-builder产出 .AppImage 文件6干净机器冒烟窗口、托盘、收发文件均正常7gpg --detach-sign生成可校验的 .sig配方就两个 yml、脚本就一个 shLocalSend 的 AppImage 方案整体薄得很换个 Flutter 项目改改app_info和apt.include就能照搬。产物落到手里是一个可执行文件拷走、加权限、双击这就是便携版的全部承诺。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表