百积木文档
开发指南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 另造一条安装记录来模拟产品交付。

验证清单

发布后至少确认:

  1. 平台应用版本已经发布且内容不可变。
  2. Bundle resolvedLock 引用的是同一个平台应用版本。
  3. 工作区 Bundle 资源台账记录了平台应用安装。
  4. 平台应用安装记录的 installId 保持稳定,版本已经更新。
  5. accessUrl 已替换真实 installId,且不包含 token。
  6. 打开入口会跳转平台网页授权页。
  7. 回跳只携带一次性 code,并能成功兑换 token。
  8. 已声明能力可调用,未声明能力被拒绝。

资源发布不等于 Bundle 升级

只发布平台应用新版本不会改变 Bundle,也不会升级已安装产品。必须更新 Bundle Manifest、冻结新 Bundle 版本并升级目标安装。

本页内容