# 鸿蒙 OS 适配指南
基础库从 3.7.0 起正式支持鸿蒙 OS 平台,后续与其它平台一致,通过后台灰度更新基础库,开发者工具可在详情 - 本地设置 - 调试基础库切到 3.7.0 版本进行开发调试。
# 架构概览
小程序在鸿蒙 OS 平台的运行环境与安卓类似,即逻辑层的 JavaScript 代码运行在 v8 中,视图层是基于鸿蒙 OS 原生的 ArkWeb 引擎来渲染,而 Skyline 渲染引擎在支持中,暂未提供。
此外,小程序的运行机制、更新机制、组件框架等均保持一致,但在一些特性支持度上会有区别。
# 适配方式
目前小程序在鸿蒙 OS 平台与其它平台的区别主要是 WebView 引擎及涉及原生能力的特性上。
前者在鸿蒙 OS 上使用的是 ArkWeb 引擎,可能存在一些依赖 WebView 的特性上的差异,如 CSS 样式相关,这类问题需按实际情况兼容;
后者大多是与组件/接口相关,可通过 wx.canIUse
接口或者通过 wx.getDeviceInfo().platform === 'ohos'
判断,对业务逻辑做必要的兼容。
# 调试方式
- 通过开发者工具调试
- 下载最新的nightly版开发者工具,通过最新开发者工具调试
- 调试基础库版本选择3.7.0
- 选择「小程序模式」,并选择华为鸿蒙机型
- 支持使用 wx.canIUse 判断接口是否可使用
- 通过真机调试
目前已对外提供公测版微信,可在鸿蒙 OS 的应用商店下载,操作路径为:鸿蒙 next 应用商店 - 我的 - 应用尝鲜,下拉找到微信,安装后即可正常打开小程序进行调试。
# 支持情况
以下罗列出暂未支持的特性,对使用到未支持的特性需做好兼容。其中组件/接口具体的支持情况可跳转至对应文档查看,部分支持的一般代表少数高阶功能不支持。
# 框架
特性 | 支持情况 |
---|---|
Skyline 渲染引擎 | 支持中 |
初始渲染缓存 | 不支持 |
暗黑模式 | 不支持 |
周期性更新 | 不支持 |
数据预拉取 | 不支持 |
后台运行 | 不支持 |
无障碍访问 | 不支持 |
分享朋友圈 | 不支持 |
# 组件
组件 | 支持情况 |
---|---|
无障碍访问 | 不支持 |
page-container | 部分支持 |
scroll-view | 部分支持 |
button | 部分支持 |
input | 部分支持 |
keyboard-accessory | 不支持 |
textarea | 部分支持 |
channel-live | 不支持 |
channel-video | 不支持 |
live-pusher | 部分支持 |
video | 部分支持 |
voip-room | 不支持 |
map | 部分支持 |
canvas | 部分支持 |
ad/ad-custom | 不支持 |
official-account | 不支持 |
xr-frame | 不支持 |
web-view | 部分支持 |
# 接口
模块 | 接口 | 支持情况 |
---|---|---|
基础-系统 | wx.getSkylineInfo / wx.getSkylineInfoSync | 不支持 |
基础-生命周期 | wx.onApiCategoryChange / wx.offApiCategoryChange / wx.getApiCategory | 不支持 |
基础-应用级事件 | wx.onThemeChange / wx.offThemeChange / wx.onAudioInterruptionEnd / wx.onAudioInterruptionBegin / wx.offAudioInterruptionEnd / wx.offAudioInterruptionBegin | 不支持 |
基础-性能 | wx.preloadWebview / wx.preloadSkylineView | 不支持 |
路由-自定义路由 | - | 支持中 |
跳转 | wx.openEmbeddedMiniProgram / wx.onEmbeddedMiniProgramHeightChange / wx.offEmbeddedMiniProgramHeightChange | 不支持 |
转发 | wx.showShareImageMenu / wx.onCopyUrl / wx.offCopyUrl | 不支持 |
界面-交互 | wx.enableAlertBeforeUnload / wx.disableAlertBeforeUnload | 支持中 |
界面-滚动 | ScrollViewContext | 不支持 |
界面-置顶 | wx.setTopBarText | 不支持 |
界面-窗口 | - | 不支持 |
界面-worklet动画 | - | 支持中 |
网络-mDNS | - | 不支持 |
支付 | wx.requestCommonPayment / wx.requestVirtualPayment / wx.openHKOfflinePayView | 不支持 |
数据缓存 | wx.revokeBufferURL / wx.createBufferURL | 不支持 |
数据缓存-数据预拉取和周期性更新 | wx.getBackgroundFetchData / wx.onBackgroundFetchData / wx.setBackgroundFetchToken / wx.getBackgroundFetchToken | 不支持 |
数据缓存-缓存管理器 | - | 不支持 |
画布 | - | 部分支持 |
媒体-地图 | executeVisualLayerCommand / addVisualLayer / removeVisualLayer / addGroundOverlay / updateGroundOverlay / removeGroundOverlay / MapContext.on | 不支持 |
媒体-图片 | wx.cropImage / wx.editImage / wx.chooseMessageFile | 不支持 |
媒体-视频 | wx.openVideoEditor / wx.compressVideo | 不支持 |
媒体-音频 | 只支持 WebAudio | 不支持 |
媒体-录音 | - | 不支持 |
媒体-音视频合成 | - | 不支持 |
媒体-实时语音 | - | 不支持 |
媒体-画面录制器 | - | 不支持 |
媒体-视频解码器 | - | 不支持 |
开放接口-收货地址 | - | 不支持 |
开放接口-卡券 | - | 不支持 |
开放接口-发票 | - | 不支持 |
开放接口-生物认证 | - | 不支持 |
开放接口-微信运动 | - | 不支持 |
开放接口-订阅消息 | - | 不支持 |
开放接口-收藏 | - | 支持中 |
开放接口-车牌 | - | 不支持 |
开放接口-视频号 | - | 不支持 |
开放接口-微信客服 | - | 不支持 |
开放接口-微信表情 | - | 不支持 |
设备-蓝牙-通用 | wx.makeBluetoothPair / wx.isBluetoothDevicePaired | 不支持 |
设备-蓝牙-低功耗中心设备 | wx.getBLEMTU | 不支持 |
设备-NFC读写 | - | 不支持 |
设备-联系人 | wx.addPhoneContact | 不支持 |
设备-无障碍 | - | 不支持 |
设备-电量 | wx.onBatteryInfoChange / wx.offBatteryInfoChange | 不支持 |
设备-NFC主机卡模拟 | - | 不支持 |
设备-网络 | - | 不支持 |
设备-屏幕 | wx.onScreenRecordingStateChanged / wx.offScreenRecordingStateChanged / wx.getScreenRecordingState | 不支持 |
设备-内存 | - | 不支持 |
设备-扫码 | - | 不支持 |
AI | - | 不支持 |
Worker | - | 支持中 |
广告 | - | 不支持 |
Skyline | - | 支持中 |
XR-FRAME | - | 不支持 |