Bundle 定义与资源声明
理解 Bundle Definition、项目清单和不可变版本,用 Module 与 Platform Application 完成组合交付。
Bundle 定义产品的稳定身份和源码项目;baijimu.bundle.json 声明产品要交付哪些资源;Bundle Version 从精确 Git 提交生成不可变交付内容。
开发模块或平台应用时,应从本页进入对应的清单与版本流程。
定义保存在哪里
| 对象 | 保存位置 | 修改方式 |
|---|---|---|
| Bundle Definition | 平台保存的 Bundle 身份、名称和唯一绑定项目 | bundle create、bundle update;绑定规则见版本创建流程 |
| Bundle 作者清单 | 绑定的 BUNDLE 项目根目录 baijimu.bundle.json | 在项目 Git 工作树编辑、评审、提交并推送 |
| Bundle Version | 平台从指定 Git 提交创建的不可变版本内容 | 更新源码后创建后继版本 |
创建 Module 或 Platform Application、创建其不可变版本,都不会自动修改 Bundle 作者清单。归属于同一个 Bundle,只说明对象的所有权;
纳入 definition.resources 才表示这个 Bundle 版本选择交付该资源及其精确版本。
声明模块和平台应用
作者协议 7.0.0 使用统一的 definition.resources。每项只有登记的资源类型、Owner 返回的稳定资源身份和精确语义版本:
{
"schemaVersion": "7.0.0",
"definition": {
"resources": [
{
"resourceType": "MODULE",
"resourceKey": "example-module-owner-id",
"semanticVersion": "1.0.0"
},
{
"resourceType": "PLATFORM_APPLICATION",
"resourceKey": "example-platform-app",
"semanticVersion": "1.0.0"
}
],
"lifecyclePlugins": []
}
}示例身份不是可直接使用的目标。通过 bundle manifest catalog 查询真实对象,再用 bundle manifest include 写入所选精确版本。
Module 使用 Owner 返回的 moduleId,Platform Application 使用 Owner 返回的 platformAppId;在作者清单中两者都保存为字符串 resourceKey。
显示名、项目 ID、版本行 ID、Runtime businessId 都不能替代资源身份。平台应用类型是 PLATFORM_APPLICATION,没有 PLATFORM_APP 别名。
resources: [] 是合法的空清单,表示没有纳入资源;平台不会把它自动填成当前 Bundle 下的所有模块和应用。
完整字段、资源引用及插件规则见项目清单与对象选择,机器校验结构见
作者清单 Schema 7.0.0。
从模块到平台应用的顺序
平台应用版本创建会从归属 Bundle 的源码快照解析领域引用。因此,应用调用本 Bundle 的模块时,模块声明必须先写入 Bundle 项目并提交推送, 再创建应用版本。最终 Bundle 版本创建前再把已成功创建的应用版本纳入同一清单:
- 创建模块不可变版本。
- 用
bundle manifest include <bundle> module纳入该模块精确版本,在线预检,检查清单并提交推送。 - 创建平台应用不可变版本,回查版本创建成功。
- 用
bundle manifest include <bundle> platform-application纳入该应用精确版本。 - 在线预检最终清单,核对预期的资源身份和版本,提交推送;从这个完整 Git 提交创建 Bundle Version。
- 回查 Bundle 版本内容,再安装或升级并验证真实入口和模块调用;公开分发时单独提交市场审核。
在第一次创建应用版本前,不要先把尚未创建成功的应用版本写进清单;清单中的精确版本必须能由资源 Owner 解析。 平台应用版本创建失败时,应保留原始错误并核对它引用的模块、Bundle 清单和源码提交,不能直接改资源类型或假定缺少平台登记。
两种校验分别证明什么
baijimu bundle manifest validate @baijimu.bundle.json
baijimu bundle manifest preflight <bundle> --workspace-id <workspaceId> --file baijimu.bundle.json
git diff -- baijimu.bundle.jsonvalidate 返回 STRUCTURE_ONLY,只证明作者文件结构合法。preflight 返回 OWNER_VERSIONS_AND_REFERENCES,
证明已经选择的对象、不可变版本、归属和插件资源授权通过在线校验。两者都不能知道开发者本来打算交付但遗漏的资源;必须对照任务目标核对清单和 Git 差异。
预检后修改文件要重新预检;实际创建 Bundle Version 时服务端还会从指定提交重新校验。
完整提交、版本创建、市场和安装流程见版本创建、市场与交付。