# OpenHarmony 4.0 Beta2
## 版本概述
OpenHarmony 4.0版本标准系统能力持续完善:ArkUI进一步增强基础组件能力,应用框架支持ArkTS卡片代理刷新,应用包支持应用、支持原子化服务数据共享、支持企业应用的安装管理,分布式软总线支持会话级的传输能力协商,分布式数据管理UDMF(统一数据管理框架)支持跨设备拖拽场景下对分布式目录的文件临时授权、文件管理支持公共图片文件在设备端和云端进行同步,媒体进一步增强音频/媒体播放/音视频编解码能力,图形渲染库升级至Skia 0310新版本,窗口控件化能力继续增强,事件通知支持选定通知并批量删除通知,安全基础提供DSA数字签名算法能力,ArkCompiler方舟运行时支持JSContext功能、支持动态PGO功能,DFX提供统一的采集框架能力,方便开发者对应用的调试调测。
## 特性说明
### 应用框架
- 更新ArkTS卡片刷新方式,支持通过数据代理的方式刷新内容。
- ArkTS卡片支持静态卡片配置、静态图展示。
### ArkUI
- Xcomponent组件支持Texture模式绘制、popup支持位置自定义、弹框支持通过键盘ESC键逐层退出、ListItem支持长距离左滑删除手势、ArkTS/JS卡片支持渲染完成回调、Image/Text组件支持隐私遮罩、ContextMenu支持分段显示能力。
- 动画效果增强,包括:布局属性、背景图片大小位置属性、显隐属性支持隐式动效,list支持scrollToIndex动效、Tabs模糊动效、popup出现/消失动效,支持自定义动画,满足开发者多种多样动画诉求。
- 开发效率增强:支持命名路由的能力,借助此能力可针对不同页面设置不同的切换动效;轻量级ArkUI框架支持定义全局数据对象,可进行应用内页面间的数据共享。
- 全局API支持Stage模型多实例场景。
### 应用包管理
- 支持对应用分发类型和附件信息的设置和查询。
- 支持通过文件扩展名列出支持打开该文件的应用列表,实现了文件扩展名与应用的匹配关系。
- 支持企业应用的安装管理,对于证书类型为“enterprise”的应用,安装需要申请“ohos.permission.INSTALL_ENTERPRISE_BUNDLE”。
### 分布式数据管理
- UDMF(统一数据管理框架)支持跨设备拖拽场景下对分布式目录的文件临时授权。
- 提供RDBstore NDK接口 :包含增/删/改/查/事务、数据加密、数据分级保护、备份/恢复能力。
- Key-Value和分布式数据对象支持根据数据量自动选择数据同步的通道。系统会根据数据量大小自动选择蓝牙通道或基于WiFi的P2P通道进行数据的同步。
### 分布式软总线
- 支持对基于软总线连接的link信息进行管理。
- 支持会话级的传输能力协商,可通过协商确定设备间传输的能力。
### 分布式硬件
- 分布式场景下的音频录制时延性能得到优化。
- 分布式文件系统支持在以蓝牙引导的P2P连接环境下进行文件互访。
- 支持组网设备名称变化的监听。
### 文件管理
- 支持公共图片文件在设备端和云端进行同步(设备登录的帐号需开通云端服务),支持通过picker选择云端的图片。
- 支持应用定制备份恢复的目录。
- 支持公共图片的分类管理,用户可以在图库中通过相册对用户图片进行组织分类。
- 支持应用监听沙箱内的文件的增改删。
- 支持应用跨设备分享沙箱内的文件。
### 图形显示及窗口
**图形**
- 支持对选定区域取色,可选定区域后获得该区域的主色值、平均色值等参数并按需使用。
- 支持设置旋转中心在Z轴锚点的偏移,允许在旋转过程中修改渲染的锚点。
- 图形处理依赖的渲染库升级至Skia 0310新版本,提升了显示性能。
**窗口**
- 优化了display模块的参数值获取方式,从原先软件方式优化为从硬件直接获取真实值。
- 窗口控件化能力增强:窗口以控件化的方式支持窗口属性、子窗口、模态窗口、窗口效果、窗口装饰、亮灭屏流程、截屏录屏。
### 媒体
**音频**
- 支持音效框架:南向厂商可配置音效策略和加载自定义音效;应用可查询音频输出的音效模式,切换或关闭音效模式。
- 支持系统内录音能力:可根据音频场景属性筛选,录制系统内播放的音频数据。
- 支持获取音频设备显示名:播放对象详细信息内可获取当前播放输出归属的设备名。
**媒体播放**
支持音效参数配置,可以在音频框架支持音效的能力基础上进一步配置音效。
**音视频编解码**
- 支持通过Native API查询系统的音视频编解码能力。
- 支持通过Native API完成音视频封装,即将音频、视频等编码后的媒体数据,按一定的格式存储到文件里。
- 支持通过Native API完成音视频解封装,即从比特流数据中取出音频、视频等媒体帧数据。
### 事件通知
- 支持选定通知并批量删除通知。
- emitter支持取消按条件指定订阅回调能力。
### 基础通信
- WiFi支持后台扫描的能力。
- WiFi支持STA模式下的随机MAC能力。
### 网络与通信
- 支持与服务器端通过TCP Socket进行通信。
- 支持用户将数据传送到远程服务器。
- 支持HTTPS证书的管理适配。
- 支持网卡代理。
### 系统服务管理
- 支持系统服务按需启动,例如外部调用、事件触发,同时支持在设备空闲时自动退出系统服务。
- 系统服务配置格式优化,使用JSON格式替代XML格式。
### 电源
- 新增接口,支持设置系统立即进入睡眠状态。
- 新增休眠源定制能力,支持根据不同的休眠源定制事件及行为。
- 新增唤醒源定制能力,支持根据不同的唤醒源定制唤醒事件。
### 多模输入
- 支持将键盘输入设备的原始事件映射为归一化交互的意图事件,使开发者在开发应用时无需关注输入行为是来自触控还是键盘。
- 支持用户根据个人习惯设置触控板功能的个性化配置:
- 支持两种触发模式映射鼠标左键功能: 按压、轻点。
- 支持两种触发模式映射鼠标右键功能:点按左/右下角、双指点按或轻点。
- 跟踪速度:支持10档速度调节。
- 支持两种交互模式映射鼠标滚轮功能:内容随手指移动方向、内容随手指反向移动。
### 主题框架
- 锁屏管理服务支持锁屏事件回调机制、静态/动态壁纸、查询锁屏时的业务状态。
- 壁纸管理服务支持自定义壁纸、锁屏/解锁操作、重置壁纸。
### 上传下载
支持查询上传和下载的任务、任务状态信息同步和任务记录持久化、任务状态查询和异常的恢复。
### 安全
**加解密算法库框架**
- 提供DSA数字签名算法能力。
- 提供DSA、ECC、RSA密钥解析和密钥参数的获取能力。
- 提供安全随机数生成算法类型的获取能力。
- 提供SM4密钥的随机生成与转换,以及加密解密能力。
- 提供SM3密钥的HMAC和HASH的能力。
- 提供SM2密钥的随机生成与转换、签名及验签、以及加密解密能力。
**密钥管理**
- 支持HUKS密钥加密保护。
- 支持KeyAttestation公钥证书中增加对密钥所属业务身份字段。
- 支持标准HDI南向接口。
**设备互信认证**
支持在以下两种场景的设备间互信认证流程中生成假名,支持识别及和标识设备的假名化名称。
- 对使用同帐号登录的多个设备进行互信认证。
- 对非同帐号的点对点互联的两个设备进行互信认证。
### 程序访问控制
- 优化权限管理的菜单呈现,拆分媒体和文件的权限组,相应权限的授权粒度更加精细化。
- 支持treble架构下对SELinux的兼容能力。
### 帐号
- 支持帐号授权能力扩展和三方应用使用帐号授权能力。
- 支持对域帐号插件的管理,从而支持域帐号管理和认证能力。
### WebView
- W3C能力补充完善:补充Web Camera能力,以及bindContextMenu、Select、date类型input等H5标签能力。
- 支持多渲染进程的进程拆分。
- 支持文字、图片基础拖拽能力。
- 支持WebRTC的视频会议能力(不含摄像头共享)。
- 支持渲染进程独立SELinux标签,增强安全基础能力。
### ArkCompiler
- 方舟运行时支持JSContext功能;支持动态PGO功能,可采集运行期的类型和函数热点信息,并生成AP文件;支持动态import加载NAPI库。
- 方舟编译器type编译模式下前端编译工具链切换到es2abc。
- NAPI buffer、object、arraybuffer、object type接口功能补齐。
- Taskpool支持任务中断和取消,支持定义任务组(TaskGroup),支持对任务的状态和调度信息进行打点,支持超长等待的任务进行识别和恢复。
- 编译构建能力提供OpenHarmony系统user和root不同权限版本的构建,user版本能力同步支持Wukong测试工具和XTS测试能力。
- 编译工具链支持预览器上的调试能力。
### DFX
- 提供统一的采集框架能力,方便开发者对应用的调试调测。
- 提供统一的trace采集能力。
- 提供Native的HiTraceMeter打点接口。
- 性能雷达提供工具类,方便各业务模块(子系统)在业务流程上传递性能埋点记录及结算性能数据。
### 内核
代码执行权限管控能力增强,新增了以下能力:
- 支持安全内存机制。
- 提供满足不同场景的代码执行权限管控策略。
- 提供代码执行权限管控的全生命周期管理能力。
- 支持解析可执行文件获取代码段信息。
- 支持代码页的完整性保护能力。
### 驱动
- 扩展设备驱动框架提供以下能力:
- 扩展设备驱动框架基于“驱动扩展Ability(DriverExtensionAbility)”的能力,构建应用态扩展驱动包的开发、部署、安装、更新、卸载、运行能力,开放全流程生命周期管理能力。
- 支持三方设备厂商开发的非标准协议的可插拔USB设备扩展驱动包,正常安装到OpenHarmony系统。插入USB设备后,能正常识别USB设备并与扩展驱动包匹配。
- 支持三方应用通过扩展外部设备管理框架查询并绑定USB设备扩展驱动包,完成对扩展驱动包定制功能的操作。
- 相机驱动提供以下能力:
- 提供USB相机热插拔识别能力,支持开机启动检查识别和启动后热插拔识别。
- 支持USB相机的预览、拍照、录像能力,提供相机格式、分辨率查询和配置能力。
- 编解码驱动提供JPEG图片硬件解码加速能力,包括获取硬件解码信息,初始化/去初始化,解码,申请/释放buffer,提升用户浏览图片流畅度体验。
- 传感器驱动提供温湿度传感器设备驱动能力,支持小型设备温湿度器件查询,器件使能/去使能,数据查询能力,丰富智能设备传感器能力。
## 配套关系
**表1** 版本软件和工具配套关系
| 软件 | 版本 | 备注 |
| -------- | -------- | -------- |
| OpenHarmony | 4.0 Beta2 | NA |
| Public SDK | Ohos_sdk_public 4.0.9.6 (API Version 10 Beta2) | 面向应用开发者提供,不包含需要使用系统权限的系统接口。通过DevEco Studio默认获取的SDK为Public SDK。 |
| HUAWEI DevEco Studio(可选) | 4.0 Beta2 | OpenHarmony应用开发推荐使用。获取方式:
*待发布* |
| HUAWEI DevEco Device Tool(可选) | 4.0 Beta1 | OpenHarmony智能设备集成开发环境推荐使用。获取方式:
[点击跳转至下载页面](https://device.harmonyos.com/cn/develop/ide#download) |
## 源码获取
### 前提条件
1. 注册码云gitee帐号。
2. 注册码云SSH公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191)。
3. 安装[git客户端](https://gitee.com/link?target=https%3A%2F%2Fgit-scm.com%2Fbook%2Fzh%2Fv2%2F%25E8%25B5%25B7%25E6%25AD%25A5-%25E5%25AE%2589%25E8%25A3%2585-Git)和[git-lfs](https://gitee.com/vcs-all-in-one/git-lfs?_from=gitee_search#downloading)并配置用户信息。
```
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store
```
4. 安装码云repo工具,可以执行如下命令。
```
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可下载至其他目录,并将其配置到环境变量中chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
```
### 通过repo获取
**方式一(推荐)**
通过repo + ssh 下载(需注册公钥,请参考[码云帮助中心](https://gitee.com/help/articles/4191))。
- 从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入。
```
repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-4.0-Beta2 --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- 从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。
```
repo init -u git@gitee.com:openharmony/manifest.git -b refs/tags/OpenHarmony-v4.0-Beta2 --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
**方式二**
通过repo + https 下载。
- 从版本分支获取源码。可获取该版本分支的最新源码,包括版本发布后在该分支的合入。
```
repo init -u https://gitee.com/openharmony/manifest -b OpenHarmony-4.0-Beta2 --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
- 从版本发布Tag节点获取源码。可获取与版本发布时完全一致的源码。
```
repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v4.0-Beta2 --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
```
### 从镜像站点获取
**表2** 获取源码路径
| 版本源码 | **版本信息** | **下载站点** | **SHA256校验码** | **软件包容量** |
| --------------------------------------- | ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- |
| 全量代码(标准、轻量和小型系统) | 4.0 Beta2 | *待发布* | *待发布* | *待发布* |
| Hi3861解决方案(二进制) | 4.0 Beta2 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/hispark_pegasus.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/hispark_pegasus.tar.gz.sha256) | 27.5 MB |
| Hi3516解决方案-LiteOS(二进制) | 4.0 Beta2 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/hispark_taurus_LiteOS.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/hispark_taurus_LiteOS.tar.gz.sha256) | 300.9 MB |
| Hi3516解决方案-Linux(二进制) | 4.0 Beta2 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/hispark_taurus_Linux.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/hispark_taurus_Linux.tar.gz.sha256) | 192.4 MB |
| RK3568标准系统解决方案(二进制) | 4.0 Beta2 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/dayu200_standard_arm32.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/dayu200_standard_arm32.tar.gz.sha256) | 5.2 GB |
| 标准系统Public SDK包(Mac) | 4.0.9.6 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/ohos-sdk-mac-public.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/ohos-sdk-mac-public.tar.gz.sha256) | 832.3 MB |
| 标准系统Public SDK包(Mac-M1) | 4.0.9.6 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/L2-SDK-MAC-M1-PUBLIC.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/L2-SDK-MAC-M1-PUBLIC.tar.gz.sha256) | 788.4 MB |
| 标准系统Public SDK包(Windows/Linux) | 4.0.9.6 | [站点](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/ohos-sdk-windows_linux-public.tar.gz) | [SHA256校验码](https://repo.huaweicloud.com/openharmony/os/4.0-Beta2/ohos-sdk-windows_linux-public.tar.gz.sha256) | 2.0 GB |
## 更新说明
本版本在OpenHarmony 4.0 Beta1的基础上有如下变更:
### API
OpenHarmony 4.0 Beta2的API范围相比4.0 Beta1,API变更的清单请参见“[API差异报告](./api-diff/v4.0-beta2/Readme-CN.md)”。极少量接口的变更可能影响到已开发的应用(使用API 9或更早版本API开发的应用),变更影响的说明和接口的适配指导请参见“[changelogs](./changelogs/v4.0-beta2/Readme-CN.md)”。
### 特性变更
详见[版本概述](#版本概述)。
### 芯片及开发板适配
芯片及开发板适配状态请参考[SIG-Devboard](https://gitee.com/openharmony/community/blob/master/sig/sig_devboard/sig_devboard_cn.md)信息。
### Samples
**表3** 新增Samples
| 子系统 | 名称 | 简介 | 开发语言 |
| -------- | -------- | -------- | -------- |
| 网络与连接 | [上传和下载](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/BasicFeature/Connectivity/UploadAndDownLoad) | 本示例使用\@ohos.request接口创建上传和下载任务,实现上传、下载功能,hfs作为服务器,实现了文件的上传和下载和任务的查询功能。 | ArkTS |
| 文件管理 | [应用接入数据备份恢复](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/BasicFeature/FileManagement/FileBackupExtension)
(Full SDK) | 应用接入数据备份恢复需要通过配置BackupExtensionAbility实现。
BackupExtensionAbility,是Stage模型中扩展组件ExtensionAbility的派生类。开发者可以通过修改配置文件定制备份恢复框架的行为,包括是否允许备份恢复,备份哪些文件等。
本sample主要给备份流程提供应用,用于生成数据和显示数据。 | ArkTS |
| 事件通知 | [自定义通知角标](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/BasicFeature/Notification/CustomNotificationBadge) | 本示例主要展示了设定应用的桌面图标角标的功能,使用\@ohos.notificationManager 接口,进行桌面角标的设置,通知的发送,获取等。 | ArkTS |
| 事件通知 | [自定义通知推送](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/BasicFeature/Notification/CustomNotificationPush)
(Full SDK) | 本示例主要展示了通知过滤回调管理的功能,使用\@ohos.notificationManager 接口,进行通知监听回调,决定应用通知是否发送。 | ArkTS |
| NDK | [Native Xcomponent](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Native/NdkXComponent)
(Native SDK) | 本示例中主要介绍开发者如何使用Native XComponent接口来获取NativeWindow实例、获取布局/事件信息、注册事件回调并通过OpenGL/EGL实现在页面上绘制形状。功能主要包括点击按钮绘制一个五角星,并可以通过点击XComponent区域改变五角星的颜色。 | Native C++ |
| 应用模型 | [数据代理卡片-数据库刷新](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/SystemFeature/ApplicationModels/PersistentProxyForm)
(Full SDK) | 本示例主要展示了数据代理卡片的功能,使用\@ohos.application.DataShareExtensionAbility、\@ohos.data.dataShare、\@ohos.data.dataSharePredicates等接口,实现了修改卡片订阅信息后,当rdb数据库中的数据发生变化时,卡片中对应信息也发生相应变化的功能。 | ArkTS |
| 应用模型 | [数据代理卡片-仿push应用刷新](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/SystemFeature/ApplicationModels/ProcessProxyForm)
(Full SDK) | 本示例主要展示了使用push应用形式的数据代理卡片功能,使用\@ohos.data.dataShare等接口,实现了数据代理卡片的修改订阅条件功能及卡片的发布数据功能。 | ArkTS |
| 应用模型 | [编辑应用](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/SystemFeature/ApplicationModels/Receiver) | 本示例主要实现了基于UIExtension实现简单的分享功能。支持取消分享,点击“返回Share”按钮,返回调用方应用;支持完成分享,点击“留在编辑应用”按钮,留在当前接收分享结果应用。 | ArkTS |
| 应用模型 | [发起分享应用](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/SystemFeature/ApplicationModels/Share)
(Full SDK) | 本示例主要实现了点击“分享”按钮发起分享,显示出分享文本应用图标和分享编辑应用图标,点击相对应应用图标可以发起分享并跳转到其对应应用显示。 | ArkTS |
| 应用模型 | [文本应用](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-4.0-Beta2/code/SystemFeature/ApplicationModels/Template)
(Full SDK) | 本示例主要实现了基于UIExtension实现简单的分享功能。支持取消分享,点击“返回Share”按钮,返回调用方应用;支持完成分享,点击“留在文本应用”按钮,留在当前文本应用。 | ArkTS |
请访问[Samples](https://gitee.com/openharmony/applications_app_samples)仓了解更多信息。
## 修复缺陷列表
**表4** 修复缺陷ISSUE列表
| ISSUE单 | 问题描述 |
| -------- | -------- |
| I6U4ZT | 拍照后立刻断电源,图库的第一张图片点击打不开。 |
| I79752 | 中概率由进程com.ohos.smartperf下的.ohos.smartperf线程导致libark_jsruntime.so出现cppcrash。 |
| I79P3K | 低概率由进程com.ohos.callui导致jscrash,栈名:onDestroy。 |
| I79TCB | 低概率由进程com.ohos.note下的VizCompositorTh线程导致libweb_engine.soTh出现cppcrash。 |
| I78CBC | 反复进入某相册的图片宫格浏览界面,导致libace.z.so出现内存泄露。 |
| I78C9W | 反复进入大图浏览界面后返回,导致libace.z.so出现内存泄露。 |
## 遗留缺陷列表
**表5** 遗留缺陷列表
| ISSUE | 问题描述 | 影响 | 计划解决日期 |
| -------- | -------- | -------- | -------- |
| I78CH7 | 反复在dock栏添加/移除应用,导致libace.z.so出现内存泄露。 | 非常用场景,应用重启后泄露问题消失,影响可控。 | 2023年8月30日 |
| I7BF3M | 长时间运行测试,launcher进程概率性出现appfreeze,原因是STRINGID:APPLICATION_BLOCK_INPUT卡在libeventhandler.z.so。 | 该问题不会引起系统重启,整体影响可控。 | 2023年8月30日 |
| I7M51R | 低概率出现进程com.ohos.systemui下的线程render_service出现cppcrash。 | 低概率问题,且render_service进程出现cppcrash后,系统会自动重新启动render_service进程,对业务影响可控。 | 2023年8月30日 |
| I7L2CF | SystemUI内存泄漏:反复执行下拉任务栏操作,压力测试执行24小时,泄露60MB。 | 单次执行下拉任务栏操作,泄露量在几KB,影响可控。 | 2023年8月30日 |
| I7NWF3 | 因兼容性问题,使用3.2.x版本的设备和4.0.x版本的设备通过Wi-Fi引导P2P连接时开启会话失败。 | 在使用4.0.x版本的设备间此问题不存在,影响可控。 | 2023年8月30日 |
| I7BOAO | 三方仓GLES3多个测试用例执行失败。 | 三方仓问题,厂商正在适配修改。 | 2023年8月30日 |