套件封装方法与开发步骤
先决定目标是第三方原生格式1.0,还是经过审定的官方平台模块1.1。不能把任意JS应用、容器镜像或Shell脚本改名为官方套件。生产发布必须核对实际设备架构、系统ABI、依赖与权限;示例仅演示格式,不是可安装产品服务。
1. 准备目录与文件
原生1.0的根目录直接放manifest.json,不加套件名称外层目录;只允许bin、conf、assets、lib、scripts这些规定目录。bin/arm64和bin/x86_64放真正匹配架构的程序,assets放图标与截图,conf放默认配置,scripts只放规范列出的可选生命周期脚本。不要把README、Git目录、缓存、密钥或用户数据一起塞进归档;交付文档另随发布材料提供。
package-root/ manifest.json bin/arm64/hello bin/x86_64/hello assets/icon.svg conf/default.conf
2. 校验元数据与目录
在NAS源码仓库构建Rust工具,或使用开发团队提供的同版本工具。命令中的spkg表示编译后的工具路径。
cargo build --release --locked --manifest-path tools/spkg/Cargo.toml spkg manifest /work/package-root/manifest.json spkg build /work/package-root /work/output/hello-dev.spkg spkg check /work/output/hello-dev.spkg --allow-unsigned
输出必须在源目录外,且不能覆盖已有文件。未签名检查只用于开发预检,trusted=false,不能据此宣称生产可安装。工具检查格式、引用、路径与权限,不执行包内脚本,也不验证业务功能和ELF ABI。
3. 签名与正式校验
使用受保护、仓库外的32字节Ed25519种子(64位十六进制文本),文件权限0600。请使用自身开发者身份的密钥,不复制官方签名私钥。
spkg public-key /private/developer-seed.hex > /private/developer-public.hex spkg build /work/package-root /work/output/hello-signed.spkg --sign-key /private/developer-seed.hex spkg check /work/output/hello-signed.spkg --trust-key /private/developer-public.hex
包外的受信任公钥才构成校验依据,author字段和包内公钥不会自动取得官方身份。记录整个.spkg的SHA-256、工具版本及验证范围,不能只贴一张“命令成功”截图。