拓冰建站拓冰建站
首页 / 资讯中心 / 正文

N.E.K.O.桌面版发布流程:Nuitka编译、代码签名与跨平台稳定版构建全解

N.E.K.O.桌面版发布流程Nuitka编译、代码签名与跨平台稳定版构建全解【免费下载链接】N.E.K.OA catgirl who lives with you in real time — reaching out first, sharing your media, and actually getting things done, powered by an embodied emotional engine.❤️一只会主动找你玩的 AI 猫娘。项目地址: https://gitcode.com/gh_mirrors/ne/N.E.K.ON.E.K.O. 是一只会主动找你玩的 AI 猫娘它的桌面版要能稳定运行离不开一条完整的发布流水线Nuitka 编译生成独立后端、代码签名保证分发安全、跨平台构建覆盖 Windows / macOS / Linux。本文面向新手用大白话讲清这套流程怎么运作、每个环节防住了什么坑以及维护者如何产出一个可发布的稳定版。先分清两类产物Electron 前端 与 Nuitka 后端理解 N.E.K.O. 桌面版第一步是分清它由两部分组成Electron 前端窗口、托盘、Steam 集成、更新器——来自配套的 N.E.K.O.-PC 仓库Python 后端launcher.py入口的三服务架构——由本仓库用 Nuitka 编译成projectneko_server独立可执行程序只拿到 Python 后端可执行文件是没有窗口、没有托盘、没有更新器的反之亦然。这条区分在整个发布文档里被反复强调见 docs/deployment/windows-exe.md。产物构建方式内容用途桌面版Electron 前端 Nuitka 后端打包窗口、托盘、更新器、完整服务正式分发Steam / Releases纯后端Nuitka standalone 单独编译仅projectneko_server集成测试 / 自托管Nightly 测试版定时任务自动构建未签名、会被覆盖尝鲜测试非稳定渠道Nuitka 编译把 Python 项目冻成独立可执行程序为什么选 Nuitka 而不是直接跑源码Nuitka 会把 Python 代码直接编译成本机机器码连同依赖库、数据文件一起打成一个目录standalone 模式用户无需安装 Python 环境即可运行。对 N.E.K.O. 这种带音频模型、Live2D 模型、大量静态资源的项目打包清单就是编译阶段的核心工作。内置插件的三级暂存策略N.E.K.O. 自带 90 多个内置插件每个插件的数据文件plugin.toml、配置、前端页面都不能漏。编译时遵循的固定顺序记录在 docs/contributing/nuitka-packaging.md运行 scripts/prepare_nuitka_plugins.py 的prepare命令按各插件的[tool.neko.build]规则生成精确的排除清单编译 Nuitka 启动器产出dist目录再用install命令把插件装进构建好的发行目录最后跑一次完整性校验这种先编译、再装配插件的方式避免了把整个插件目录无脑塞进包里的粗放做法——文档明确警告不要恢复--include-data-dirplugin/plugins这类一刀切写法因为它会绕过暂存契约。离线模型资产编译前必须先备好桌面版内置了向量记忆、语音端点检测、说话人识别等本地模型onnx 权重文件。这些权重不入库、运行时也不允许联网下载因此必须在 Nuitka 编译前用 scripts/prepare_embedding_model.py 等脚本下载到位随后打进发行包。用静态检查代替盲目启动打包后的启动器会拉起多个子服务直接启动容易留下看起来能跑、实际缺文件的半成品。项目因此把静态完整性检查放在签名之前uv run python scripts/check_nuitka_dist.py dist/Xiao8 --plugin-stage build/nuitka-pluginsscripts/check_nuitka_dist.py 维护了一份关键资产清单逐项断言发行包里必须存在的东西例如主入口projectneko_server.exe与config/、static/、templates/三大目录内置 Live2D 模型的.moc3与 4096 分辨率纹理只查model3.json挡不住半截解包向量记忆模型的model_quantized.onnx具体权重文件目录非空还不够下载中断会留下空壳目录每个内置插件目录下必须有plugin.toml否则运行时插件扫描结果为 0它专门拦截三类历史事故Nuitka 把数据目录里的.py当代码过滤掉、文件锁导致dist目录残留嵌套形成能启动但缺 config/static的半坏包、插件丢失plugin.toml。检查不通过就退出码非零签名与 Electron 打包步骤不会执行。代码签名让稳定版可被用户与更新器信任两级签名体系稳定版发布采用原生构建主机策略不在云端打 tag 触发构建而是在 Windows / macOS / Linux 各自的构建机上原生编译、原生签名。签名分两级可执行文件签名Windows 用代码签名证书、macOS 用开发者证书由 scripts/build-desktop-release.ps1 调用本地可用的签名身份完成Portable 更新清单签名用 Ed25519 密钥对更新 manifest 签名产出配套的.sig文件防止更新内容被篡改发布脚本的关键参数示例macOS arm64 架构./scripts/build-desktop-release.ps1 -Version 0.8.4 -Platform macos -Architecture arm64 -ManifestSigningKeyPath /secure/portable-manifest-ed25519.pem -PreviousReleaseTag v0.8.3脚本还复用姊妹仓库的 manifest 校验器portable-update.js做自校验。需要强调签名脚本只负责签名与暂存绝不创建 tag、上传 Release 或调用更新服务发布动作由人工把关。增量更新更小的包同样的可信-PreviousReleaseTag参数会让脚本拉取上一版清单当增量包比完整包更小时自动产出差分更新包——用户升级 0.8.3 → 0.8.4 时下载的体积显著变小而信任链manifest .sig保持不变。跨平台稳定版构建每个平台在原生主机上完成全平台产物矩阵一个稳定版发布必须凑齐以下全部产物缺一项都不算合格发布平台完整包清单 .sigWindowsx64 Portable✅macOSx64 / arm64 各一份✅Linuxx64 tarball x64 AppImage✅每个平台都在对应架构的原生主机上执行 Nuitka 编译macOS 需按 arm64 / x64 各跑一遍 PowerShell 并显式指定-Architecture再用 scripts/check_dist_arch.py 核对产物架构与目标一致杜绝在 x64 机器上打出 arm64 空壳包之类的错位。发布资产上传前的最后防线所有原生构建收齐到release-assets/version/后运行 scripts/publish-desktop-release-assets.ps1 完成上传。它在上传前做了四道校验暂存文件名与已发布 Release 逐一对应每个 Portable manifest 都有匹配的.sig文件已存在的 OSS 对象不可覆盖——重跑仅当 SHA-256 与暂存资产完全一致才放行注册镜像前把每个 CDN 资产下载回来与暂存文件比对 SHA-256OSS 凭证只保存在本地 ossutil 配置中从不进入仓库文件这也是签名与发布流程安全设计的一部分。新手速查发布前检查清单Nuitka 编译产物已通过check_nuitka_dist.py全部断言含 Live2D 纹理、onnx 权重、插件plugin.toml六个平台产物Win x64 / mac x64arm64 / Linux x64AppImage齐备每个 Portable manifest 都有对应.sig签名文件架构校验check_dist_arch.py通过发布前已在每台目标主机上实测签名身份可用记住Nightly 测试包未签名且随时被覆盖稳定分发只走正式发布渠道延伸阅读文档说明docs/contributing/nuitka-packaging.mdNuitka 打包契约插件暂存、数据包含规则、安全排障docs/deployment/manual-desktop-release.md手动稳定版发布完整步骤签名、上传、校验docs/deployment/windows-exe.mdWindows 产物构成与 Nightly 说明scripts/check_nuitka_dist.py发行包完整性断言实现specs/launcher.specPyInstaller 备选 spec可对照理解打包数据清单的写法这条编译 → 静态校验 → 原生签名 → 跨平台收齐 → 哈希对账上传的流水线让 N.E.K.O. 桌面版在没有云端一键构建的情况下依然能产出每个平台都签好名、每个文件都可验证的稳定发行版。【免费下载链接】N.E.K.OA catgirl who lives with you in real time — reaching out first, sharing your media, and actually getting things done, powered by an embodied emotional engine.❤️一只会主动找你玩的 AI 猫娘。项目地址: https://gitcode.com/gh_mirrors/ne/N.E.K.O创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门