# 发布上线

在考虑要上线发布到正式环境时,我们一般会关注版本覆盖稳定性问题,对于这两个问题,我们提供了完备的解决方案。

# 版本覆盖

由于 Skyline 是在微信较高版本支持,那么是否低版本就完全运行不了小程序了?答案是否定的。为了保证线上小程序能可靠运行,可任取以下其中一种策略

  1. 提高「基础库最低可用版本」,设置为 Skyline 所支持的版本,该策略意味着放弃低版本用户。

  2. 兼容好 WebView,我们会在不支持 Skyline 的版本自动降级为 WebView 渲染

由于 Skyline 所支持的 CSS 子集是遵循 Web 标准的,因此在样式方面切到 WebView 渲染也能正确渲染,此外对于 Skyline 新增的特性,与小程序其它新增的接口类似,低版本需做好兼容,但我们在部分特性针对 WebView 做了兼容处理,具体参考以下表格:

特性 WebView 兼容性 低版本兼容性
worklet 动画 已兼容 需自行做好兼容
手势系统 相当于空节点 需自行做好兼容
自定义路由 无需兼容(无动效) 无需兼容(无动效)
共享元素 无需兼容(无动效) 无需兼容(无动效)
scroll-view 按需渲染 无需兼容(无优化) 无需兼容(无优化)
scroll-view 新增属性和事件 不兼容 需自行做好兼容
grid-view 已兼容 需自行做好兼容
sticky-section/header 不兼容(可手动加上 position: sticky 兼容) 不兼容(可手动加上 position: sticky 兼容)

# 稳定性

一般而言,代码变更后需要上线发布时,为了保证线上的稳定性,我们都会选择灰度发布,对于新增 Skyline 相关代码的情况也不例外,因此我们提供了完备的灰度方案。

  1. 通过 We 分析 AB 实验进行灰度。

Skyline 默认是需要经过 We 分析的 AB 实验的,也就是小程序新版本发布后,默认还是以 WebView 运行,需要在 We 分析的 AB 实验的「小程序基础库实验」逐步放量。需要特别留意的是,当 AB 实验的流量分配到 100% 时,并不代表是全量,而是 Skyline 和 WebView 各 50%,若要全量的话,需要先结束实验再选择全量某一个实验组。

  1. 通过小程序版本管理中的发布灰度。

若小程序已经过充分测试,无需再进行 AB 实验的话,我们也提供了以下配置项,可在 app.json 或 page.json 配置上,使 Skyline 不经 AB 实验而默认打开。一般来说,sdkVersioniosVersion+androidVersion 选其一填写即可。

"rendererOptions": {
  "skyline": {
    "disableABTest": true,
    "sdkVersionBegin": "3.0.1", // 基础库最低版本
    "sdkVersionEnd": "15.255.255", // 填最大值,否则之后的新版本会不生效
  }
}
"rendererOptions": {
  "skyline": {
    "disableABTest": true,
    "iosVersionBegin": "x.y.z", // iOS 微信最低版本
    "iosVersionEnd": "15.255.255", // 填最大值,否则之后的新版本会不生效
    "androidVersionBegin": "x.y.z", // 安卓微信最低版本
    "androidVersionEnd": "15.255.255" // 填最大值,否则之后的新版本会不生效
  }
}