目录

套件封装方法与开发步骤

先决定目标是第三方原生格式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、工具版本及验证范围,不能只贴一张“命令成功”截图。

4. 交付与联调

提交Manifest、包的用途和来源、实际架构/依赖、许可证、变更记录、权限说明、数据保留与失败恢复方法,以及隔离测试结果。先阅读交付清单和发布边界。当前没有公开第三方生产上传安装入口,不能将开发包直接投入生产;官方模块须走精确宿主版本构建与审核签名发行流程。