# 兼容性表格导读

uni-app x 在不同平台(Android、iOS、鸿蒙、微信小程序、web)、在不同os版本、在不同模式(vdom或蒸汽)、在不同运行环境(uvue页面或uts原生插件环境),存在某些功能的差异。 由此产生兼容性表格。

为了简洁,兼容性表格有一些约定。本文档用于说明兼容性表格的约定,以帮助开发者更清晰的看懂兼容性表格。

# 表体介绍

兼容性表格中,除了表头外,表体内容有如下值域:

  • :表示支持。尤其指从开始就支持,而不是从特定版本后才支持
  • x:表示不支持
  • 版本号:从该 HBuilderX 版本号起支持
  • OS系统版本号:从该OS系统版本起支持
  • 空白:未标注。可能支持也可能不支持,或不需要单独说明

版本号末尾的 + 在表格中会被省略。例如 4.25+ 显示为 4.25

# 表头介绍

兼容性表格的表头,可选值包括四种:平台、OS系统版本、VDOM或Vapor、分平台的uts插件

# 平台

  • Web
  • 微信小程序
  • Android
  • iOS
  • HarmonyOS

# 系统版本

个别兼容性表格会出现系统版本,即代表只有在指定的系统版本之上才能使用。

举例: api uni.requestVirtualPayment的兼容性表格如下:

Web 微信小程序 Android iOS 系统版本 iOS
x 4.41 x 15.0 4.25

它代表从HBuilderX 4.25+支持该API,且该API要求iOS的系统版本在15.0+。

系统版本列只在需要特别说明时显示。

默认系统版本,也就是蒸汽模式支持的最低版本为:

平台 默认系统版本
Android 6.0
iOS 14.0
HarmonyOS 6.0

如果整列均为空或等于默认系统版本,则隐藏该列。低于默认系统版本的值不单独展示。

# VDOM和Vapor

在组件、与UI相关的API、css、全局文件或vue中,涉及虚拟dom模式(vdom)和蒸汽模式(vapor)的区别。

比如css lines,在蒸汽模式下废弃,所以兼容性表格会变成:

Web Android(VDOM) Android(Vapor) iOS(VDOM) iOS(Vapor) HarmonyOS(VDOM) HarmonyOS(Vapor)
x 3.9 x 4.11 x 4.61 x

如果一个平台的兼容性中vdom和蒸汽是没有区别的,那么就不会分别显示 vdom和vapor,只显示平台名称。

比如view的兼容性,它是每个平台从最开始就支持的。且蒸汽和vdom都如此。虽然Android蒸汽是5.21才有的,但此处就不会再单独分每个平台的vdom和蒸汽了。

Web 微信小程序 Android iOS HarmonyOS
4.0 4.41 3.9 4.11 4.61

如果一个平台的蒸汽模式的第一个版本就支持,一般不会单独显示,而是会合并到一个平台中。以下 Vapor 的默认版本,即第一个支持的版本,不会单独显示:

平台 默认 Vapor 版本
Android 5.21
iOS 5.11
HarmonyOS 5.0、5.01

只有表格中的每一行都满足合并条件时,才会隐藏 Vapor 列。

当 VDOM 与 Vapor 均为 x 时,也会合并显示,只保留平台列。

# uts插件

App 平台的页面运行环境,和uts插件的utssdk中的运行环境有差异。

比如蒸汽模式下,页面运行环境是在js引擎中,而utssdk的运行环境是在原生环境中。

而vdom的Android,页面和uts插件都是在原生环境中。这引发一些差异。

比如,UNIElement上有个方法,getAndroidView(),兼容性表格如下:

Web 微信小程序 Android(VDOM) Android(Vapor) Android UTS 插件 iOS HarmonyOS
x x 4.25 x 4.25 x x

这代表这个方法只有在Android的原生环境里才能运行,其他平台不能运行。 Android平台的vdom模式可以在HBuilderX 4.25+版本运行,页面和uts插件均可。而蒸汽模式下,页面里不再支持,只能在UTS插件中运行。

# 其他

# 空列处理

如果某一列的所有单元格均为空,则该列会被删除。

VDOM、Vapor 和 UTS 插件列都会应用空列过滤,避免生成没有有效信息的表格。

# 支持状态

兼容性表格的总体支持状态在删除空列之前计算:

状态 含义
SUPPORTED 所有平台均支持
NOT_SUPPORTED 所有平台均为 x
PARTIALLY_SUPPORTED 同时存在支持、不支持或未配置的平台

因此,即使空版本列最终没有显示,页面仍能正确判断该功能是完全支持、不支持还是部分支持。