diff --git a/zh-cn/release-notes/OpenHarmony-v3.1-beta1.md b/zh-cn/release-notes/OpenHarmony-v3.1-beta1.md new file mode 100644 index 0000000000000000000000000000000000000000..ac4698f2bfd323291a9b34eee96c6bab7133aba3 --- /dev/null +++ b/zh-cn/release-notes/OpenHarmony-v3.1-beta1.md @@ -0,0 +1,215 @@ +# 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** 版本新增特性表 + +| 子系统名称 | 标准系统 | 轻量、小型系统 | +| -------- | -------- | -------- | +| 包管理子系统 | - I4MBSE:提供桌面包管理客户端
- I4MBSF:支持缓存清除能力
- I4MBSG:支持安装包信息查询
- I4MBSD:支持多hap包安装
- I4MBSH:支持多hap安装的签名校验
- I4MBSC:支持Module和Ability的srcPath字段 | NA | +| 分布式任务调度子系统 | -I4MBRW:SAMGR新增服务进程内的System Ability名单管控
-I4MBRV:SAMGR新增系统服务状态列表维护
-I4MBRZ:SAMGR新增全量服务列表初始化
-I4MBRY:SAMGR新增系统服务进程状态列表维护
-I4MBRX:SAMGR新增加载指定系统服务 | NA | +| DeviceProfile子系统 | -I4NY23:本地设备Profile的插入、删除、查询
-I4NY1X:远程设备Profile的查询
-I4NY1T:订阅远程Profile变化的通知
-I4NY1W:跨设备同步Profile | NA | +| 帐号子系统 | -I4MBQW:支持应用帐号的新增和删除
-I4MBQV:应用帐号基础信息约束
-I4MBQU:支持应用帐号订阅及取消订阅
-I4MBQT:支持应用帐号功能设置与内容修改
-I4MBQS:支持应用帐号信息查询
-I4IT3U:支持应用帐号基础信息管理 | NA | +| 泛sensor服务子系统 | -I3NJ96:加速度传感器数据上报
-I3NJ8H:陀螺仪传感器数据上报
-I3NJ7J:环境光传感器数据上报
-I3NJ76:磁力计传感器数据上报
-I4MBRP:地磁场偏角和倾角
-I4MBRQ:地磁场水平强度、总强度 | NA | +| USB服务子系统 | I410OZ:
- 查询已连接的USB设备列表
- 获取USB设备临时访问权限
- 设置USB设备配置、接口
- 与USB设备进行数据传输 | NA | +| 语言编译器运行时子系统 | - I4MBUK:JavaScript/TypeScript默认运行时从quickjs替换为方舟运行时。
- I4MBUJ:方舟运行时内存回收功能增强,支持并发标记算法以及并发压缩算法,支持选择部分region进行压缩GC(Partial CompressionGC),优化GC pause time减少30%。 | NA | +| 全球化子系统 | - 支持国际化特性:单复数规则、字符串排序、电话号码处理、日历&本地历法、度量衡体系和格式化、区域表示和属性、时间段格式化、字母表检索、unicode字符属性、断词换行
- 支持系统资源、rawfile资源 | NA | +| 分布式软总线子系统 | -I4FZ29:软总线提供传输ExtAPI接口
-I4FZ25:软总线支持网络切换组网 | -I4FZ29:软总线提供传输ExtAPI接口
-I4FZ25:软总线支持网络切换组网 | +| 启动子系统 | NA | -I3XGJH:init基础环境构建
-I3XGKV:sytemparameter管理
-I3XGLN:init 脚本管理
-I3XGMQ:基础权限管理
-I3XGN8:bootimage构建和加载
-I3XGKV:uevent 管理
-I3XGKV:sytemparameter管理
-I3XGNM:烧写模式支持 | +| 媒体子系统 | NA | -I4BX5Z:HiStreamer支持音频播放和控制
-I4BX8A:HiStreamer支持常见音频格式mp3/wav的播放
-I4BX9E:HiStreamer播放引擎框架需求
-I4DK89:HiStreamer插件框架需求
-I4DK8D:HiStreamer性能和DFX需求 | +| 图形子系统 | 全新设计OpenHarmony 图形栈:
新增UI框架渲染后端特性支持
新增ArkUI控件接入RenderService渲染后端 | NA | +| 内核子系统 | 内核(Linux 5.10)
-I4LUG4 CMA内存区域复用(目前仅支持Hi3516DV300,暂不支持RK平台)
-I4LX4G 支持anonymous vma命名(目前仅支持Hi3516DV300,暂不支持RK平台) | -I3ND6Y:【性能】OS内核&驱动启动优化 | +| 启动恢复子系统 | NA | -I3NTCT:Linux版本init支持热插拔 | +| 分布式数据对象管理子系统 | NA | -I4H3JJ:分布式对象支持小型系统设备 | +| 电话子系统 | NA | -I4JQ2N:提供Http JS API
-I4JQ3G:提供Http 2.0协议 | +| Misc软件服务子系统 | I4MBQE:
支持应用读取时间
支持应用读取时区
支持时间修改通知
支持时区修改通知
支持分钟变化通知 | NA | +| 编译构建子系统 | I4K7E3:支持使用统一的编译命令作为编译入口
- I4KCNB:支持使用统一的gn模板 | -I4MBQN:支持统一的编译入口、支持使用build.sh编译轻量、小型系统
-I4MBQP:支持统一的编译流程
-I4MBQR:支持统一的产品配置 | +| 文件存储子系统 | -I4MBS2:statfs获取设备总空间与剩余空间JS接口 | NA | +| 驱动子系统 | -I4L3KK:传感器器件驱动能力增强,支持传感器采样率动态配置,三轴方向静态可配置,环境光增益调节。
-I4L3LF:传感器驱动模型能力增强,支持传感器HDI跨进程服务获取和调用。
-I4MBTS:HDF-Input设备能力丰富,支持摇杆设备数据上报。
-I4MBTR:Display HDI接口针对标准系统的参考实现,针对DRM显示架构,提供针对标准系统的Display HDI默认参考实现,有助于厂商参考适配HDI。
-I4HPR7:提供hcs宏式解析机制,编译时使用hc-gen工具把驱动的配置参数解析为宏定义参数,驱动通过hcs宏格式的接口访问宏定义参数。
-I4KVJQ:支持linux/liteos内核系统级休眠唤醒。
-I4L3ZZF:支持同步/异步电源管理调用,提供同步/异步的管理HDF设备进入休眠或者被唤醒的机制。 | -I4L3KK:传感器器件驱动能力增强,支持传感器采样率动态配置,三轴方向静态可配置,环境光增益调节。
-HDF-Input设备能力丰富(linux系统),支持摇杆设备数据上报。
-I4HPR7:提供hcs宏式解析机制,编译时使用hc-gen工具把驱动的配置参数解析为宏定义参数,驱动通过hcs宏格式的接口访问宏定义参数。
-I4KVJQ:支持linux/liteos内核系统级休眠唤醒。
-I4L3ZZF:支持同步/异步电源管理调用,提供同步/异步的管理HDF设备进入休眠或者被唤醒的机制。 | +| ArkUI子系统 | - I4MBUY:事件中增加Target获取尺寸
- I4MBUZ:Swiper组件支持设置缓存cache
- I4MBV1:Image组件支持同步、异步渲染设置
- I4MBV3:样式设置特性增加组件多态样式设置
- I4MBV5:字母索引条组件增加提示菜单内容扩展
- I4MBV6:组件自定义特性增加自定义容器组件规格
- I4MBV7:滚动条样式自定义能力
- I4MBV8:Swiper组件新增切换禁用规格
- I4MBV9:Tabs组件新增TabBar内容自定义规格
- I4MBVA:Navigation组件新增标题栏设置规格
- I4MBVB:工具栏组件增加工具栏显隐控制规格
- I4MBVC:工具栏组件增加内容自定义能力规格
- I4MBVD:新增SysCap声明编译特性
- I4MBVE:新增JSSDK编译特性
- I4MBVF:新增Config.json编译特性
- I4MBVG:新增断点调试特性支持单实例调试
- I4MBVH:新增attach调试特性支持单实例调试
- I4MBVI:新增声明式范式编译特性支持编译和校验规格
- I4MBVJ:新增JS模块共享编译特性
- I4MBVK:新增HAR引用和编译特性
- I4MBVL:新增NPM引用和编译特性、
- I4MBVN:纵向显示滑动条组件特性
- I4MBVO:Popup组件增加内容自定义规格
- I4MBVP:Canvas绘制能力支持
- I4MBVQ:Canvas能力增强
- I4MBVR:触摸响应热区设置
- I4MBVS:Lottie动画支持
- I4MBVT:组件尺寸获取特性
- I4MBVU:Menu组件增加内容自定义规格
- I4MBVV:Swipe手势特性
- I4MBVW:UI预览支持Inspector能力
- I4MBVX:新增非路由文件预览特性
- I4MBVY:新增NAPI预览特性
- I4MBVZ:新增声明式范式预览特性。支持基础预览规格
- I4MBW2:新增声明式范式热加载特性,支持已有节点修改规格
- I4MBW3:新增声明式范式热加载特性,支持新增节点规格
- I4MBW4:新增声明式范式热加载特性,支持删除节点规格
- I4MBW5:新增组件预览特性,支持页面组件预览规格
通用属性新增点击控制 touchable:设置组件是否可以被触摸。
基础组件新增Marquee:跑马灯组件。
基础组件新增Gauge:数据量规图表组件。
基础组件新增TextArea:多行文本输入组件。
基础组件新增TextInput:单行文本输入组件。
基础组件新增Toggle:状态组件。
容器组件新增Stepper:步骤导航器组件。
容器组件新增StepperItem:步骤导航器导航项组件。
新增全局UI方法ActionSheet:列表选择弹窗。 | NA | +| DFX子系统 | -I4MBQH:支持HiSysEvent部件,提供查询、订阅接口
-I4MBQJ:提供工具查询或者订阅系统事件
-I4MBQL:支持Hiappevent部件的C接口 | NA | +| 应用子系统 | -I4MBU1:支持Settings数据管理API
-I4MBU3:支持时间设置
- I4MBU5:支持声音管理
-I4MBU6:支持Settings数据管理
-I4MBU7:支持Settings数据默认值管理
-I4MBU8:支持Settings多设备形态差异化构建
-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 & 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 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 UI中的<video/>组件,实现视频播放。可以通过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) | <canvas/>组件可以自定义绘制图形,本示例展示了<canvas\>组件的使用方法 | JS | +| [JS页面弹窗](https://gitee.com/openharmony/app_samples/tree/master/UI/JsDialog) | JS中支持用户自定义弹窗,<dialog/>组件作为容器组件,用户可以自定义弹窗的样式和布局。本示例完成了添加和删除联系人功能,在添加和删除时使用自定义弹窗来实现。 | 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中<svg/>组件及其子组件的使用,包括 。 | 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 eTS UI,实现一个图库应用。 | eTS | +| [一次开发多端部署(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/MultiDeploymentEts) | 基于OpenHarmony eTS UI,实现一次布局,多端部署。 | eTS | +| [购物应用(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/ShoppingEts) | 基于OpenHarmony eTS 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 eTS UI转场动画,实现了页面间转场、组件内转场以及共享元素转场。 | eTS | +| [基础组件Slider的使用(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/SliderApplicationEts) | 基于OpenHarmony eTS UI,使用slider组件,实现可调节风车大小和转速的动画效果。 | eTS | +| [流式布局(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/FlowLayoutEts) | 基于OpenHarmony eTS UI,实现流式布局效果。 | eTS | +| [弹窗(eTS)](https://gitee.com/openharmony/codelabs/tree/master/ETSUI/CustomDialogEts) | 基于OpenHarmony eTS 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 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 start 失败,影响社区流水线稳定性测试 | XTS压力测试,短时间内批量安装100个应用包,低概率(2个/100个)出现应用无法启动。用户使用无影响。 | 2022/1/5 | +| [I4OLHF](https://gitee.com/openharmony/ark_js_runtime/issues/I4OLHF?from=project-issue) | 【Ark子系统】 由进程com.amsst.amsMissionSnapshotTest导致测试进程异常 | 低概率、偶现,高压力测试偶现问题。 | 2022/1/5 | +| [I4OLUK](https://gitee.com/openharmony/ark_js_runtime/issues/I4OLUK) | 【Ark子系统】 由进程com.ohos.systemui导致进程栈异常 | 低概率、偶现,高压力测试偶现问题。 | 2022/1/5 | diff --git a/zh-cn/release-notes/Readme.md b/zh-cn/release-notes/Readme.md index 25ccc11bc601261867e5b1f3ed27ebed7193f5a1..380e21455423ab71378f3a84ec7d22884aeb9cbc 100644 --- a/zh-cn/release-notes/Readme.md +++ b/zh-cn/release-notes/Readme.md @@ -1,5 +1,7 @@ # 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 diff --git a/zh-cn/release-notes/api-change/v3.1-beta/changelog-v3.1-beta.md b/zh-cn/release-notes/api-change/v3.1-beta/changelog-v3.1-beta.md new file mode 100644 index 0000000000000000000000000000000000000000..5e7ba47b26108978dcb4eb40f9e7b31aa3caf9bc --- /dev/null +++ b/zh-cn/release-notes/api-change/v3.1-beta/changelog-v3.1-beta.md @@ -0,0 +1,43 @@ +# 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 +``` + +**适配指导** + +``` +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() + }) +``` + diff --git a/zh-cn/release-notes/api-change/v3.1-beta/js-apidiff-v3.1-beta.md b/zh-cn/release-notes/api-change/v3.1-beta/js-apidiff-v3.1-beta.md new file mode 100644 index 0000000000000000000000000000000000000000..500ed00a4f3c3c305a654b5ec46d5c80c2b964e2 --- /dev/null +++ b/zh-cn/release-notes/api-change/v3.1-beta/js-apidiff-v3.1-beta.md @@ -0,0 +1,427 @@ +# 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): void | 新增 | 获取自 Unix 纪元以来经过的毫秒数。 | +| 杂散软件服务-systemTime | getCurrentTime(): Promise | 新增 | 获取自 Unix 纪元以来经过的毫秒数。 | +| 杂散软件服务-systemTime | getCurrentTimeNs(callback: AsyncCallback): void | 新增 | 获取自 Unix 纪元以来经过的纳秒数。 | +| 杂散软件服务-systemTime | getCurrentTimeNs(): Promise | 新增 | 获取自 Unix 纪元以来经过的纳秒数。 | +| 杂散软件服务-systemTime | getRealActiveTime(callback: AsyncCallback): void | 新增 | 获取自系统启动以来经过的毫秒数,不包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealActiveTime(): Promise | 新增 | 获取自系统启动以来经过的毫秒数,不包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealActiveTimeNs(callback: AsyncCallback): void | 新增 | 获取自系统启动以来经过的纳秒数,不包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealActiveTimeNs(): Promise | 新增 | 获取自系统启动以来经过的纳秒数,不包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealTime(callback: AsyncCallback): void | 新增 | 获取自系统启动以来经过的毫秒数,包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealTime(): Promise | 新增 | 获取自系统启动以来经过的毫秒数,包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealTimeNs(callback: AsyncCallback): void | 新增 | 获取自系统启动以来经过的纳秒数,包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getRealTimeNs(): Promise | 新增 | 获取自系统启动以来经过的纳秒数,包括深度睡眠时间。 | +| 杂散软件服务-systemTime | getDate(callback: AsyncCallback): void | 新增 | 获取当前时间。 | +| 杂散软件服务-systemTime | getDate(): Promise | 新增 | 获取当前时间。 | +| 杂散软件服务-systemTime | getTimeZone(callback: AsyncCallback): void | 新增 | 获取系统时区。 | +| 杂散软件服务-systemTime | getTimeZone(): Promise | 新增 | 获取系统时区。 | +| 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> | 新增 | 新增获取USB设备列表的接口 | +| USB服务-usb | connectDevice(device: USBDevice): Readonly | 新增 | 新增根据{@link getDevices()}返回的设备信息打开USB设备的接口 | +| USB服务-usb | hasRight(deviceName: string): boolean | 新增 | 新增判断是否有权访问设备的接口 | +| USB服务-usb | requestRight(deviceName: string): Promise | 新增 | 新增请求给定软件包的临时权限以访问设备的接口 | +| 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 | 新增 | 新增控制传输的接口 | +| USB服务-usb | bulkTransfer(pipe: USBDevicePipe, endpoint: USBEndpoint, buffer: Uint8Array, timeout?: number): Promise | 新增 | 新增批量传输的接口 | +| USB服务-usb | closePipe(pipe: USBDevicePipe): number | 新增 | 新增关闭USBDevicePipe的接口 | +| 用户程序框架-bundle | function cleanBundleCacheFiles(bundleName: string, callback: AsyncCallback): void;
function cleanBundleCacheFiles(bundleName: string): Promise; | 新增 | 新增清理应用缓存接口 | +| 用户程序框架-bundle | function setApplicationEnabled(bundleName: string, isEnable: boolean, callback: AsyncCallback): void;
function setApplicationEnabled(bundleName: string, isEnable: boolean): Promise; | 新增 | 新增设置应用使能接口 | +| 用户程序框架-bundle | function setAbilityEnabled(info: AbilityInfo, isEnable: boolean, callback: AsyncCallback): void;
function setAbilityEnabled(info: AbilityInfo, isEnable: boolean): Promise; | 新增 | 新增设置ability使能接口 | +| 用户程序框架-bundle.innerBundleManager | function getLauncherAbilityInfos(bundleName: string, userId: number, callback: AsyncCallback>) : void;
function getLauncherAbilityInfos(bundleName: string, userId: number) : Promise>; | 新增 | 新增通过包名获取应用LauncherAbility接口 | +| 用户程序框架-bundle.innerBundleManager | function on(type:"BundleStatusChange", bundleStatusCallback : BundleStatusCallback, callback: AsyncCallback) : void;
function on(type:"BundleStatusChange", bundleStatusCallback : BundleStatusCallback): Proimise; | 新增 | 新增注册监听包状态变化接口 | +| 用户程序框架-bundle.innerBundleManager | function off(type:"BundleStatusChange", callback: AsyncCallback) : void;
function off(type:"BundleStatusChange"): Proimise; | 新增 | 新增注销监听包状态变化接口 | +| 用户程序框架-bundle.innerBundleManager | function getAllLauncherAbilityInfos(userId: number, callback: AsyncCallback>) : void;
function getAllLauncherAbilityInfos(userId: number) : Promise>; | 新增 | 新增通过userId获取所有launcher上应用的ability接口 | +| 用户程序框架-bundle.innerBundleManager | function getShortcutInfos(bundleName :string, callback: AsyncCallback>) : void;
function getShortcutInfos(bundleName : string) : Promise>; | 新增 | 新增通过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 {
errCode: number;

code: number;

data: MessageParcel;

reply: MessageParcel;
} | 新增 | - | +| 分布式软总线-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 | 新增 | - | +| 分布式软总线-rpc.IRemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback): 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 | 新增 | - | +| 分布式软总线-rpc.RemoteProxy | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback): 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 | 新增 | - | +| 分布式软总线-rpc.RemoteObject | sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: MessageOption, callback: AsyncCallback): 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;
function getLinkedInfo(callback: AsyncCallback): 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;| 新增 | - | +| 分布式软总线-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;| 新增 | - | +| 分布式软总线-wifi | function on(type: "wifiStateChange", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "wifiStateChange", callback?: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function on(type: "wifiConnectionChange", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "wifiConnectionChange", callback?: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function on(type: "wifiScanStateChange", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "wifiScanStateChange", callback?: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function on(type: "wifiRssiChange", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "wifiRssiChange", callback?: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function on(type: "hotspotStateChange", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "hotspotStateChange", callback?: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function on(type: "hotspotStaJoin", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "hotspotStaJoin", callback?: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function on(type: "hotspotStaLeave", callback: Callback): void;| 新增 | - | +| 分布式软总线-wifi | function off(type: "hotspotStaLeave", callback?: Callback): void;| 新增 | - | +| 全球化-resourceManager | getRawFile(path: string, callback: AsyncCallback);
getRawFile(path: string): Promise;| 新增 | - | +| 全球化-Intl | RelativeTimeFormat.constructor(); | 新增 | 构造函数 | +| 全球化-Intl | RelativeTimeFormat.constructor(locale: string \| Array, options?: RelativeTimeFormatInputOptions); | 新增 | 构造函数 | +| 全球化-Intl | RelativeTimeFormat.format(value: number, unit: string): string; | 新增 | 相对时间格式化 | +| 全球化-Intl | RelativeTimeFormat.formatToParts(value: number, unit: string): Array; | 新增 | 相对时间格式化,结果分为多部份分别存储 | +| 全球化-Intl | RelativeTimeFormat.formatToParts(value: number, unit: string): Array; | 新增 | 相对时间格式化,结果分为多部份分别存储 | +| 全球化-Intl | PluralRules.constructor(); | 新增 | 构造函数 | +| 全球化-Intl | PluralRules.constructor(locale: string \| Array, options?: PluralRulesOptions); | 新增 | 构造函数 | +| 全球化-Intl | PluralRules.select(n: number): string; | 新增 | 计算一个数字的单复数类别 | +| 全球化-Intl | Collator.constructor(); | 新增 | 构造函数 | +| 全球化-Intl | Collator.constructor(locale: string \| Array, 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);
function isValidNumber(**number**: **string**): boolean;
function format(**number**: **string**): **string**; | 新增 | 新增电话号码格式化接口 | +| 全球化-I18N | function setTime(date: Date);
function setTime(time: **number**);
function **set**(year: **number**, month: **number**, date:**number**, hour?: **number**, minute?: **number**, second?: **number**);
function setTimeZone(timezone: **string**);
function getTimeZone(): **string**;
function getFirstDayOfWeek(): **number**;
function setFirstDayOfWeek(value: **number**);
function getMinimalDaysInFirstWeek(): **number**;
function setMinimalDaysInFirstWeek(value: **number**);
function **get**(field: **string**): **number**;
function getDisplayName(locale: **string**): **string**;
function isWeekend(date?: Date): boolean;
function **export** **function** getCalendar(locale: **string**, **type**?: **string**): Calendar; | 新增 | 新增日历接口 | +| 全球化-I18N | **function** isRTL(locale: **string**): boolean; | 新增 | 判断区域语言是否是从右到左语言 | +| 全球化-I18N | **function** getLineInstance(locale: **string**): BreakIterator;
function current(): **number**;
function first(): **number**;
function last(): **number**;
function next(index?: **number**): **number**;
function previous(): **number**;
function setLineBreakText(text: **string**): **void**;
function following(offset: **number**): **number**;
function getLineBreakText(): **string**;
function isBoundary(offset: **number**): boolean; | 新增 | 新增断词换行接口 | +| 全球化-I18N | function getInstance(locale?:**string**): IndexUtil;
function getIndexList(): Array<**string**>; | 新增 | 新增获取字母表索引接口 | +| 全球化-I18N | function addLocale(locale: **string**);
function getIndex(text: **string**): **string**;
function isDigit(char: **string**): boolean;
function isSpaceChar(char: **string**): boolean;
function isWhitespace(char: **string**): boolean;
function isRTL(char: **string**): boolean;
function isIdeograph(char: **string**): boolean;
function isLetter(char: **string**): boolean;
function isLowerCase(char: **string**): boolean;
function isUpperCase(char: **string**): boolean;
function getType(char: **string**): **string**; | 新增 | 新增获取字符属性接口 | +| 事件通知-DoNotDisturbDate | type: notification.DoNotDisturbType | 新增 | 免打扰设置的时间类型 | +| 事件通知-DoNotDisturbDate | begin: Date | 新增 | 免打扰设置的起点时间 | +| 事件通知-DoNotDisturbDate | end: Date | 新增 | 免打扰设置的终点时间 | +| 事件通知-DoNotDisturbDate | export enum DoNotDisturbType {
TYPE_NONE = 0, // 非通知勿扰类型
TYPE_ONCE = 1, // 以设置时间段一次执行勿扰
TYPE_DAILY = 2, // 以设置时间段(只看小时和分钟)每天执行勿扰
TYPE_CLEARLY = 3, // 以设置时间段(明确年月日时分)执行勿扰
} | 新增 | 免打扰时间类型 | +| 事件通知-notification | function setDoNotDisturbDate(date DoNotDisturbDate, callback: AsyncCallback): void | 新增 | 设置免打扰时间接口 | +| 事件通知-notification | function setDoNotDisturbDate(date DoNotDisturbDate): Promise | 新增 | 设置免打扰时间接口 | +| 事件通知-notification | function getDoNotDisturbDate(callback: AsyncCallback): void | 新增 | 查询免打扰时间接口 | +| 事件通知-notification | function getDoNotDisturbDate(): Promise | 新增 | 查询免打扰时间接口 | +| 事件通知-notification | function supportDoNotDisturbMode(callback: AsyncCallback): void | 新增 | 是否支持勿扰模式功能 | +| 事件通知-notification | function supportDoNotDisturbMode(): Promise | 新增 | 是否支持勿扰模式功能 | +| 事件通知-notification | function cancelGroup(groupName: string, callback: AsyncCallback): void | 新增 | 取消本应用指定组通知 | +| 事件通知-notification | function cancelGroup(groupName: string): Promise | 新增 | 取消本应用指定组通知 | +| 事件通知-notification | function removeGroupByBundle(bundle: BundleOption, groupName: string, callback: AsyncCallback): void | 新增 | 删除指定应用指定组通知 | +| 事件通知-notification | function removeGroupByBundle(bundle: BundleOption, groupName: string): Promise | 新增 | 删除指定应用指定组通知 | +| 事件通知-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): void | 新增 | 持续订阅某个事件以及接收事件的回调处理 | +| 事件通知-emitter | function once(event: InnerEvent, callback: Callback): void | 新增 | 单次订阅某个事件以及接收事件的回调处理,接收到回调处理后自动取消订阅 | +| 事件通知-emitter | function off(eventId: number): void | 新增 | 取消订阅某个事件 | +| 事件通知-emitter | function emit(event: InnerEvent, data?: EventData): void | 新增 | 发送一个事件到事件队列 | +| 分布式文件-statfs | function getFreeBytes(path: string, callback: AsyncCallback): void | 新增 | 以callback形式异步获取设备剩余空间,单位为字节 | +| 分布式文件-statfs | function getFreeBytes(path: string): Promise | 新增 | 以promise形式异步获取设备剩余空间,单位为字节 | +| 分布式文件-statfs | function getTotalBytes(path: string, callback: AsyncCallback): void | 新增 | 以callback形式异步获取设备总空间,单位为字节 | +| 分布式文件-statfs | function getTotalBytes(path: string): Promise | 新增 | 以promise形式异步获取设备总空间,单位为字节 | +| 分布式任务调度-featureAbility | function continueAbility(options: ContinueAbilityOptions, callback: AsyncCallback): void;
function continueAbility(options: ContinueAbilityOptions): Promise; | 新增 | - | +| 语言编译运行时-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; | 新增 | | +| 语言编译运行时-Base64 | encodeToString(src: Uint8Array): Promise; | 新增 | | +| 语言编译运行时-Base64 | decode(src: Uint8Array \| string): Promise; | 新增 | | +| 语言编译运行时-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;
addAccount(name: string, extraInfo: string, callback: AsyncCallback): void;
addAccount(name: string, extraInfo?: string): Promise; | 新增 | 添加应用帐户 | +| 帐号-account.appAccount | deleteAccount(name: string, callback: AsyncCallback): void;
deleteAccount(name: string): Promise; | 新增 | 删除应用帐户 | +| 帐号-account.appAccount | disableAppAccess(name: string, bundleName: string, callback: AsyncCallback): void;
disableAppAccess(name: string, bundleName: string): Promise; | 新增 | 使指定的package拒绝访问给定的应用帐号 | +| 帐号-account.appAccount | enableAppAccess(name: string, bundleName: string, callback: AsyncCallback): void;
enableAppAccess(name: string, bundleName: string): Promise; | 新增 | 使指定的package允许访问给定的应用帐号 | +| 帐号-account.appAccount | checkAppAccountSyncEnable(name: string, callback: AsyncCallback): void;
checkAppAccountSyncEnable(name: string): Promise; | 新增 | 检查指定的应用帐号是否允许应用程序同步数据 | +| 帐号-account.appAccount | setAccountCredential(name: string, credentialType: string, credential: string,
callback: AsyncCallback): void;
setAccountCredential(name: string, credentialType: string, credential: string): Promise; | 新增 | 设置指定应用程序帐号的认证凭据 | +| 帐号-account.appAccount | setAccountExtraInfo(name: string, extraInfo: string, callback: AsyncCallback): void;
setAccountExtraInfo(name: string, extraInfo: string): Promise; | 新增 | 设置指定应用帐号的附加信息 | +| 帐号-account.appAccount | setAppAccountSyncEnable(name: string, isEnable: boolean, callback: AsyncCallback): void;
setAppAccountSyncEnable(name: string, isEnable: boolean): Promise; | 新增 | 设置指定的应用程序帐号是否允许应用程序同步数据 | +| 帐号-account.appAccount | setAssociatedData(name: string, key: string, value: string, callback: AsyncCallback): void;
setAssociatedData(name: string, key: string, value: string): Promise; | 新增 | 设置应用帐号关联信息 | +| 帐号-account.appAccount | getAllAccessibleAccounts(callback: AsyncCallback>): void;
getAllAccessibleAccounts(): Promise>; | 新增 | 获取本应用帐号信息和已授权给本应用的第三方应用帐号的信息 | +| 帐号-account.appAccount | getAllAccounts(owner: string, callback: AsyncCallback>): void;
getAllAccounts(owner: string): Promise>; | 新增 | 获取执行应用下全部帐号信息 | +| 帐号-account.appAccount | getAccountCredential(name: string, credentialType: string, callback: AsyncCallback): void;
getAccountCredential(name: string, credentialType: string): Promise; | 新增 | 获取指定应用程序帐号的认证凭据 | +| 帐号-account.appAccount | getAccountExtraInfo(name: string, callback: AsyncCallback): void;
getAccountExtraInfo(name: string): Promise; | 新增 | 获取应用帐号附加信息 | +| 帐号-account.appAccount | getAssociatedData(name: string, key: string, callback: AsyncCallback): void;
getAssociatedData(name: string, key: string): Promise; | 新增 | 获取应用帐号关联信息 | +| 帐号-account.appAccount| on(type: 'change', owners: Array, callback: Callback>): void; | 新增 | 订阅指定应用帐号的更改事件 | +| 帐号-account.appAccount | off(type: 'change', callback?: Callback): void; | 新增 | 取消订阅应用帐号的更改事件 | +| 帐号-account.appAccount | interface AppAccountInfo | 新增 | 应用帐号信息 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: AsyncCallback,options?: Options): void | 新增 | 监听加速度传感器的数据变化 | +| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION,callback:AsyncCallback, options?: Options): void | 新增 | 监听线性加速度传感器的数据变化 | +| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED,callback:AsyncCallback, options?: Options): void | 新增 | 监听未校准加速度计传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback: AsyncCallback,options?: Options): void | 新增 | 监听重力传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback: AsyncCallback, options?: Options): void | 新增 | 监听陀螺仪传感器的数据变化 | +| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED,callback:AsyncCallback, options?: Options): void | 新增 | 监听未校准陀螺仪传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback: AsyncCallback, options?: Options): void | 新增 | 监听大幅动作传感器数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: AsyncCallback, options?: Options): void | 新增 | 监听计步检测传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback: AsyncCallback, options?: Options): void | 新增 | 监听计步传感器的数据变化 | +| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE,callback:AsyncCallback, options?: Options): void | 新增 | 监听环境温度传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback: AsyncCallback,options?: Options): void | 新增 | 监听磁场传感器的数据变化 | +| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED,callback:AsyncCallback, options: Options): void | 新增 | 监听未校准磁场传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback: AsyncCallback,options?: Options): void | 新增 | 监听接近光传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback: AsyncCallback,options?: Options): void | 新增 | 监听湿度传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback: AsyncCallback,options?: Options): void | 新增 | 监听气压计传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_HALL, callback: AsyncCallback, options?: Options): void | 新增 | 监听霍尔传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback: AsyncCallback, options?: Options): void | 新增 | 监听环境光传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback: AsyncCallback, options?: Options): void | 新增 | 监听方向传感器的数据变化 | +| 泛Sensor服务-sensor | on(type:SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR,callback:AsyncCallback,options?: Options): void | 新增 | 监听旋转矢量传感器的数据变化 | +| 泛Sensor服务-sensor | on(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback: AsyncCallback,options?: Options): void | 新增 | 监听佩戴检测传感器的数据变化 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: AsyncCallback): void | 新增 | 监听加速度传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION,callback:AsyncCallback): void | 新增 | 监听线性加速度传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED,callback:AsyncCallback): void | 新增 | 监听未校准加速度计传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_GRAVITY, callback: AsyncCallback): void | 新增 | 监听重力传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_GYROSCOPE, callback: AsyncCallback): void | 新增 | 监听陀螺仪传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED,callback:AsyncCallback, options?: Options): void | 新增 | 监听未校准陀螺仪传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_SIGNIFICANT_MOTION, callback: AsyncCallback): void | 新增 | 监听大幅动作传感器数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: AsyncCallback): void | 新增 | 监听计步检测传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_PEDOMETER, callback: AsyncCallback): void | 新增 | 监听计步传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE,callback:AsyncCallback): void | 新增 | 监听环境温度传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD, callback: AsyncCallback): void | 新增 | 监听磁场传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED,callback:AsyncCallback): void | 新增 | 监听未校准磁场传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_PROXIMITY, callback: AsyncCallback): void | 新增 | 监听接近光传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_HUMIDITY, callback: AsyncCallback): void | 新增 | 监听湿度传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_BAROMETER, callback: AsyncCallback): void | 新增 | 监听气压计传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_HALL, callback: AsyncCallback): void | 新增 | 监听霍尔传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_AMBIENT_LIGHT, callback: AsyncCallback): void | 新增 | 监听环境光传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_ORIENTATION, callback: AsyncCallback): void | 新增 | 监听方向传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type:SensorType.SENSOR_TYPE_ID_ROTATION_VECTOR,callback:AsyncCallback): void | 新增 | 监听旋转矢量传感器的数据变化一次 | +| 泛Sensor服务-sensor | once(type: SensorType.SENSOR_TYPE_ID_WEAR_DETECTION, callback: AsyncCallback): void | 新增 | 监听佩戴检测传感器的数据变化一次 | +| 泛Sensor服务-sensor | off(type: SensorType, callback?: AsyncCallback): void | 新增 | 取消订阅传感器数据 | +| 泛Sensor服务-sensor | getGeomagneticField(locationOptions: LocationOptions, timeMillis: number, callback: AsyncCallback): void
getGeomagneticField(locationOptions: LocationOptions, timeMillis: number): Promise | 新增 | 获取地球上特定位置的地磁场 | +| 泛Sensor服务-vibrator | vibrate(duration: number): Promise
vibrate(duration: number, callback?: AsyncCallback): void | 新增 | 按照指定持续时间触发马达振动 | +| 泛Sensor服务-vibrator | vibrate(effectId: EffectId): Promise
vibrate(effectId: EffectId, callback?: AsyncCallback): void | 新增 | 按照指定振动效果触发马达振动 | +| 泛Sensor服务-vibrator | stop(stopMode: VibratorStopMode): Promise
stop(stopMode: VibratorStopMode, callback?: AsyncCallback): void | 新增 | 停止马达振动 | diff --git a/zh-cn/release-notes/api-change/v3.1-beta/native-apidiff-v3.1-beta.md b/zh-cn/release-notes/api-change/v3.1-beta/native-apidiff-v3.1-beta.md new file mode 100644 index 0000000000000000000000000000000000000000..822ece28142c249be145a471dee159793f03a608 --- /dev/null +++ b/zh-cn/release-notes/api-change/v3.1-beta/native-apidiff-v3.1-beta.md @@ -0,0 +1,16 @@ +# 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