在国产麒麟龙芯电脑上,用Electron 10.1.3打包deb安装包的完整踩坑记录

张开发
2026/4/16 15:04:15 15 分钟阅读

分享文章

在国产麒麟龙芯电脑上,用Electron 10.1.3打包deb安装包的完整踩坑记录
麒麟龙芯平台Electron应用打包实战从踩坑到优雅避坑的全记录第一次在国产麒麟系统上尝试打包Electron应用时我对着终端里密密麻麻的报错信息发了半小时呆。作为长期在x86架构下开发的程序员这次在龙芯loongarch64平台上的打包经历彻底刷新了我对平台兼容性四个字的认知。从npm安装卡死到图标神秘消失从权限报错到打包脚本的路径陷阱每一步都藏着意想不到的惊喜。这篇文章不会给你一个理想化的完美教程而是还原真实开发场景中那些教科书不会告诉你的细节。如果你正准备在国产化平台上部署Electron应用不妨先看看这些用时间换来的经验。1. 环境准备从零搭建龙芯开发环境在x86平台上信手拈来的操作在龙芯架构下可能需要额外准备。我的开发机是搭载Loongson 3A5000的麒麟Kylin V10系统预装的Node.js版本为12.x而Electron 10.1.3需要至少Node 12.17.0。关键准备步骤升级Node.js至兼容版本建议使用nvm管理多版本配置国内镜像源加速下载默认源在龙芯平台常出现连接超时安装必要的构建工具链# 设置npm淘宝镜像龙芯架构专用 npm config set registry https://registry.npmmirror.com npm config set disturl https://npmmirror.com/mirrors/node npm config set electron_mirror https://npmmirror.com/mirrors/electron/注意龙芯架构的Electron预编译包体积较大约150MB首次安装建议保持网络稳定遇到node-gyp编译失败时需要补充安装Python和make工具sudo apt-get install python3 make g2. 打包配置的魔鬼细节官方文档中轻描淡写的配置项在龙芯平台上可能成为拦路虎。以最常见的electron-packager配置为例packager: electron-packager . Spliter --platformlinux --archloongarch64 --overwrite --icon512x512.png --out./out --asar --app-version0.0.1 --electron-zip-dir/home/hedy/关键参数解析参数常规平台龙芯平台特别注意--archx64/arm64必须明确指定loongarch64--electron-zip-dir通常可省略必须手动指定Electron二进制缓存路径--icon任意尺寸建议512x512以上小图标在Kylin桌面可能显示异常图标问题曾困扰我整整两天。明明打包时指定了图标安装后却显示默认图标。解决方案是确保图标路径在config.json中为绝对路径图标文件需具备全局读取权限在.desktop文件中显式指定Icon字段// config.json关键配置 { icon: /home/project/icons/512x512.png, categories: [Utility], desktopTemplate: ./template.desktop }3. deb打包的进阶技巧从文件夹打包到生成标准deb安装包electron-installer-debian的表现与x86平台有显著差异。以下是经过验证的完整工作流步骤一生成基础包npm run packager # 先产生linux-loongarch64文件夹 npm install electron-installer-debian --save-dev步骤二配置文件示例{ src: out/Spliter-linux-loongarch64/, dest: out/deb/, arch: loongarch64, icon: icons/512x512.png, categories: [Utility], lintianOverrides: [ changelog-file-missing-in-native-package ] }步骤三手动调试deb包当自动生成的包出现问题时可以解包手动修复fakeroot dpkg-deb -R Spliter_1.0.0_loongarch64.deb debug_folder # 修改control文件或目录结构后重新打包 fakeroot dpkg-deb -b debug_folder Spliter_1.0.0_loongarch64_fixed.deb4. 文件权限与路径的终极解决方案安装后应用无法写入数据这是龙芯平台特有的权限管理策略导致的。默认安装位置/usr/lib/下的文件确实会被设为只读。有几种解决方案方案一修改安装路径在config.json中指定更合适的安装位置{ dest: /opt/your_app, requires: [libgtk-3-0] }方案二运行时检测并修复权限在主进程代码中添加权限检查const fs require(fs); const path require(path); function checkDataDir() { const dataPath path.join(process.env.HOME, .your_app_data); if (!fs.existsSync(dataPath)) { fs.mkdirSync(dataPath, { mode: 0o755 }); } }方案三使用系统标准数据目录const { app } require(electron); const userDataPath app.getPath(userData);5. 调试与验证的艺术当你的deb包安装后行为异常时这套诊断流程可能会帮到你检查桌面文件sudo nano /usr/share/applications/your_app.desktop确认Exec和Icon路径正确查看应用日志journalctl -u your_app -f验证文件权限namei -l /usr/lib/your_app/resources/app.asar测试依赖项ldd /usr/lib/your_app/your_app | grep not found6. 性能优化特别建议龙芯处理器与x86架构的性能特性不同这些优化措施效果显著在package.json中禁用ASAR打包龙芯平台解压性能较差asar: false使用更轻量的Node模块替代方案如用fast-glob替代glob启用Electron的built-in缓存机制app.commandLine.appendSwitch(disk-cache-size, 50000000);在渲染进程中使用Web Worker处理CPU密集型任务7. 持续集成方案为龙芯平台配置自动化打包流水线需要特殊处理# .gitlab-ci.yml示例 stages: - build build_loongarch64: stage: build tags: - loongson script: - echo deb [archloongarch64] http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main | sudo tee /etc/apt/sources.list.d/kylin.list - sudo apt-get update - sudo apt-get install -y nodejs npm - npm config set registry https://registry.npmmirror.com - npm install - npm run packager - npm run deb artifacts: paths: - out/deb/*.deb在国产化平台开发确实会遇到更多挑战但每次问题的解决都意味着技术栈的又一次拓展。当我最终看到自己打包的应用在龙芯电脑上稳定运行时那些反复调试的夜晚突然都有了意义。

更多文章