提交 d067d88f 编写于 作者: O openharmony_ci 提交者: Gitee

!1085 文档更新-3.1beta版本发布

Merge pull request !1085 from duangavin123/OpenHarmony-3.1-Beta
# OpenHarmony 3.1 Beta
- [版本概述](#版本概述)
- [配套关系](#配套关系)
- [源码获取](#源码获取)
- [通过repo获取](#通过repo获取)
- [从镜像站点获取](#从镜像站点获取)
- [更新说明](#更新说明)
- [特性变更](#特性变更)
- [API变更](#api变更)
- [芯片及开发板适配](#芯片及开发板适配)
- [Samples & Codelabs](#samples-amp-codelabs)
- [新增Samples](#新增samples)
- [新增Codelabs](#新增codelabs)
- [修复缺陷列表](#修复缺陷列表)
- [遗留缺陷列表](#遗留缺陷列表)
## 版本概述
当前版本在OpenHarmony 3.0 LTS的基础上,更新支持了以下能力:
- 标准系统OS基础能力增强:内核提升CMA利用率特性、图形新增支持RenderService渲染后端引擎、短距离通信支持STA(Station)和SoftAP基础特性、支持地磁场的算法接口、传感器驱动模型能力增强、支持应用帐号信息查询和订阅等、全球化特性支持、编译构建支持统一的构建模板、编译运行时提供Windows/MacOS/Linux的前端编译工具链、JS运行时支持预览器、新增支持JSON处理、Eventbus、Vcard、Protobuf、RxJS、LibphoneNumber等6个JS三方库、新增时间时区管理、DFX新增支持HiSysEvent部件提供查询和订阅接口。
- 标准系统分布式能力增强:包括新增支持分布式DeviceProfile特性、分布式数据管理支持跨设备同步和订阅、分布式软总线支持网络切换组网、分布式文件系统支持Statfs API能力等。
- 标准系统应用程序框架能力增强:新增ArkUI自定义绘制能力和Lottie动画能力、新增包管理探秘隐式查询和多hap包安装、事件通知支持权限管理、设置通知振动、通知声音设置和查询、通知免打扰、会话类通知等。
- 标准系统应用能力增强:输入法应用支持文本输入和横屏下布局显示、短信应用信息管理、联系人应用通话记录和拨号盘显示、设置应用更多设置项。
- 轻量系统能力增强:HiStreamer轻量级支持可定制的媒体管线框架、Linux版本init支持热插拔、OS轻内核&驱动启动优化、快速启动能力支持。
## 配套关系
**表1** 版本软件和工具配套关系
| 软件 | 版本 | 备注 |
| -------- | -------- | -------- |
| OpenHarmony | 3.1 Beta | NA |
| SDK | Ohos_sdk 3.1 Beta  (API Version 8 Beta) | NA |
| HUAWEI DevEco Studio(可选) | 3.0 Beta2 | OpenHarmony应用开发推荐使用。 |
| HUAWEI DevEco Device Tool(可选) | 3.0 Beta2 | OpenHarmony智能设备集成开发环境推荐使用。 |
## 源码获取
### 通过repo获取
**方式一(推荐)**
通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
```
repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.1-Beta --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
**方式二**
通过repo + https 下载。
```
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-3.1-Beta --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
### 从镜像站点获取
**表2** 获取源码路径
| 版本源码 | **版本信息** | **下载站点** | **SHA256校验码** |
| -------------------------------- | ------------ | ------------ | ---------------- |
| 全量代码(标准、轻量和小型系统) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/code-v3.1-Beta.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/code-v3.1-Beta.tar.gz.sha256) |
| Hi3516标准系统解决方案(二进制) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/standard_hi3516.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/standard_hi3516.tar.gz.sha256) |
| RK3568标准系统解决方案(二进制) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/standard_rk3568.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/standard_rk3568.tar.gz.sha256) |
| Hi3861解决方案(二进制) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/hispark_pegasus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/hispark_pegasus.tar.gz.sha256) |
| Hi3516解决方案-LiteOS(二进制) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/hispark_taurus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/hispark_taurus.tar.gz.sha256) |
| Hi3516解决方案-Linux(二进制) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/hispark_taurus_linux.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/hispark_taurus_linux.tar.gz.sha256) |
| 标准系统包(Mac) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/ohos-sdk-mac.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/ohos-sdk-mac.tar.gz.sha256) |
| 标准系统包(Windows\Linux) | 3.1 Beta | [站点](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/ohos-sdk-tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/harmonyos/os/3.1-Beta/ohos-sdk-tar.gz.sha256) |
| 编译工具链获取清单 | - | [站点](https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/) | |
## 更新说明
本版本在OpenHarmony 3.0 LTS的基础上有如下变更。
### 特性变更
**表3** 版本新增特性表
| 子系统名称 | 标准系统 | 轻量、小型系统 |
| -------- | -------- | -------- |
| 包管理子系统 | -&nbsp;I4MBSE:提供桌面包管理客户端<br/>-&nbsp;I4MBSF:支持缓存清除能力<br/>-&nbsp;I4MBSG:支持安装包信息查询<br/>-&nbsp;I4MBSD:支持多hap包安装<br/>-&nbsp;I4MBSH:支持多hap安装的签名校验<br/>-&nbsp;I4MBSC:支持Module和Ability的srcPath字段 | NA |
| 分布式任务调度子系统 | -I4MBRW:SAMGR新增服务进程内的System&nbsp;Ability名单管控<br/>-I4MBRV:SAMGR新增系统服务状态列表维护<br/>-I4MBRZ:SAMGR新增全量服务列表初始化<br/>-I4MBRY:SAMGR新增系统服务进程状态列表维护<br/>-I4MBRX:SAMGR新增加载指定系统服务 | NA |
| DeviceProfile子系统 | -I4NY23:本地设备Profile的插入、删除、查询<br/>-I4NY1X:远程设备Profile的查询<br/>-I4NY1T:订阅远程Profile变化的通知<br/>-I4NY1W:跨设备同步Profile | NA |
| 帐号子系统 | -I4MBQW:支持应用帐号的新增和删除<br/>-I4MBQV:应用帐号基础信息约束<br/>-I4MBQU:支持应用帐号订阅及取消订阅<br/>-I4MBQT:支持应用帐号功能设置与内容修改<br/>-I4MBQS:支持应用帐号信息查询<br/>-I4IT3U:支持应用帐号基础信息管理 | NA |
| 泛sensor服务子系统 | -I3NJ96:加速度传感器数据上报<br/>-I3NJ8H:陀螺仪传感器数据上报<br/>-I3NJ7J:环境光传感器数据上报<br/>-I3NJ76:磁力计传感器数据上报<br/>-I4MBRP:地磁场偏角和倾角<br/>-I4MBRQ:地磁场水平强度、总强度 | NA |
| USB服务子系统 | I410OZ:<br/>-&nbsp;查询已连接的USB设备列表<br/>-&nbsp;获取USB设备临时访问权限<br/>-&nbsp;设置USB设备配置、接口<br/>-&nbsp;与USB设备进行数据传输 | NA |
| 语言编译器运行时子系统 | -&nbsp;I4MBUK:JavaScript/TypeScript默认运行时从quickjs替换为方舟运行时。<br/>-&nbsp;I4MBUJ:方舟运行时内存回收功能增强,支持并发标记算法以及并发压缩算法,支持选择部分region进行压缩GC(Partial&nbsp;CompressionGC),优化GC&nbsp;pause&nbsp;time减少30%。 | NA |
| 全球化子系统 | -&nbsp;支持国际化特性:单复数规则、字符串排序、电话号码处理、日历&amp;本地历法、度量衡体系和格式化、区域表示和属性、时间段格式化、字母表检索、unicode字符属性、断词换行<br/>-&nbsp;支持系统资源、rawfile资源 | NA |
| 分布式软总线子系统 | -I4FZ29:软总线提供传输ExtAPI接口<br/>-I4FZ25:软总线支持网络切换组网 | -I4FZ29:软总线提供传输ExtAPI接口<br/>-I4FZ25:软总线支持网络切换组网 |
| 启动子系统 | NA | -I3XGJH:init基础环境构建<br/>-I3XGKV:sytemparameter管理<br/>-I3XGLN:init&nbsp;脚本管理<br/>-I3XGMQ:基础权限管理<br/>-I3XGN8:bootimage构建和加载<br/>-I3XGKV:uevent&nbsp;管理<br/>-I3XGKV:sytemparameter管理<br/>-I3XGNM:烧写模式支持 |
| 媒体子系统 | NA | -I4BX5Z:HiStreamer支持音频播放和控制<br/>-I4BX8A:HiStreamer支持常见音频格式mp3/wav的播放<br/>-I4BX9E:HiStreamer播放引擎框架需求<br/>-I4DK89:HiStreamer插件框架需求<br/>-I4DK8D:HiStreamer性能和DFX需求 |
| 图形子系统 | 全新设计OpenHarmony&nbsp;图形栈:<br/>新增UI框架渲染后端特性支持<br/>新增ArkUI控件接入RenderService渲染后端 | NA |
| 内核子系统 | 内核(Linux&nbsp;5.10)<br/>-I4LUG4&nbsp;CMA内存区域复用(目前仅支持Hi3516DV300,暂不支持RK平台)<br/>-I4LX4G&nbsp;支持anonymous&nbsp;vma命名(目前仅支持Hi3516DV300,暂不支持RK平台) | -I3ND6Y:【性能】OS内核&amp;驱动启动优化 |
| 启动恢复子系统 | NA | -I3NTCT:Linux版本init支持热插拔 |
| 分布式数据对象管理子系统 | NA | -I4H3JJ:分布式对象支持小型系统设备 |
| 电话子系统 | NA | -I4JQ2N:提供Http&nbsp;JS&nbsp;API<br/>-I4JQ3G:提供Http&nbsp;2.0协议 |
| Misc软件服务子系统 | I4MBQE:<br/>支持应用读取时间<br/>支持应用读取时区<br/>支持时间修改通知<br/>支持时区修改通知<br/>支持分钟变化通知 | NA |
| 编译构建子系统 | I4K7E3:支持使用统一的编译命令作为编译入口<br/>- I4KCNB:支持使用统一的gn模板 | -I4MBQN:支持统一的编译入口、支持使用build.sh编译轻量、小型系统<br/>-I4MBQP:支持统一的编译流程<br/>-I4MBQR:支持统一的产品配置 |
| 文件存储子系统 | -I4MBS2:statfs获取设备总空间与剩余空间JS接口 | NA |
| 驱动子系统 | -I4L3KK:传感器器件驱动能力增强,支持传感器采样率动态配置,三轴方向静态可配置,环境光增益调节。<br/>-I4L3LF:传感器驱动模型能力增强,支持传感器HDI跨进程服务获取和调用。<br/>-I4MBTS:HDF-Input设备能力丰富,支持摇杆设备数据上报。<br/>-I4MBTR:Display&nbsp;HDI接口针对标准系统的参考实现,针对DRM显示架构,提供针对标准系统的Display&nbsp;HDI默认参考实现,有助于厂商参考适配HDI。<br/>-I4HPR7:提供hcs宏式解析机制,编译时使用hc-gen工具把驱动的配置参数解析为宏定义参数,驱动通过hcs宏格式的接口访问宏定义参数。<br/>-I4KVJQ:支持linux/liteos内核系统级休眠唤醒。<br/>-I4L3ZZF:支持同步/异步电源管理调用,提供同步/异步的管理HDF设备进入休眠或者被唤醒的机制。 | -I4L3KK:传感器器件驱动能力增强,支持传感器采样率动态配置,三轴方向静态可配置,环境光增益调节。<br/>-HDF-Input设备能力丰富(linux系统),支持摇杆设备数据上报。<br/>-I4HPR7:提供hcs宏式解析机制,编译时使用hc-gen工具把驱动的配置参数解析为宏定义参数,驱动通过hcs宏格式的接口访问宏定义参数。<br/>-I4KVJQ:支持linux/liteos内核系统级休眠唤醒。<br/>-I4L3ZZF:支持同步/异步电源管理调用,提供同步/异步的管理HDF设备进入休眠或者被唤醒的机制。 |
| ArkUI子系统 | - I4MBUY:事件中增加Target获取尺寸<br/>- I4MBUZ:Swiper组件支持设置缓存cache <br/>- I4MBV1:Image组件支持同步、异步渲染设置 <br/>- I4MBV3:样式设置特性增加组件多态样式设置<br/>- I4MBV5:字母索引条组件增加提示菜单内容扩展<br/>- I4MBV6:组件自定义特性增加自定义容器组件规格<br/>- I4MBV7:滚动条样式自定义能力<br/>- I4MBV8:Swiper组件新增切换禁用规格<br/>- I4MBV9:Tabs组件新增TabBar内容自定义规格<br/>- I4MBVA:Navigation组件新增标题栏设置规格<br/>- I4MBVB:工具栏组件增加工具栏显隐控制规格<br/>- I4MBVC:工具栏组件增加内容自定义能力规格<br/>- I4MBVD:新增SysCap声明编译特性<br/>- I4MBVE:新增JSSDK编译特性 <br/>- I4MBVF:新增Config.json编译特性 <br/>- I4MBVG:新增断点调试特性支持单实例调试<br/>- I4MBVH:新增attach调试特性支持单实例调试<br/>- I4MBVI:新增声明式范式编译特性支持编译和校验规格<br/>- I4MBVJ:新增JS模块共享编译特性<br/>- I4MBVK:新增HAR引用和编译特性 <br/>- I4MBVL:新增NPM引用和编译特性、 <br/>- I4MBVN:纵向显示滑动条组件特性<br/>- I4MBVO:Popup组件增加内容自定义规格 <br/>- I4MBVP:Canvas绘制能力支持<br/>- I4MBVQ:Canvas能力增强<br/>- I4MBVR:触摸响应热区设置<br/>- I4MBVS:Lottie动画支持<br/>- I4MBVT:组件尺寸获取特性<br/>- I4MBVU:Menu组件增加内容自定义规格<br/>- I4MBVV:Swipe手势特性 <br/>- I4MBVW:UI预览支持Inspector能力 <br/>- I4MBVX:新增非路由文件预览特性<br/>- I4MBVY:新增NAPI预览特性<br/>- I4MBVZ:新增声明式范式预览特性。支持基础预览规格<br/>- I4MBW2:新增声明式范式热加载特性,支持已有节点修改规格<br/>- I4MBW3:新增声明式范式热加载特性,支持新增节点规格<br/>- I4MBW4:新增声明式范式热加载特性,支持删除节点规格<br/>- I4MBW5:新增组件预览特性,支持页面组件预览规格<br/>通用属性新增点击控制 touchable:设置组件是否可以被触摸。<br/>基础组件新增Marquee:跑马灯组件。<br/>基础组件新增Gauge:数据量规图表组件。<br/>基础组件新增TextArea:多行文本输入组件。<br/>基础组件新增TextInput:单行文本输入组件。<br/>基础组件新增Toggle:状态组件。<br/>容器组件新增Stepper:步骤导航器组件。<br/>容器组件新增StepperItem:步骤导航器导航项组件。<br/>新增全局UI方法ActionSheet:列表选择弹窗。 | NA |
| DFX子系统 | -I4MBQH:支持HiSysEvent部件,提供查询、订阅接口<br/>-I4MBQJ:提供工具查询或者订阅系统事件<br/>-I4MBQL:支持Hiappevent部件的C接口 | NA |
| 应用子系统 | -I4MBU1:支持Settings数据管理API<br/>-I4MBU3:支持时间设置<br/>- I4MBU5:支持声音管理<br/>-I4MBU6:支持Settings数据管理<br/>-I4MBU7:支持Settings数据默认值管理<br/>-I4MBU8:支持Settings多设备形态差异化构建<br/>-I4MBU9:通知组件化 | NA |
### API变更
API变更请参考:
_[JS API 差异报告](api-change/v3.1-beta/js-apidiff-v3.1-beta.md)_
_[Native API差异报告](api-change/v3.1-beta/native-apidiff-v3.1-beta.md)_
_[Changelog](api-change/v3.1-beta/changelog-v3.1-beta.md)_
### 芯片及开发板适配
芯片及开发板适配状态请参考[SIG-Devboard](https://gitee.com/openharmony/community/blob/master/sig/sig-devboard/sig_devboard_cn.md)信息。
### Samples &amp; Codelabs
#### 新增Samples
**表1** Samples列表
| 名称 | 简介 | 开发语言 |
| -------- | -------- | -------- |
| [Ets公共事件](https://gitee.com/openharmony/app_samples/tree/master/ability/EtsCommonEvent) | 本示例展示了在eTS中如何使用CommonEvent的接口完成创建订阅者、订阅公共事件、发布公共事件、取消订阅的功能。 | eTS |
| [空气质量](https://gitee.com/openharmony/app_samples/tree/master/common/AirQuality) | 本示例使用JS实现了一个简单空气质量应用,使用折行显示能力显示空气质量信息,使用柱形图展示历史记录。 | JS |
| [分布式计算器](https://gitee.com/openharmony/app_samples/tree/master/common/DistributeCalc) | 本示例使用JS分布式能力实现了一个简单的计算器应用,可以进行简单的数值计算,支持远程拉起另一个计算器FA,两个FA进行协同计算。 | JS |
| [EtsNotification](https://gitee.com/openharmony/app_samples/tree/master/common/EtsNotification) | 本示例展示了在eTS中如何创建和删除Slot通道,如何发布和取消通知。 | eTS |
| [Ets资源管理](https://gitee.com/openharmony/app_samples/tree/master/common/EtsResourceManager) | 本示例展示了在eTS中如何调用资源管理的API接口实现字符串和图片资源信息的获取。 | eTS |
| [kikainput](https://gitee.com/openharmony/app_samples/tree/master/CompleteApps/KikaInput) | kikainput是一个轻量级的输入法应用,支持在运行OpenHarmony&nbsp;OS的智能终端上。 | JS |
| [eTS分布式数据管理](https://gitee.com/openharmony/app_samples/tree/master/data/eTSKvStore) | 本示例展示了在eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。 | eTS |
| [轻量级数据存储](https://gitee.com/openharmony/app_samples/tree/master/data/eTSLiteStorage) | 轻量级数据存储主要提供轻量级Key-Value操作,支持本地应用存储少量数据。本示例通过对购物车商品的添加和删除并保存退出的操作,使得再次打开应用时依然可以保留退出前的购物车信息,体现了轻量级存储在保存轻量级数据时的作用。 | eTS |
| [Ets进程信息](https://gitee.com/openharmony/app_samples/tree/master/ETSUI/EtsProcess) | 本示例展示了在eTS中如何获取进程信息和启动一个子进程运行一段shell,包括当前系统运行时间、获取进程当前工作目录、更改进程当前工作目录、发送signal到指定的进程、启动一个子进程、关闭子进程、退出当前系统的功能。 | eTS |
| [Ets运行锁](https://gitee.com/openharmony/app_samples/tree/master/ETSUI/eTSRunninglock) | 本示例展示了阻止系统休眠的运行锁功能,通过黑白色壁纸模拟息屏、亮屏状态,来展示系统的休眠状态,从而对运行锁的功能进行测试,使得该运行锁在打开后可以阻止系统休眠。 | eTS |
| [字符串编解码](https://gitee.com/openharmony/app_samples/tree/master/ETSUI/StringCodec) | 本示例对字符串进行了特定格式的输出,对错误码的内容进行了文本输出,对字符串的编码和解码做了演示结果。 | eTS |
| [Js音频播放和管理](https://gitee.com/openharmony/app_samples/tree/master/media/JsAudioPlayer) | 本示例展示了JS音频播放的使用方法,以及音频的音量大小设置。 | JS |
| [JsVideo](https://gitee.com/openharmony/app_samples/tree/master/media/JsVideo) | 本示例使用JS&nbsp;UI中的&lt;video/&gt;组件,实现视频播放。可以通过video自带的控制栏进行播放、暂停等操作。 | JS |
| [测试打点](https://gitee.com/openharmony/app_samples/tree/master/security/JsDotTest) | 本示例展示了测试打点功能,包括应用打点与性能打点两部分。 | JS |
| [JsWorker](https://gitee.com/openharmony/app_samples/tree/master/thread/JsWorker) | 本示例展示了在JS中如何启动一个worker线程,并实现worker线程和宿主线程的通信。 | JS |
| [画布组件](https://gitee.com/openharmony/app_samples/tree/master/UI/JsCanvas) | &lt;canvas/>组件可以自定义绘制图形,本示例展示了&lt;canvas\>组件的使用方法 | JS |
| [JS页面弹窗](https://gitee.com/openharmony/app_samples/tree/master/UI/JsDialog) | JS中支持用户自定义弹窗,&lt;dialog/&gt;组件作为容器组件,用户可以自定义弹窗的样式和布局。本示例完成了添加和删除联系人功能,在添加和删除时使用自定义弹窗来实现。 | JS |
| [JSList商品列表](https://gitee.com/openharmony/app_samples/tree/master/UI/JsList) | 本示例展示了list控件在商品分类列表中的应用,在listGroup里采用两个list-item分别展示了Group收缩和Group展开的两种列表形态,点击后会弹出相应的list列表。 | JS |
| [JSPanel](https://gitee.com/openharmony/app_samples/tree/master/UI/JsPanel) | JS提供一种轻量级的内容展示面板,此面板可滑动,可自定义触发方式、弹出高度等属性。本示例通过可滑动面板展示了商品详细信息与平台保障。 | JS |
| [JsSvg](https://gitee.com/openharmony/app_samples/tree/master/UI/JsSvg) | 本示例展示了JS中&lt;svg/>组件及其子组件的使用,包括<svg\>、<rect\>、<circle\>、<ellipse\>、<path\>、<line\>、<polygon\>、<polyline\>、<text\>、<animate\>、<animateTransform\> 。 | JS |
| [JS自定义组件](https://gitee.com/openharmony/app_samples/tree/master/UI/JSUICustomComponent) | 自定义组件是用户根据业务需求,将已有的组件组合,封装成的新组件,可以在工程中多次调用,提高代码的可读性。本示例展示了JS中自定义组件的使用,包括基本用法、自定义事件、Props和事件参数。 | JS |
#### 新增Codelabs
**表2** Codelabs列表
| 名称 | 简介 | 开发语言 |
| -------- | -------- | -------- |
| [分布式手写板(eTS)](https://gitee.com/openharmony/codelabs/tree/master/Distributed/DistributeDatabaseDrawEts) | 基于分布式能力,实现多设备同步书写互动。 | eTS |
| [分布式数据库](https://gitee.com/openharmony/codelabs/tree/master/Data/JsDistributedData) | 基于分布式数据接口,实现多种设备上一致的数据访问体验。 | JS |
| [关系型数据库](https://gitee.com/openharmony/codelabs/tree/master/Data/JSRelationshipData) | 基于关系型数据库和数据管理能力,实现数据库相关应用服务的快速开发。 | JS |
| [极简声明式UI范式(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/SimpleGalleryEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI,实现一个图库应用。 | eTS |
| [一次开发多端部署(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/MultiDeploymentEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI,实现一次布局,多端部署。 | eTS |
| [购物应用(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/ShoppingEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI丰富的组件实现购物商城应用。 | eTS |
| [Page内和Page间导航跳转](https://gitee.com/openharmony/codelabs/tree/master/Ability/PageAbility) | 入门教程,学习如何完成Page内和Page间的页面导航跳转。 | eTS |
| [转场动画的使用(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/TransitionAnimtaionEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI转场动画,实现了页面间转场、组件内转场以及共享元素转场。 | eTS |
| [基础组件Slider的使用(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/SliderApplicationEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI,使用slider组件,实现可调节风车大小和转速的动画效果。 | eTS |
| [流式布局(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/FlowLayoutEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI,实现流式布局效果。 | eTS |
| [弹窗(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/CustomDialogEts) | 基于OpenHarmony&nbsp;eTS&nbsp;UI,实现警告弹窗和自定义弹窗。 | eTS |
## 修复缺陷列表
**表4** 修复缺陷ISSUE列表
| ISSUE单号 | 问题描述 |
| -------- | -------- |
| [I48IM7](https://gitee.com/openharmony/hiviewdfx_hilog/issues/I48IM7) | 运行hilog压力测试,hilogd异常重启,且hilog命令一直无法使用。 |
| [I48YPH](https://gitee.com/openharmony/security_deviceauth/issues/I48YPH) | 【软总线-组网】测试发现和组网性能(循环离网-发现-组网)110次组网失败3次。 |
| [I4BVVW](https://gitee.com/openharmony/communication_dsoftbus/issues/I4BVVW) | 【软总线-组网】标准系统与手机开关网络自组网成功率97%失败3次需分析失败原因。 |
| [I4BXY1](https://gitee.com/openharmony/multimedia_camera_standard/issues/I4BXY1) | 视频录制后前几秒没声音,播放声画不同步,在板子播放会卡顿,音源较远时,有杂音。 |
| [3ZJ1D](https://gitee.com/openharmony/kernel_liteos_a/issues/I3ZJ1D) | XTS权限用例压测用户态概率失败。 |
## 遗留缺陷列表
**表6** 遗留缺陷列表
| ISSUE | 问题描述 | 影响 | 计划解决日期 |
| -------- | -------- | -------- | -------- |
| [I4NRS5](https://gitee.com/openharmony/kernel_linux_5.10/issues/I4NRS5) | 【内核子系统】存在cve漏洞 | Linux内核还未发布补丁,暂时挂起,待社区发布补丁后升级同步。 | 待社区发布补丁 |
| [I4MGJM](https://gitee.com/openharmony/drivers_peripheral/issues/I4MGJM) | 【hdf/camera】RK3568单板跑camera&nbsp;HDI用例失败 | 拍照和预览正常,可以正常录像,点击结束按钮,不能结束。 | 2021/12/31 |
| [I4OECR](https://gitee.com/openharmony/ark_js_runtime/issues/I4OECR) | XTS运行报ark异常栈(低概率问题) | XTS压力测试低概率偶现(48小时出现1次),仅Log中上报异常栈,对功能无影响。 | 2022/1/5 |
| [I4OBTW](https://gitee.com/openharmony/aafwk_standard/issues/I4OBTW) | 全量执行XTS用例,安装应用后出现批量aa&nbsp;start&nbsp;失败,影响社区流水线稳定性测试 | XTS压力测试,短时间内批量安装100个应用包,低概率(2个/100个)出现应用无法启动。用户使用无影响。 | 2022/1/5 |
| [I4OLHF](https://gitee.com/openharmony/ark_js_runtime/issues/I4OLHF?from=project-issue) | 【Ark子系统】&nbsp;由进程com.amsst.amsMissionSnapshotTest导致测试进程异常 | 低概率、偶现,高压力测试偶现问题。 | 2022/1/5 |
| [I4OLUK](https://gitee.com/openharmony/ark_js_runtime/issues/I4OLUK) | 【Ark子系统】&nbsp;由进程com.ohos.systemui导致进程栈异常 | 低概率、偶现,高压力测试偶现问题。 | 2022/1/5 |
# OpenHarmony Release Notes
## OpenHarmony 3.x Releases
[OpenHarmony v3.1 Beta(2021-12-31)](OpenHarmony-v3.1-beta.md)
[OpenHarmony v3.0 LTS (2021-09-30)](OpenHarmony-v3.0-LTS.md)
## OpenHarmony 2.x Releases
......
# ChangeLog
##### 关键的接口/组件变更
## 进程间通信子系统
#### cl.rpc.1 sendRequest返回值类型变更
##### 变更影响
js的RemoteProxy和RemoteObject的sendRequest变更为异步接口,返回Promise,兑现值是SendRequestResult的实例。原有应用需要适配。
##### 关键的接口/组件变更
```
模块:ohos.rpc.IRemoteObject, ohos.rpc.RemoteProxy和ohos.rpc.RemoteObject
接口:sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean
变更后接口:
sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult>
```
**适配指导**
```
import rpc from "@ohos.rpc"
let option = new rpc.MessageOption()
let data = rpc.MessageParcel.create()
let reply = rpc.MessageParcel.create()
proxy.sendRequest(1, data, reply, option)
.then(function(result) {
console.info("send request done")
if (result.errCode === 0) {
// read result from result.reply
}
})
.catch(function(e) {
console.error("send request failed: " + e)
})
.finally(() => {
data.reclaim()
reply.reclaim()
})
```
# JS API 差异报告
OpenHarmony 3.1 Beta1相较于OpenHarmony 3.0 LTS版本的API变更如下:
## 标准系统接口变更
| 模块名称 | 接口名称 | 变更类型 | 变更说明 |
| -------- | -------- | -------- | -------- |
| 系统应用-settings | getUri(name: string): string | 新增 | 新增获取设置数据URI |
| 系统应用-settings | getValue(dataAbilityHelper: DataAbilityHelper, name: string, defValue: string): string | 新增 | 新增获取设置数据库值 |
| 系统应用-settings | setValue(dataAbilityHelper: DataAbilityHelper, name: string, value: string): boolean | 新增 | 新增设置设置数据库值 |
| 杂散软件服务-systemTime | getCurrentTime(callback: AsyncCallback<number>): void | 新增 | 获取自 Unix 纪元以来经过的毫秒数。 |
| 杂散软件服务-systemTime | getCurrentTime(): Promise<number> | 新增 | 获取自 Unix 纪元以来经过的毫秒数。 |
| 杂散软件服务-systemTime | getCurrentTimeNs(callback: AsyncCallback<number>): void | 新增 | 获取自 Unix 纪元以来经过的纳秒数。 |
| 杂散软件服务-systemTime | getCurrentTimeNs(): Promise<number> | 新增 | 获取自 Unix 纪元以来经过的纳秒数。 |
| 杂散软件服务-systemTime | getRealActiveTime(callback: AsyncCallback<number>): void | 新增 | 获取自系统启动以来经过的毫秒数,不包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealActiveTime(): Promise<number> | 新增 | 获取自系统启动以来经过的毫秒数,不包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealActiveTimeNs(callback: AsyncCallback<number>): void | 新增 | 获取自系统启动以来经过的纳秒数,不包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealActiveTimeNs(): Promise<number> | 新增 | 获取自系统启动以来经过的纳秒数,不包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealTime(callback: AsyncCallback<number>): void | 新增 | 获取自系统启动以来经过的毫秒数,包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealTime(): Promise<number> | 新增 | 获取自系统启动以来经过的毫秒数,包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealTimeNs(callback: AsyncCallback<number>): void | 新增 | 获取自系统启动以来经过的纳秒数,包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getRealTimeNs(): Promise<number> | 新增 | 获取自系统启动以来经过的纳秒数,包括深度睡眠时间。 |
| 杂散软件服务-systemTime | getDate(callback: AsyncCallback<Date>): void | 新增 | 获取当前时间。 |
| 杂散软件服务-systemTime | getDate(): Promise<Date> | 新增 | 获取当前时间。 |
| 杂散软件服务-systemTime | getTimeZone(callback: AsyncCallback<string>): void | 新增 | 获取系统时区。 |
| 杂散软件服务-systemTime | getTimeZone(): Promise<string> | 新增 | 获取系统时区。 |
| Ark UI框架-通用事件 | 组件区域变化事件 onAreaChange | 新增 | 新增组件区域(包括大小和位置)变化事件。 |
| Ark UI框架-通用属性 | 触摸热区设置 responseRegion | 新增 | 新增组件触摸热区设置。 |
| Ark UI框架-通用属性 | 点击控制 touchable | 新增 | 新增设置组件是否可以被触摸。 |
| Ark UI框架-通用属性 | 多态样式 stateStyle | 新增 | 新增设置组件按压态和禁用态的样式。 |
| Ark UI框架-通用手势 | SwipeGesture | 新增 | 新增滑动手势。 |
| Ark UI框架-基础组件 | Marquee | 新增 | 新增跑马灯组件。 |
| Ark UI框架-基础组件 | PluginComponent | 新增 | 新增插件组件。 |
| Ark UI框架-基础组件 | TextArea | 新增 | 新增输入区域组件。 |
| Ark UI框架-基础组件 | TextInput | 新增 | 新增输入框组件。 |
| Ark UI框架-基础组件 | Toggle | 新增 | 新增状态组件。 |
| Ark UI框架-容器组件 | ScrollBar | 新增 | 新增滚动条组件。 |
| Ark UI框架-容器组件 | Navigation | 新增 | 新增页面导航组件。 |
| Ark UI框架-容器组件 | Stepper | 新增 | 新增步骤导航器组件。 |
| Ark UI框架-容器组件 | StepperItem | 新增 | 新增步骤导航器导航项组件。 |
| Ark UI框架-画布组件 | Canvas | 新增 | 新增画布组件。 |
| Ark UI框架-画布组件 | Lottie | 新增 | 新增Lottie库的支持。 |
| Ark UI框架-全局UI方法 | ActionSheet | 新增 | 新增列表选择弹窗。 |
| USB服务-usb | getDevices(): Array<Readonly<USBDevice>> | 新增 | 新增获取USB设备列表的接口 |
| USB服务-usb | connectDevice(device: USBDevice): Readonly<USBDevicePipe> | 新增 | 新增根据{@link getDevices()}返回的设备信息打开USB设备的接口 |
| USB服务-usb | hasRight(deviceName: string): boolean | 新增 | 新增判断是否有权访问设备的接口 |
| USB服务-usb | requestRight(deviceName: string): Promise<boolean> | 新增 | 新增请求给定软件包的临时权限以访问设备的接口 |
| USB服务-usb | claimInterface(pipe: USBDevicePipe, iface: USBInterface, force?: boolean): number | 新增 | 新增获取接口的接口 |
| USB服务-usb | releaseInterface(pipe: USBDevicePipe, iface: USBInterface): number | 新增 | 新增释放接口的接口 |
| USB服务-usb | setConfiguration(pipe: USBDevicePipe, config: USBConfig): number | 新增 | 新增设置设备配置的接口 |
| USB服务-usb | setInterface(pipe: USBDevicePipe, iface: USBInterface): number | 新增 | 新增设置设备接口的接口 |
| USB服务-usb | getRawDescriptor(pipe: USBDevicePipe): Uint8Array | 新增 | 新增获取原始的USB描述符的接口 |
| USB服务-usb | getFileDescriptor(pipe: USBDevicePipe): number | 新增 | 新增获取文件描述符的接口 |
| USB服务-usb | controlTransfer(pipe: USBDevicePipe, contrlparam: USBControlParams, timeout?: number): Promise<number> | 新增 | 新增控制传输的接口 |
| USB服务-usb | bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout?: number): Promise<number> | 新增 | 新增批量传输的接口 |
| USB服务-usb | closePipe(pipe: USBDevicePipe): number | 新增 | 新增关闭USBDevicePipe的接口 |
| 用户程序框架-bundle | function cleanBundleCacheFiles(bundleName: string, callback: AsyncCallback<void>): void;<br/>function cleanBundleCacheFiles(bundleName: string): Promise<void>; | 新增 | 新增清理应用缓存接口 |
| 用户程序框架-bundle | function setApplicationEnabled(bundleName: string, isEnable: boolean, callback: AsyncCallback<void>): void;<br/>function setApplicationEnabled(bundleName: string, isEnable: boolean): Promise<void>; | 新增 | 新增设置应用使能接口 |
| 用户程序框架-bundle | function setAbilityEnabled(info: AbilityInfo, isEnable: boolean, callback: AsyncCallback<void>): void;<br/>function setAbilityEnabled(info: AbilityInfo, isEnable: boolean): Promise<void>; | 新增 | 新增设置ability使能接口 |
| 用户程序框架-bundle.innerBundleManager | function getLauncherAbilityInfos(bundleName: string, userId: number, callback: AsyncCallback<Array<LauncherAbilityInfo>>) : void;<br/>function getLauncherAbilityInfos(bundleName: string, userId: number) : Promise<Array<LauncherAbilityInfo>>; | 新增 | 新增通过包名获取应用LauncherAbility接口 |
| 用户程序框架-bundle.innerBundleManager | function on(type:"BundleStatusChange", bundleStatusCallback : BundleStatusCallback, callback: AsyncCallback<string>) : void;<br/>function on(type:"BundleStatusChange", bundleStatusCallback : BundleStatusCallback): Proimise<string>; | 新增 | 新增注册监听包状态变化接口 |
| 用户程序框架-bundle.innerBundleManager | function off(type:"BundleStatusChange", callback: AsyncCallback<string>) : void;<br/>function off(type:"BundleStatusChange"): Proimise<string>; | 新增 | 新增注销监听包状态变化接口 |
| 用户程序框架-bundle.innerBundleManager | function getAllLauncherAbilityInfos(userId: number, callback: AsyncCallback<Array<LauncherAbilityInfo>>) : void;<br/>function getAllLauncherAbilityInfos(userId: number) : Promise<Array<LauncherAbilityInfo>>; | 新增 | 新增通过userId获取所有launcher上应用的ability接口 |
| 用户程序框架-bundle.innerBundleManager | function getShortcutInfos(bundleName :string, callback: AsyncCallback<Array<ShortcutInfo>>) : void;<br/>function getShortcutInfos(bundleName : string) : Promise<Array<ShortcutInfo>>; | 新增 | 新增通过bundleName获取应用的shortcutInfo接口 |
| 分布式软总线-rpc.MessageParcel | writeNoException(): void | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readException(): void | 新增 | - |
| 分布式软总线-rpc.MessageParcel | writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readSequenceableArray(sequenceableArray Sequenceable[]): void | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readRemoteObjectArray(objects: IRemoteObject[]): void | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readRemoteObjectArray(): IRemoteObject[] | 新增 | - |
| 分布式软总线-rpc.MessageParcel | static closeFileDescriptor(fd: number): void | 新增 | - |
| 分布式软总线-rpc.MessageParcel | static dupFileDescriptor(fd: number) :number | 新增 | - |
| 分布式软总线-rpc.MessageParcel | containFileDescriptors(): boolean | 新增 | - |
| 分布式软总线-rpc.MessageParcel | writeFileDescriptor(fd: number): boolean | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readFileDescriptor(): number | 新增 | - |
| 分布式软总线-rpc.MessageParcel | writeAshmem(ashmem: Ashmem): boolean | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readAshmem(): Ashmem | 新增 | - |
| 分布式软总线-rpc.MessageParcel | getRawDataCapacity(): number | 新增 | - |
| 分布式软总线-rpc.MessageParcel | writeRawData(rawData: number[], size: number): boolean | 新增 | - |
| 分布式软总线-rpc.MessageParcel | readRawData(size: number): number[] | 新增 | - |
| 分布式软总线-rpc | interface SendRequestResult {<br/> errCode: number;<br/><br/> code: number;<br/><br/> data: MessageParcel;<br/><br/> reply: MessageParcel;<br/> } | 新增 | - |
| 分布式软总线-rpc.Ashmem | PROT_EXEC = 4 | 新增 | - |
| 分布式软总线-rpc.Ashmem | PROT_NONE = 0 | 新增 | - |
| 分布式软总线-rpc.Ashmem | PROT_READ = 1 | 新增 | - |
| 分布式软总线-rpc.Ashmem | PROT_WRITE = 2 | 新增 | - |
| 分布式软总线-rpc.Ashmem | static createAshmem(name: string, size: number): Ashmem | 新增 | - |
| 分布式软总线-rpc.Ashmem | static createAshmemFromExisting(ashmem: Ashmem): Ashmem | 新增 | - |
| 分布式软总线-rpc.Ashmem | closeAshmem(): void | 新增 | - |
| 分布式软总线-rpc.Ashmem | unmapAshmem(): void | 新增 | - |
| 分布式软总线-rpc.Ashmem | getAshmemSize(): number | 新增 | - |
| 分布式软总线-rpc.Ashmem | mapAshmem(mapType: number): boolean | 新增 | - |
| 分布式软总线-rpc.Ashmem | mapReadAndWriteAshmem(): boolean | 新增 | - |
| 分布式软总线-rpc.Ashmem | mapReadOnlyAshmem(): boolean | 新增 | - |
| 分布式软总线-rpc.Ashmem | setProtection(protectionType: number): boolean | 新增 | - |
| 分布式软总线-rpc.Ashmem | writeToAshmem(buf: number[], size: number, offset: number): boolean | 新增 | - |
| 分布式软总线-rpc.Ashmem | readFromAshmem(size: number, offset: number): number[] | 新增 | - |
| 分布式软总线-rpc.IRemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean | 废弃 | 替换为异步接口,使用返回Promise或者回调的接口 |
| 分布式软总线-rpc.IRemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult> | 新增 | - |
| 分布式软总线-rpc.IRemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | 新增 | - |
| 分布式软总线-rpc.RemoteProxy | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean | 废弃 | 替换为异步接口,使用返回Promise或者回调的接口 |
| 分布式软总线-rpc.RemoteProxy | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult> | 新增 | - |
| 分布式软总线-rpc.RemoteProxy | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | 新增 | - |
| 分布式软总线-rpc.RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): boolean | 废弃 | 替换为异步接口,使用返回Promise或者回调的接口 |
| 分布式软总线-rpc.RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption): Promise<SendRequestResult> | 新增 | - |
| 分布式软总线-rpc.RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback<SendRequestResult>): void | 新增 | - |
| 分布式软总线-rpc.IRemoteObject | PING_TRANSACTION | 删除 | API 7没有实现,不影响已有应用 |
| 分布式软总线-rpc.IRemoteObject | DUMP_TRANSACTION | 删除 | API 7没有实现,不影响已有应用 |
| 分布式软总线-rpc.IRemoteObject | INTERFACE_TRANSACTION | 删除 | API 7没有实现,不影响已有应用 |
| 分布式软总线-rpc.IRemoteObject | MIN_TRANSACTION_ID | 删除 | API 7没有实现,不影响已有应用 |
| 分布式软总线-rpc.IRemoteObject | MAX_TRANSACTION_ID | 删除 | API 7没有实现,不影响已有应用 |
| 分布式软总线-rpc.Sequenceable | hasFileDescriptor(): boolean | 删除 | API 7可序列化对象定义的方法,rpc框架不会调用,不影响已有应用 |
| 分布式软总线-rpc.MessageOption | constructor(syncFlags?: number, waitTime = TF_WAIT_TIME) | 新增 | - |
| 分布式软总线-rpc.MessageOption | getFlags(): number | 新增 | - |
| 分布式软总线-rpc.MessageOption | setFlags(flags: number): void | 新增 | - |
| 分布式软总线-rpc.MessageOption | getWaitTime(): number | 新增 | - |
| 分布式软总线-rpc.MessageOption | setWaitTime(waitTime: number): void | 新增 | - |
| 分布式软总线-rpc.MessageOption | MAX_WAIT_TIME = 3000 | 删除 | API 7没有实现,不影响已有应用 |
| 分布式软总线-rpc.RemoteObject | constructor(descriptor: string) | 新增 | - |
| 分布式软总线-rpc.RemoteObject | queryLocalInterface(descriptor: string): IRemoteBroker | 修改 | API 7有误,返回类型更正为IRemoteBroker,不影响已有应用 |
| 分布式软总线-rpc.Proxy | PING_TRANSACTION | 新增 | - |
| 分布式软总线-rpc.Proxy | DUMP_TRANSACTION | 新增 | - |
| 分布式软总线-rpc.Proxy | INTERFACE_TRANSACTION | 新增 | - |
| 分布式软总线-rpc.Proxy | MIN_TRANSACTION_ID = 0x1 | 新增 | - |
| 分布式软总线-rpc.Proxy | MAX_TRANSACTION_ID = 0x00FFFFFF | 新增 | - |
| 分布式软总线-rpc.Proxy | queryLocalInterface(interface: string): IRemoteBroker | 修改 | API 7有误,返回类型更正为IRemoteBroker,不影响已有应用 |
| 分布式软总线-wifi | function getLinkedInfo(): Promise<WifiLinkedInfo>;<br/>function getLinkedInfo(callback: AsyncCallback<WifiLinkedInfo>): void;| 新增 | - |
| 分布式软总线-wifi | function isConnected(): boolean;| 新增 | - |
| 分布式软总线-wifi | function getSupportedFeatures(): number;| 新增 | - |
| 分布式软总线-wifi | function isFeatureSupported(featureId: number): boolean;| 新增 | - |
| 分布式软总线-wifi | function getDeviceMacAddress(): string[];| 新增 | - |
| 分布式软总线-wifi | function getIpInfo(): IpInfo;| 新增 | - |
| 分布式软总线-wifi | function getCountryCode(): string;| 新增 | - |
| 分布式软总线-wifi | function reassociate(): boolean;| 新增 | - |
| 分布式软总线-wifi | function reconnect(): boolean;| 新增 | - |
| 分布式软总线-wifi | function getDeviceConfigs(): Array<WifiDeviceConfig>;| 新增 | - |
| 分布式软总线-wifi | function updateNetwork(config: WifiDeviceConfig): number;| 新增 | - |
| 分布式软总线-wifi | function disableNetwork(netId: number): boolean;| 新增 | - |
| 分布式软总线-wifi | function removeAllNetwork(): boolean;| 新增 | - |
| 分布式软总线-wifi | function removeDevice(id: number): boolean;| 新增 | - |
| 分布式软总线-wifi | function enableHotspot(): boolean;| 新增 | - |
| 分布式软总线-wifi | function disableHotspot(): boolean;| 新增 | - |
| 分布式软总线-wifi | function isHotspotActive(): boolean;| 新增 | - |
| 分布式软总线-wifi | function setHotspotConfig(config: HotspotConfig): boolean;| 新增 | - |
| 分布式软总线-wifi | function getHotspotConfig(): HotspotConfig;| 新增 | - |
| 分布式软总线-wifi | function getStations(): Array<StationInfo>;| 新增 | - |
| 分布式软总线-wifi | function on(type: "wifiStateChange", callback: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "wifiStateChange", callback?: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function on(type: "wifiConnectionChange", callback: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "wifiConnectionChange", callback?: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function on(type: "wifiScanStateChange", callback: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "wifiScanStateChange", callback?: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function on(type: "wifiRssiChange", callback: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "wifiRssiChange", callback?: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function on(type: "hotspotStateChange", callback: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "hotspotStateChange", callback?: Callback<number>): void;| 新增 | - |
| 分布式软总线-wifi | function on(type: "hotspotStaJoin", callback: Callback<StationInfo>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "hotspotStaJoin", callback?: Callback<StationInfo>): void;| 新增 | - |
| 分布式软总线-wifi | function on(type: "hotspotStaLeave", callback: Callback<StationInfo>): void;| 新增 | - |
| 分布式软总线-wifi | function off(type: "hotspotStaLeave", callback?: Callback<StationInfo>): void;| 新增 | - |
| 全球化-resourceManager | getRawFile(path: string, callback: AsyncCallback<Uint8Array>);<br/>getRawFile(path: string): Promise<Uint8Array>;| 新增 | - |
| 全球化-Intl | RelativeTimeFormat.constructor(); | 新增 | 构造函数 |
| 全球化-Intl | RelativeTimeFormat.constructor(locale: string \| Array<string>, options?: RelativeTimeFormatInputOptions); | 新增 | 构造函数 |
| 全球化-Intl | RelativeTimeFormat.format(value: number, unit: string): string; | 新增 | 相对时间格式化 |
| 全球化-Intl | RelativeTimeFormat.formatToParts(value: number, unit: string): Array<object>; | 新增 | 相对时间格式化,结果分为多部份分别存储 |
| 全球化-Intl | RelativeTimeFormat.formatToParts(value: number, unit: string): Array<object>; | 新增 | 相对时间格式化,结果分为多部份分别存储 |
| 全球化-Intl | PluralRules.constructor(); | 新增 | 构造函数 |
| 全球化-Intl | PluralRules.constructor(locale: string \| Array<string>, options?: PluralRulesOptions); | 新增 | 构造函数 |
| 全球化-Intl | PluralRules.select(n: number): string; | 新增 | 计算一个数字的单复数类别 |
| 全球化-Intl | Collator.constructor(); | 新增 | 构造函数 |
| 全球化-Intl | Collator.constructor(locale: string \| Array<string>, options?: CollatorOptions); | 新增 | 构造函数 |
| 全球化-Intl | Collator.compare(first: string, second: string): number; | 新增 | 比较两个字符串 |
| 全球化-Intl | Collator.resolvedOptions(): CollatorOptions; | 新增 | 获取排序对象相关属性 |
| 全球化-I18N | function unitConvert(fromUnit: UnitInfo, toUnit: UnitInfo, value: **number**, locale: **string**, style?: **string**): **string**; | 新增 | 新增转换单位接口 |
| 全球化-I18N | function **constructor**(country: **string**, options?: PhoneNumberFormatOptions);<br/>function isValidNumber(**number**: **string**): boolean;<br/>function format(**number**: **string**): **string**; | 新增 | 新增电话号码格式化接口 |
| 全球化-I18N | function setTime(date: Date);<br/>function setTime(time: **number**);<br/>function **set**(year: **number**, month: **number**, date:**number**, hour?: **number**, minute?: **number**, second?: **number**);<br/>function setTimeZone(timezone: **string**);<br/>function getTimeZone(): **string**;<br/>function getFirstDayOfWeek(): **number**;<br/>function setFirstDayOfWeek(value: **number**);<br/>function getMinimalDaysInFirstWeek(): **number**;<br/>function setMinimalDaysInFirstWeek(value: **number**);<br/>function **get**(field: **string**): **number**;<br/>function getDisplayName(locale: **string**): **string**;<br/>function isWeekend(date?: Date): boolean;<br/>function **export** **function** getCalendar(locale: **string**, **type**?: **string**): Calendar; | 新增 | 新增日历接口 |
| 全球化-I18N | **function** isRTL(locale: **string**): boolean; | 新增 | 判断区域语言是否是从右到左语言 |
| 全球化-I18N | **function** getLineInstance(locale: **string**): BreakIterator;<br/>function current(): **number**;<br/>function first(): **number**;<br/>function last(): **number**;<br/>function next(index?: **number**): **number**;<br/>function previous(): **number**;<br/>function setLineBreakText(text: **string**): **void**;<br/>function following(offset: **number**): **number**;<br/>function getLineBreakText(): **string**;<br/>function isBoundary(offset: **number**): boolean; | 新增 | 新增断词换行接口 |
| 全球化-I18N | function getInstance(locale?:**string**): IndexUtil;<br/>function getIndexList(): Array<**string**>; | 新增 | 新增获取字母表索引接口 |
| 全球化-I18N | function addLocale(locale: **string**);<br/>function getIndex(text: **string**): **string**;<br/>function isDigit(char: **string**): boolean;<br/>function isSpaceChar(char: **string**): boolean;<br/>function isWhitespace(char: **string**): boolean;<br/>function isRTL(char: **string**): boolean;<br/>function isIdeograph(char: **string**): boolean;<br/>function isLetter(char: **string**): boolean;<br/>function isLowerCase(char: **string**): boolean;<br/>function isUpperCase(char: **string**): boolean;<br/>function getType(char: **string**): **string**; | 新增 | 新增获取字符属性接口 |
| 事件通知-DoNotDisturbDate | type: notification.DoNotDisturbType | 新增 | 免打扰设置的时间类型 |
| 事件通知-DoNotDisturbDate | begin: Date | 新增 | 免打扰设置的起点时间 |
| 事件通知-DoNotDisturbDate | end: Date | 新增 | 免打扰设置的终点时间 |
| 事件通知-DoNotDisturbDate | export enum DoNotDisturbType {<br/> TYPE_NONE = 0, // 非通知勿扰类型<br/> TYPE_ONCE = 1, // 以设置时间段一次执行勿扰<br/> TYPE_DAILY = 2, // 以设置时间段(只看小时和分钟)每天执行勿扰<br/> TYPE_CLEARLY = 3, // 以设置时间段(明确年月日时分)执行勿扰<br/>} | 新增 | 免打扰时间类型 |
| 事件通知-notification | function setDoNotDisturbDate(date DoNotDisturbDate, callback: AsyncCallback<void>): void | 新增 | 设置免打扰时间接口 |
| 事件通知-notification | function setDoNotDisturbDate(date DoNotDisturbDate): Promise<void> | 新增 | 设置免打扰时间接口 |
| 事件通知-notification | function getDoNotDisturbDate(callback: AsyncCallback<DoNotDisturbDate>): void | 新增 | 查询免打扰时间接口 |
| 事件通知-notification | function getDoNotDisturbDate(): Promise<DoNotDisturbDate> | 新增 | 查询免打扰时间接口 |
| 事件通知-notification | function supportDoNotDisturbMode(callback: AsyncCallback<boolean>): void | 新增 | 是否支持勿扰模式功能 |
| 事件通知-notification | function supportDoNotDisturbMode(): Promise<boolean> | 新增 | 是否支持勿扰模式功能 |
| 事件通知-notification | function cancelGroup(groupName: string, callback: AsyncCallback<void>): void | 新增 | 取消本应用指定组通知 |
| 事件通知-notification | function cancelGroup(groupName: string): Promise<void> | 新增 | 取消本应用指定组通知 |
| 事件通知-notification | function removeGroupByBundle(bundle: BundleOption, groupName: string, callback: AsyncCallback<void>): void | 新增 | 删除指定应用指定组通知 |
| 事件通知-notification | function removeGroupByBundle(bundle: BundleOption, groupName: string): Promise<void> | 新增 | 删除指定应用指定组通知 |
| 事件通知-NotificationSubscriber | onDoNotDisturbDateChange?:(mode: notification.DoNotDisturbDate) => void | 新增 | 免打扰设置信息变更后的通知给订阅者 |
| 事件通知-NotificationRequest | smallIcon?: image.PixelMap | 新增 | 小图标 |
| 事件通知-NotificationRequest | largeIcon?: image.PixelMap; | 新增 | 大图标 |
| 事件通知-NotificationRequest | groupName?: string; | 新增 | 通知分组名称 |
| 事件通知-NotificationUserInput | | 新增 | 用户输入对象 |
| 事件通知-NotificationUserInput | inputKey: string | 新增 | 用户输入时用于标识此输入的key |
| 事件通知-NotificationActionButton | userInput?: NotificationUserInput | 新增 | 用户输入对象实例 |
| 事件通知-emitter | function on(event: InnerEvent, callback: Callback<EventData>): void | 新增 | 持续订阅某个事件以及接收事件的回调处理 |
| 事件通知-emitter | function once(event: InnerEvent, callback: Callback<EventData>): void | 新增 | 单次订阅某个事件以及接收事件的回调处理,接收到回调处理后自动取消订阅 |
| 事件通知-emitter | function off(eventId: number): void | 新增 | 取消订阅某个事件 |
| 事件通知-emitter | function emit(event: InnerEvent, data?: EventData): void | 新增 | 发送一个事件到事件队列 |
| 分布式文件-statfs | function getFreeBytes(path: string, callback: AsyncCallback<number>): void | 新增 | 以callback形式异步获取设备剩余空间,单位为字节 |
| 分布式文件-statfs | function getFreeBytes(path: string): Promise<number> | 新增 | 以promise形式异步获取设备剩余空间,单位为字节 |
| 分布式文件-statfs | function getTotalBytes(path: string, callback: AsyncCallback<number>): void | 新增 | 以callback形式异步获取设备总空间,单位为字节 |
| 分布式文件-statfs | function getTotalBytes(path: string): Promise<number> | 新增 | 以promise形式异步获取设备总空间,单位为字节 |
| 分布式任务调度-featureAbility | function continueAbility(options: ContinueAbilityOptions, callback: AsyncCallback<void>): void;<br/>function continueAbility(options: ContinueAbilityOptions): Promise<void>; | 新增 | - |
| 语言编译运行时-URI | constructor(uri: string); | 新增 | |
| 语言编译运行时-URI | toString(): string | 新增 | |
| 语言编译运行时-URI | equals(other: URI): boolean; | 新增 | |
| 语言编译运行时-URI | checkIsAbsolute(): boolean; | 新增 | |
| 语言编译运行时-URI | normalize(): URI; | 新增 | |
| 语言编译运行时-URI | scheme: string; | 新增 | |
| 语言编译运行时-URI | userinfo: string; | 新增 | |
| 语言编译运行时-URI | host: string; | 新增 | |
| 语言编译运行时-URI | port: string; | 新增 | |
| 语言编译运行时-URI | path: string; | 新增 | |
| 语言编译运行时-URI | query: string; | 新增 | |
| 语言编译运行时-URI | query: string; | 新增 | |
| 语言编译运行时-URI | authority: string; | 新增 | |
| 语言编译运行时-URI | ssp: string; | 新增 | |
| 语言编译运行时-RationalNumber | constructor(numerator: number, denominator: number); | 新增 | |
| 语言编译运行时-RationalNumber | static createRationalFromString(rationalString: string): RationalNumber; | 新增 | |
| 语言编译运行时-RationalNumber | compareTo(another :RationalNumber): number; | 新增 | |
| 语言编译运行时-RationalNumber | equals(obj: Object): boolean; | 新增 | |
| 语言编译运行时-RationalNumber | valueOf(): number; | 新增 | |
| 语言编译运行时-RationalNumber | static getCommonDivisor(number1: number, number2: number): number; | 新增 | |
| 语言编译运行时-RationalNumber | getDenominator(): number; | 新增 | |
| 语言编译运行时-RationalNumber | getNumerator(): number; | 新增 | |
| 语言编译运行时-RationalNumber | isFinite() : boolean; | 新增 | |
| 语言编译运行时-RationalNumber | isNaN(): boolean; | 新增 | |
| 语言编译运行时-RationalNumber | isZero(): boolean; | 新增 | |
| 语言编译运行时-RationalNumber | toString(): string; | 新增 | |
| 语言编译运行时-LruBuffer | constructor(capacity?:number); | 新增 | |
| 语言编译运行时-LruBuffer | updateCapacity(newCapacity: number):void | 新增 | |
| 语言编译运行时-LruBuffer | toString():string | 新增 | |
| 语言编译运行时-LruBuffer | length:number | 新增 | |
| 语言编译运行时-LruBuffer | getCapacity(): number; | 新增 | |
| 语言编译运行时-LruBuffer | clear(): void; | 新增 | |
| 语言编译运行时-LruBuffer | getCreateCount(): number; | 新增 | |
| 语言编译运行时-LruBuffer | getMissCount(): number; | 新增 | |
| 语言编译运行时-LruBuffer | getRemovalCount(): number; | 新增 | |
| 语言编译运行时-LruBuffer | getMatchCount(): number; | 新增 | |
| 语言编译运行时-LruBuffer | getPutCount(): number; | 新增 | |
| 语言编译运行时-LruBuffer | isEmpty(): boolean; | 新增 | |
| 语言编译运行时-LruBuffer | get(key: K): V \| undefined; | 新增 | |
| 语言编译运行时-LruBuffer | put(key: K, value: V): V; | 新增 | |
| 语言编译运行时-LruBuffer | values(): V[]; | 新增 | |
| 语言编译运行时-LruBuffer | keys(): K[]; | 新增 | |
| 语言编译运行时-LruBuffer | remove(key: K): V \| undefined; | 新增 | |
| 语言编译运行时-LruBuffer | afterRemoval(isEvict: boolean, key: K, value: V, newValue: V): void; | 新增 | |
| 语言编译运行时-LruBuffer | contains(key: K): boolean; | 新增 | |
| 语言编译运行时-LruBuffer | createDefault(key: K): V; | 新增 | |
| 语言编译运行时-LruBuffer | entries(): IterableIterator<[K, V]>; | 新增 | |
| 语言编译运行时-LruBuffer | [Symbol.iterator](): IterableIterator<[K, V]>; | 新增 | |
| 语言编译运行时-Scope | constructor(lowerObj: ScopeType, upperObj: ScopeType); | 新增 | |
| 语言编译运行时-Scope | toString(): string; | 新增 | |
| 语言编译运行时-Scope | intersect(range: Scope): Scope; | 新增 | |
| 语言编译运行时-Scope | intersect(lowerObj: ScopeType, upperObj: ScopeType): Scope; | 新增 | |
| 语言编译运行时-Scope | getUpper(): ScopeType; | 新增 | |
| 语言编译运行时-Scope | getLower(): ScopeType; | 新增 | |
| 语言编译运行时-Scope | expand(lowerObj: ScopeType, upperObj: ScopeType): Scope; | 新增 | |
| 语言编译运行时-Scope | expand(range: Scope): Scope; | 新增 | |
| 语言编译运行时-Scope | expand(value: ScopeType): Scope; | 新增 | |
| 语言编译运行时-Scope | contains(value: ScopeType): boolean; | 新增 | |
| 语言编译运行时-Scope | contains(range: Scope): boolean; | 新增 | |
| 语言编译运行时-Scope | clamp(value: ScopeType): ScopeType; | 新增 | |
| 语言编译运行时-Base64 | constructor(); | 新增 | |
| 语言编译运行时-Base64 | encodeSync(src: Uint8Array): Uint8Array; | 新增 | |
| 语言编译运行时-Base64 | encodeToStringSync(src: Uint8Array): string; | 新增 | |
| 语言编译运行时-Base64 | decodeSync(src: Uint8Array \| string): Uint8Array; | 新增 | |
| 语言编译运行时-Base64 | encode(src: Uint8Array): Promise<Uint8Array>; | 新增 | |
| 语言编译运行时-Base64 | encodeToString(src: Uint8Array): Promise<string>; | 新增 | |
| 语言编译运行时-Base64 | decode(src: Uint8Array \| string): Promise<Uint8Array>; | 新增 | |
| 语言编译运行时-types | constructor(); | 新增 | |
| 语言编译运行时-types | isAnyArrayBuffer(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isArrayBufferView(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isArgumentsObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isArrayBuffer(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isAsyncFunction(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isBigInt64Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isBigUint64Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isBooleanObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isBoxedPrimitive(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isDataView(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isDate(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isExternal(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isFloat32Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isFloat64Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isGeneratorFunction(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isGeneratorObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isInt8Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isInt16Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isInt32Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isMap(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isMapIterator(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isModuleNamespaceObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isNativeError(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isNumberObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isPromise(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isProxy(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isRegExp(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isSet(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isSetIterator(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isSharedArrayBuffer(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isStringObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isSymbolObject(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isTypedArray(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isUint8Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isUint8ClampedArray(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isUint16Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isUint32Array(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isWeakMap(value: Object): boolean; | 新增 | |
| 语言编译运行时-types | isWeakSet(value: Object): boolean; | 新增 | |
| 语言编译运行时-process | const tid: number; | 新增 | |
| 语言编译运行时-process | function isIsolatedProcess(): boolean; | 新增 | |
| 语言编译运行时-process | function isAppUid(v: number): boolean; | 新增 | |
| 语言编译运行时-process | function is64Bit(): boolean; | 新增 | |
| 语言编译运行时-process | function getUidForName(v: string): number; | 新增 | |
| 语言编译运行时-process | function getThreadPriority(v: number): number; | 新增 | |
| 语言编译运行时-process | function getStartRealtime(): number; | 新增 | |
| 语言编译运行时-process | function getAvailableCores(): number[]; | 新增 | |
| 语言编译运行时-process | function getPastCpuTime(): number; | 新增 | |
| 语言编译运行时-process | function getSystemConfig(name: number): number; | 新增 | |
| 语言编译运行时-process | function getEnvironmentVar(name: string): string; | 新增 | |
| 语言编译运行时-ConvertOptions | trim: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreDeclaration?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreInstruction?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreAttributes?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreComment?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreCdata?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreDoctype?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | ignoreText?: boolean; | 新增 | |
| 语言编译运行时-ConvertOptions | declarationKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | instructionKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | attributesKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | textKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | cdataKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | doctypeKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | commentKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | parentKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | typeKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | nameKey: string; | 新增 | |
| 语言编译运行时-ConvertOptions | elementsKey: string; | 新增 | |
| 语言编译运行时-ConvertXML | convert(xml: string, options?: ConvertOptions) : Object; | 新增 | |
| 语言编译运行时-XmlSerializer | constructor(buffer: ArrayBuffer \| DataView, encoding?: string); | 新增 | |
| 语言编译运行时-XmlSerializer | setAttributes(name: string, value: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | addEmptyElement(name: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | setDeclaration(): void; | 新增 | |
| 语言编译运行时-XmlSerializer | startElement(name: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | endElement(): void; | 新增 | |
| 语言编译运行时-XmlSerializer | setNamespace(prefix: string, namespace: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | setCommnet(text: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | setCData(text: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | setText(text: string): void; | 新增 | |
| 语言编译运行时-XmlSerializer | setDocType(text: string): void; | 新增 | |
| 语言编译运行时-ParseOptions | supportDoctype?: boolean; | 新增 | |
| 语言编译运行时-ParseOptions | ignoreNameSpace?: boolean; | 新增 | |
| 语言编译运行时-ParseOptions | tagValueCallbackFunction?: (name: string, value: string) => boolean; | 新增 | |
| 语言编译运行时-ParseOptions | attributeValueCallbackFunction?: (name: string, value: string) => boolean; | 新增 | |
| 语言编译运行时-ParseOptions | tokenValueCallbackFunction?: (eventType: EventType, value: ParseInfo) => boolean; | 新增 | |
| 帐号-account.appAccount | createAppAccountManager | 新增 | 获取实例 |
| 帐号-account.appAccount | addAccount(name: string, callback: AsyncCallback<void>): void;<br/>addAccount(name: string, extraInfo: string, callback: AsyncCallback<void>): void;<br/>addAccount(name: string, extraInfo?: string): Promise<void>; | 新增 | 添加应用帐户 |
| 帐号-account.appAccount | deleteAccount(name: string, callback: AsyncCallback<void>): void;<br/>deleteAccount(name: string): Promise<void>; | 新增 | 删除应用帐户 |
| 帐号-account.appAccount | disableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void;<br/>disableAppAccess(name: string, bundleName: string): Promise<void>; | 新增 | 使指定的package拒绝访问给定的应用帐号 |
| 帐号-account.appAccount | enableAppAccess(name: string, bundleName: string, callback: AsyncCallback<void>): void;<br/>enableAppAccess(name: string, bundleName: string): Promise<void>; | 新增 | 使指定的package允许访问给定的应用帐号 |
| 帐号-account.appAccount | checkAppAccountSyncEnable(name: string, callback: AsyncCallback<boolean>): void;<br/>checkAppAccountSyncEnable(name: string): Promise<boolean>; | 新增 | 检查指定的应用帐号是否允许应用程序同步数据 |
| 帐号-account.appAccount | setAccountCredential(name: string, credentialType: string, credential: string,<br/> callback: AsyncCallback<void>): void;<br/>setAccountCredential(name: string, credentialType: string, credential: string): Promise<void>; | 新增 | 设置指定应用程序帐号的认证凭据 |
| 帐号-account.appAccount | setAccountExtraInfo(name: string, extraInfo: string, callback: AsyncCallback<void>): void;<br/>setAccountExtraInfo(name: string, extraInfo: string): Promise<void>; | 新增 | 设置指定应用帐号的附加信息 |
| 帐号-account.appAccount | setAppAccountSyncEnable(name: string, isEnable: boolean, callback: AsyncCallback<void>): void;<br/>setAppAccountSyncEnable(name: string, isEnable: boolean): Promise<void>; | 新增 | 设置指定的应用程序帐号是否允许应用程序同步数据 |
| 帐号-account.appAccount | setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback<void>): void;<br/>setAssociatedData(name: string, key: string, value: string): Promise<void>; | 新增 | 设置应用帐号关联信息 |
| 帐号-account.appAccount | getAllAccessibleAccounts(callback: AsyncCallback<Array<AppAccountInfo>>): void;<br/>getAllAccessibleAccounts(): Promise<Array<AppAccountInfo>>; | 新增 | 获取本应用帐号信息和已授权给本应用的第三方应用帐号的信息 |
| 帐号-account.appAccount | getAllAccounts(owner: string, callback: AsyncCallback<Array<AppAccountInfo>>): void;<br/>getAllAccounts(owner: string): Promise<Array<AppAccountInfo>>; | 新增 | 获取执行应用下全部帐号信息 |
| 帐号-account.appAccount | getAccountCredential(name: string, credentialType: string, callback: AsyncCallback<string>): void;<br/>getAccountCredential(name: string, credentialType: string): Promise<string>; | 新增 | 获取指定应用程序帐号的认证凭据 |
| 帐号-account.appAccount | getAccountExtraInfo(name: string, callback: AsyncCallback<string>): void;<br/>getAccountExtraInfo(name: string): Promise<string>; | 新增 | 获取应用帐号附加信息 |
| 帐号-account.appAccount | getAssociatedData(name: string, key: string, callback: AsyncCallback<string>): void;<br/>getAssociatedData(name: string, key: string): Promise<string>; | 新增 | 获取应用帐号关联信息 |
| 帐号-account.appAccount| on(type: 'change', owners: Array<string>, callback: Callback<Array<AppAccountInfo>>): void; | 新增 | 订阅指定应用帐号的更改事件 |
| 帐号-account.appAccount | off(type: 'change', callback?: Callback<void>): void; | 新增 | 取消订阅应用帐号的更改事件 |
| 帐号-account.appAccount | interface AppAccountInfo | 新增 | 应用帐号信息 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: AsyncCallback<AccelerometerResponse>,options?: Options): void | 新增 | 监听加速度传感器的数据变化 |
| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION,callback:AsyncCallback<LinearAccelerometerResponse>, options?: Options): void | 新增 | 监听线性加速度传感器的数据变化 |
| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED,callback:AsyncCallback<AccelerometerUncalibratedResponse>, options?: Options): void | 新增 | 监听未校准加速度计传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback: AsyncCallback<GravityResponse>,options?: Options): void | 新增 | 监听重力传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback: AsyncCallback<GyroscopeResponse>, options?: Options): void | 新增 | 监听陀螺仪传感器的数据变化 |
| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED,callback:AsyncCallback<GyroscopeUncalibratedResponse>, options?: Options): void | 新增 | 监听未校准陀螺仪传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback: AsyncCallback<SignificantMotionResponse>, options?: Options): void | 新增 | 监听大幅动作传感器数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: AsyncCallback<PedometerDetectResponse>, options?: Options): void | 新增 | 监听计步检测传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback: AsyncCallback<PedometerResponse>, options?: Options): void | 新增 | 监听计步传感器的数据变化 |
| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE,callback:AsyncCallback<AmbientTemperatureResponse>, options?: Options): void | 新增 | 监听环境温度传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback: AsyncCallback<MagneticFieldResponse>,options?: Options): void | 新增 | 监听磁场传感器的数据变化 |
| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED,callback:AsyncCallback<MagneticFieldUncalibratedResponse>, options: Options): void | 新增 | 监听未校准磁场传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback: AsyncCallback<ProximityResponse>,options?: Options): void | 新增 | 监听接近光传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback: AsyncCallback<HumidityResponse>,options?: Options): void | 新增 | 监听湿度传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback: AsyncCallback<BarometerResponse>,options?: Options): void | 新增 | 监听气压计传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_HALL, callback: AsyncCallback<HallResponse>, options?: Options): void | 新增 | 监听霍尔传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback: AsyncCallback<LightResponse>, options?: Options): void | 新增 | 监听环境光传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback: AsyncCallback<OrientationResponse>, options?: Options): void | 新增 | 监听方向传感器的数据变化 |
| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR,callback:AsyncCallback<RotationVectorResponse>,options?: Options): void | 新增 | 监听旋转矢量传感器的数据变化 |
| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback: AsyncCallback<WearDetectionResponse>,options?: Options): void | 新增 | 监听佩戴检测传感器的数据变化 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: AsyncCallback<AccelerometerResponse>): void | 新增 | 监听加速度传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION,callback:AsyncCallback<LinearAccelerometerResponse>): void | 新增 | 监听线性加速度传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED,callback:AsyncCallback<AccelerometerUncalibratedResponse>): void | 新增 | 监听未校准加速度计传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback: AsyncCallback<GravityResponse>): void | 新增 | 监听重力传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback: AsyncCallback<GyroscopeResponse>): void | 新增 | 监听陀螺仪传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED,callback:AsyncCallback<GyroscopeUncalibratedResponse>, options?: Options): void | 新增 | 监听未校准陀螺仪传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback: AsyncCallback<SignificantMotionResponse>): void | 新增 | 监听大幅动作传感器数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: AsyncCallback<PedometerDetectResponse>): void | 新增 | 监听计步检测传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback: AsyncCallback<PedometerResponse>): void | 新增 | 监听计步传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE,callback:AsyncCallback<AmbientTemperatureResponse>): void | 新增 | 监听环境温度传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback: AsyncCallback<MagneticFieldResponse>): void | 新增 | 监听磁场传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED,callback:AsyncCallback<MagneticFieldUncalibratedResponse>): void | 新增 | 监听未校准磁场传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback: AsyncCallback<ProximityResponse>): void | 新增 | 监听接近光传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback: AsyncCallback<HumidityResponse>): void | 新增 | 监听湿度传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback: AsyncCallback<BarometerResponse>): void | 新增 | 监听气压计传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_HALL, callback: AsyncCallback<HallResponse>): void | 新增 | 监听霍尔传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback: AsyncCallback<LightResponse>): void | 新增 | 监听环境光传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback: AsyncCallback<OrientationResponse>): void | 新增 | 监听方向传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR,callback:AsyncCallback<RotationVectorResponse>): void | 新增 | 监听旋转矢量传感器的数据变化一次 |
| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback: AsyncCallback<WearDetectionResponse>): void | 新增 | 监听佩戴检测传感器的数据变化一次 |
| 泛Sensor服务-sensor | off(type: SensorType, callback?: AsyncCallback<void>): void | 新增 | 取消订阅传感器数据 |
| 泛Sensor服务-sensor | getGeomagneticField(locationOptions: LocationOptions, timeMillis: number, callback: AsyncCallback<GeomagneticResponse>): void </br> getGeomagneticField(locationOptions: LocationOptions, timeMillis: number): Promise<GeomagneticResponse> | 新增 | 获取地球上特定位置的地磁场 |
| 泛Sensor服务-vibrator | vibrate(duration: number): Promise<void> </br> vibrate(duration: number, callback?: AsyncCallback<void>): void | 新增 | 按照指定持续时间触发马达振动 |
| 泛Sensor服务-vibrator | vibrate(effectId: EffectId): Promise<void> </br> vibrate(effectId: EffectId, callback?: AsyncCallback<void>): void | 新增 | 按照指定振动效果触发马达振动 |
| 泛Sensor服务-vibrator | stop(stopMode: VibratorStopMode): Promise<void> </br> stop(stopMode: VibratorStopMode, callback?: AsyncCallback<void>): void | 新增 | 停止马达振动 |
# Native API 差异报告
OpenHarmony 3.1 Beta相较于OpenHarmony 3.0 LTS版本的API变更如下:
## 标准系统接口变更
| 模块名称 | 接口名称 | 变更类型 | 变更类型 |
| ------------------ | ------------------------------------------------------------ | -------- | ------------------------------------------------- |
| bundle | napi_value ClearBundleCache(napi_env env, napi_callback_info info) | 新增 | 新增清理应用缓存接口 |
| bundle | napi_value SetApplicationEnabled(napi_env env, napi_callback_info info) | 新增 | 新增设置应用使能接口 |
| bundle | napi_value SetAbilityEnabled(napi_env env, napi_callback_info info) | 新增 | 新增设置ability使能接口 |
| innerbundlemanager | napi_value JSGetLauncherAbilityInfos(napi_env env, napi_callback_info info) | 新增 | 新增通过包名获取应用LauncherAbility接口 |
| innerbundlemanager | napi_value JSLauncherServiceOn(napi_env env, napi_callback_info info) | 新增 | 新增注册监听包状态变化接口 |
| innerbundlemanager | napi_value JSLauncherServiceOff(napi_env env, napi_callback_info info) | 新增 | 新增注销监听包状态变化接口 |
| innerbundlemanager | napi_value JSGetAllLauncherAbilityInfos(napi_env env, napi_callback_info info) | 新增 | 新增通过userId获取所有launcher上应用的ability接口 |
| innerbundlemanager | napi_value JSGetShortcutInfos(napi_env env, napi_callback_info info) | 新增 | 新增通过bundleName获取应用的shortcutInfo接口 |
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册