## 版本概述 OpenHarmony 4.0版本标准系统能力持续完善,ArkUI进一步完善组件能力和效果、应用框架优化了Extension能力、应用包支持不解压安装和跨应用共享、分布式数据管理新增统一数据管理框架(UDMF)、媒体进一步增强音频/媒体播放/媒体控制/相机的能力、事件通知新增应用角标管理、安全基础能力支持更多密钥管理的能力、ArkCompiler更新了c++工具链的相关工具版本、测试框架多个工具能力增强。 OpenHarmony 4.0 Beta1版本开始提供首批API Level 10接口。 ### 应用框架 - Extension能力最小化管理,支持各类Extension根据业务场景开放API,防止敏感API的调用。 - 支持数据或文件的URI临时授权,应用可以把自己文件的读写权限授权给其他应用。 - 支持了UIExtension机制,用于实现有界面的Extension,UIExtension的界面可以嵌入到调用方应用的窗口上显示。目前已构建UIExtension基础能力: - 支持统一的UIExtension模板,接口含义清晰,服务开发标准化。 - 支持原生默认的Extension界面展示,方便开发者快速实现Extension功能,同时也提供界面定制能力。 后续版本会逐步提供Share、Picker等模板。 - 支持原子化服务的分享,应用开发者可以使用UIAbility组件提供的UIAbility.onShare()生命周期方法,设置要分享的数据。用户可以通过分享框把原子化服务和卡片分享到另外一台终端设备。 ### ArkUI 基础组件增加或增强: - 提供Extension组件,用于将一个应用的扩展功能,嵌入显示到另一个应用内,新增组件能力。 - 绘制组件Rect/Circle/Ellipse/Line/Polyline/Polygon/Path/Rect/Shape支持偏移、裁剪、遮罩等通用属性,增强绘制组件基础功能。 - 自定义弹框支持蒙层颜色及弹出动画自定义如允许开发者设置弹出动画效果的相关参数,增强弹框的开发者自定义功能。 - bindContextMenu/bindMenu支持自定义位置,允许开发者设置菜单的位置,增强菜单基础功能。 - ColumnSplit分隔线支持可拖动,增强组件基础功能。 - Refresh组件支持自定义下拉刷新能力,允许开发者设置下拉刷新时的显示内容,增强组件基础能力。 - 支持文本组件中返回输入字符串宽高的能力,用于字符串折叠显示时,鼠标悬浮可弹出字符串完整提示框,增强文本组件基础功能。 动画效果增加或增强: - 组件属性变化支持过渡动效,如Divider组件配置分割条颜色和颜色属性时支持过渡动效,提升组件属性变化时动画效果的能力。 - 支持给组件设置球面高阶属性、下边缘像素扩展、取色模糊、G2圆角、阴影、渐变高阶图形属性,丰富开发者开发高阶动画效果的能力。 开发效率提升: - Text/Image/Video/ListItem/GridItem组件支持用户长按组件默认进入拖拽行为,支持开发者关闭默认拖拽,提升开发者开发效率。 ### 应用包管理 - 支持应用包不解压安装的特性,优化了系统启动性能和应用安装性能。 - 支持跨应用共享包。支持部分系统将自身应用的代码能力提供给三方生态应用使用,同时三方应用不需要在自身的安装包里集成相关内容(包括代码、资源以及.so文件等),从而达到减少生态应用的集成成本以及更新成本的目的。 - 支持企业应用的安装。校验企业应用的安装权限防止企业应用被随意的分发安装;提供企业应用证书信息查询以方便应用市场对企业应用的管理和吊销。 ### 分布式数据管理 - 系统应用支持通过数据管理服务代理静默访问其他系统应用的DataShareExtension数据,即不拉起DataShareExtension所在的应用即可访问应用DataShareExtension的数据。 - 系统应用支持通过数据管理服务代理访问Single模式应用DataShareExtension的数据。 - DataShare客户端提供按URI前缀订阅DataShareExtension数据变化的能力,被订阅的URI前缀下任何DataShareExtension数据发生变化都会通知DataShare客户端。 - 新增统一数据管理框架(Unified Data Management Framework, UDMF),支持数据标准化模型、设备内数据拖拽、UDMF数据存储适配、权限管理、生命周期管理。 ### 文件管理 - 支持文件分类视图管理能力,图库等应用以相册方式管理媒体文件(图片、视频无需关注具体存储位置),提供相册内添加、移除文件等功能不涉及具体的FileIO行为。API接口待后续版本开放。 - 提供增强的FileIO访问能力,支持randomAccessFile、moveDir、copyDir、watcher能力。 - 提供基于URI的文件临时授权访问及取消授权能力,支持文件的跨应用本地授权或跨设备授权。 ### 图形显示、窗口 **图形** - 支持组件自绘制内容的属性动画。 - 支持组件出现消失转场动画。 - 对统一渲染模式进行了性能优化,包含IPC性能优化(如通过共享内存方式传递渲染资源降低IPC通信量)、支持控件级别遮挡剔除仅需渲染上层控件降低GPU渲染工作量,使能硬件合成器提高合成能效等。 - 图片编解码支持SVG解码,GIF格式完善参数解析,如总帧数,时间间隔等。 **窗口** - 支持监听窗口的获焦状态:之前版本,应用开发者仅可以监听WindowStage的获焦状态,但针对系统窗口和应用子窗口的获焦事件无法监听。现在,应用开发者可以通过在window上注册windowEvent的方式,监听单个窗口的获焦、失焦和显示隐藏状态。 - 支持将子窗口z轴顺序调整到顶层:之前版本对于应用中创建的多个子窗口,系统总是将最后显示窗口显示在所有子窗口的最顶层。同时,当前系统中默认会将用户触摸或者鼠标点击的窗口提升至所有子窗口的最顶层。现在,通过window对象的aiseToAppTop方法,应用开发者可以自行将某个子窗口调整至WindowStage多个子窗中的最顶层。 - 重构沉浸式实现方式,优化应用打开、退出、跳转下的动画效果:之前版本,应用打开时全屏应用窗口大小默认不包含状态栏和导航栏的区域,除非应用调用沉浸式接口(通过setWindowLayoutFullScreen或者setSystemBarEnable)。沉浸式应用在打开的过程中调用上述接口,会导致打开动画出现跳变,影响应用打开和应用间跳转动画的体验。新版本上,无论是否设置沉浸式显示,全屏显示的应用窗口大小都包含状态栏和导航栏的区域,而非沉浸式应用的状态栏、导航栏避让会通过ArkUI限制应用显示区域完成。 - 支持查询屏幕的显示模式:在Screen属性中增加了sourceMode字段,支持系统应用判断此屏幕是作为主屏幕显示、还是主屏幕的镜像或者扩展。 - 提供停止镜像和停止扩展API:在Screen中增加了stopMirror和stopExpand方法,除了可以设定镜像或者扩展显示虚拟屏幕、辅助屏幕,也可以设置停止镜像或者扩展模式显示。 ### 媒体 **音频能力** - 支持通过native接口进行音频播放和录制。 - 支持查询或监听当前优先级最高的播放设备。 - 闹钟音量支持独立调整。 - 支持音频焦点,应用播放音频时无需手动申请焦点,系统会在后台自动申请焦点,并自动执行焦点策略(如暂停、淡出、淡出恢复等);应用仅需要注册焦点事件监听函数,以接收焦点事件并更新状态,如暂停时停止进度条。 **播控框架** - 支持媒体提供方和控制方之间传递自定义媒体信息,应用可扩展媒体内容展示方式,如媒体控制方可要求媒体提供方按特殊形式显示歌曲歌词。 - 支持媒体播放列表的框架能力,媒体提供方提供播放列表内容,媒体控制方获取播放列表内容并可以选择任一媒体内容进行播放。 - 支持播放历史记录的框架能力,媒体会话框架提供查询历史播放应用的列表,列表项按播放先后顺序排序(包含当前播放的和已退出的应用)。 - 提供自定义媒体事件的传输通道,如歌词内容的传输通道,媒体提供方提供歌词内容,媒体控制方获取歌词内容。 - 提供自定义的媒体控制命令的传输通道,媒体控制方可以利用该自定义命令传输通道向媒体提供方发送自定义控制命令,如媒体控制方要求媒体提供方显示弹幕信息。 **媒体播放** - 支持基于HLS协议的网络直播功能以及基于datasource的流式播放功能。 - 支持基于HDI的H.265视频硬解播放能力。 - 支持播放音频属性设置,用户在使用播放器的时候可以选择输出声音的类型。 - 支持带旋转角度视频的自动旋转播放功能。 **相机** - 完善ArkTS API的错误码和异常处理机制,使开发者可以通过查询错误码定位错误信息。 - 支持前置预览镜像能力,默认情况下,前置预览画面呈镜像状态。 - 支持分布式摄像头查询该摄像头的主设备属性,包括设备名称和设备类型。 - 支持更精细化的分辨率查询,可以按照预览、拍照、录像用途查询支持的尺寸、格式和帧率信息。 - 相机框架提供横向归一化坐标系[0, 0, 1, 1],所有与坐标相关的操作都基于这套坐标系完成。 - 不同相机应用使用同一个摄像头场景下,相机框架具备优先级管控和互斥策略。 ### 事件通知 - 支持应用设置静态事件订阅的开关。 - 系统应用支持删除已发布的粘性事件。 - 支持应用设置代表通知数量的数字角标。 ### 通信与连接 - 支持NFC eSE卡模拟能力。 - 支持WIFI连接AP时使用随机MAC的能力。 - 支持WIFI通过静态IP连接AP的能力。 ### 安全 - 密钥管理提供如下能力: - 基于GID派生芯片级密钥的能力。 - 支持国密密钥进行安全导入。 - 支持二次身份认证的细粒度访问控制。 - 密钥管理签名支持签名NO HASH模式。 - 密钥管理算法支持运算时指定密钥参数。 - 支持小型设备查询其它设备的设备安全等级信息。 - 证书管理支持外部指定RSA密钥签名摘要及填充进行签名和验签能力。 ### 程序访问控制 - 支持拉起应用维度的权限管理界面。 - 支持对系统应用的身份校验。 ### ArkCompiler - Taskpool支持优先级设置及自动扩缩容算法。 - 热重载增强,优化性能,支持多hap等场景。 - 支持多实例调优 。 - 支持异常函数的CFG构建。 - c++编译工具链更新: - clang/llvm工具链升级到15.0.4版本。 - libc版本升级到1.2.3版本,libc库接口性能优化。 - sigaction函数提供sigchain功能。 ### 内核 - 支持HCK内核接口框架。 - 支持Linux内核config多级分层配置。 ### 泛Sensor - 1. 新增对设备所支持的预置振动效果进行查询的功能,开发者可通过EffectId查询某个振动效果在设备上是否被支持。 - 2. 新增振动全停接口,开发者无需传入对应的振动模式,可直接停止当前任意模式的振动。 ### 测试框架 **测试框架arkxtest** - 自动化脚本测试套嵌套定义能力,提升开发者脚本设计灵活性。 - 对象级断言能力,提升测试脚本断言能力。 - 模拟中文输入、模拟鼠标操作、区域截图能力。 **自测试执行框架developer_test** - 测试任务管理能力,开发者通过任务ID执行历史任务,提升开发者自测试效率; - 精准测试能力,支持子系统、部件、测试套、测试用例级测试用例筛选执行能力,提升开发者自测试效率; - 对接执行hats用例,丰富执行用例范围 **稳定性测试工具wukong** 支持旋转事件注入,增强注入能力。 **性能开发工具smartperf_host** - Frame timeline抓取和展示能力,开发者可以抓取和展示卡顿丢帧检测的数据。 - Scheduling analysis抓取和展示能力,开发者可以抓取和展示CPU调度分析,线程调度分析相关数据。 - 调用栈可视化和不同库函数调用占比展示能力,调用栈可视化可以将开发者编译的so符号化结果展示出来,不同库函数的占比通过饼图的方式展示出来。