uni-app x 在不同平台(Android、iOS、鸿蒙、微信小程序、web)、在不同os版本、在不同模式(vdom或蒸汽)、在不同运行环境(uvue页面或uts原生插件环境),存在某些功能的差异。 由此产生兼容性表格。
为了简洁,兼容性表格有一些约定。本文档用于说明兼容性表格的约定,以帮助开发者更清晰的看懂兼容性表格。
兼容性表格中,除了表头外,表体内容有如下值域:
√:表示支持。尤其指从开始就支持,而不是从特定版本后才支持x:表示不支持版本号:从该 HBuilderX 版本号起支持OS系统版本号:从该OS系统版本起支持空白:未标注。可能支持也可能不支持,或不需要单独说明版本号末尾的 + 在表格中会被省略。例如 4.25+ 显示为 4.25。
兼容性表格的表头,可选值包括四种:平台、OS系统版本、VDOM或Vapor、分平台的uts插件
个别兼容性表格会出现系统版本,即代表只有在指定的系统版本之上才能使用。
举例:
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 |
如果整列均为空或等于默认系统版本,则隐藏该列。低于默认系统版本的值不单独展示。
在组件、与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 时,也会合并显示,只保留平台列。
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 | 同时存在支持、不支持或未配置的平台 |
因此,即使空版本列最终没有显示,页面仍能正确判断该功能是完全支持、不支持还是部分支持。