开发指南Bundle 开发平台应用开发
发布并纳入 Bundle
发布平台应用不可变版本,并由 Bundle 组合安装到工作区。
平台应用定义、不可变版本和 Bundle 版本是不同对象。平台应用先发布自己的不可变版本,再由 Bundle 锁定并组合交付。
发布链路
Platform Application
-> Platform Application Version
-> Bundle Manifest
-> Frozen Bundle Version
-> Workspace Bundle Install
-> User Authorization使用 CLI
先确认本机 CLI 的版本和当前命令:
baijimu --version
baijimu platform-app --help
baijimu platform-app version publish --help
baijimu bundle create --help
baijimu bundle version publish --help创建应用时明确稳定的 platformAppId、名称、入口类型和入口模板:
baijimu platform-app create \
--platform-app-id <platformAppId> \
--name <name> \
--entry-type TRUSTED_EXTERNAL_APP \
--entry-url-template 'https://app.example.com/?installId={installId}'发布版本:
baijimu platform-app version publish <platformAppId> \
--version <semanticVersion> \
--entry-type TRUSTED_EXTERNAL_APP \
--entry-url-template 'https://app.example.com/?installId={installId}'复杂的能力、配置和清单 JSON 应按当前命令帮助使用 JSON 文件或结构化 --data 传入,不要在自动化脚本中拼接不受控的 shell 字符串。
版本发布成功后,在 Bundle Manifest 的 platformApplications 中引用稳定 platformAppId 和精确版本。Bundle 冻结时会解析并锁定真实平台应用版本:
{
"platformApplications": [
{
"platformAppId": "example-platform-app",
"version": "1.2.0"
}
]
}发布 Bundle 版本后,通过 Bundle 安装或升级操作物化平台应用。不要绕过 Bundle 另造一条安装记录来模拟产品交付。
验证清单
发布后至少确认:
- 平台应用版本已经发布且内容不可变。
- Bundle
resolvedLock引用的是同一个平台应用版本。 - 工作区 Bundle 资源台账记录了平台应用安装。
- 平台应用安装记录的
installId保持稳定,版本已经更新。 accessUrl已替换真实installId,且不包含 token。- 打开入口会跳转平台网页授权页。
- 回跳只携带一次性
code,并能成功兑换 token。 - 已声明能力可调用,未声明能力被拒绝。
资源发布不等于 Bundle 升级
只发布平台应用新版本不会改变 Bundle,也不会升级已安装产品。必须更新 Bundle Manifest、冻结新 Bundle 版本并升级目标安装。