OpenHarmony 4.0正式发布,增删改代码8849882行
特性说明
应用框架
新增 Extension 能力最小化管理,支持各类 Extension 满足业务场景需要。
新增 UIExtension 机制,用于实现有界面的 Extension,UIExtension 的界面可以通过 UIExtension 组件的方式嵌入到调用方应用的窗口上显示。
支持统一的 UIExtension 模板,定义基础的生命周期和上下文能力。
支持原生默认的 Extension 界面展示,方便开发者快速实现 Extension 功能,同时也提供界面定制能力。
提供连接和断连 ExtensionAbility 的能力。
支持对 UIExtensionAbility 页面设置背景色。
支持对 UIExtensionAbility 页面隐私属性,设置了隐私的页面不能被录屏或截屏。
支持通过 UIExtensionAbility 连接 Service。
提供自定义操作业务的 ActionExtension、分享业务的 ShareExtension、备份恢复业务的 BackupExtension、驱动业务的 DriverExtension、打印业务的 PrintExtension。
ArkTS 卡片能力增强,支持静态卡片配置、静态图展示,有效降低卡片内存资源占用,支持通过数据代理的方式刷新内容,有效降低卡片功耗。
支持元服务的分享,应用开发者可以使用 UIAbility 组件提供的 UIAbility.onShare () 生命周期方法,设置要分享的数据。用户可以通过分享框把元服务和卡片分享到另外一台终端设备。
跨端迁移能力增强,支持调用接口来动态打开和关闭迁移能力。应用可动态选择迁移成功后是否迁移页面栈,以及源端是否退出。
应用包管理
支持应用安装包免解压特性,优化系统启动性能和应用安装性能。
支持应用、元服务数据共享,在应用安装时,解析证书文件中的 data-group-ids 列表,建立映射关系,创建数据共享路径,实现应用与元服务数据共享。
支持应用安装时设置分发类型和附加信息,提供 ArkTS 接口实现应用分发类型和附加信息的设置和查询。
支持根据文件扩展名查询打开文件的应用列表,实现通过文件扩展名打开文件。
支持企业应用,提供企业 MDM 应用和企业 normal 应用的安装,以及对企业应用的管理和吊销。
支持 overlay 能力,针对不同产品的显示风格,开发者可以在不重新编译打包情况下,新增资源文件 overlay 包,实现应用界面风格变换。
拆包工具支持多语言,应用市场可查询包中的多语言信息,支持在不同的语言环境下分发应用。
支持 so 文件不解压使用,即不解压 so 文件到单独目录,运行期直接从包中读取加载 so 文件,提升安装速度和减少占用的 ROM 空间。
ArkUI
基础组件增加或增强:
新增 UIExtension 组件,用于将一个应用通过 UIExtensionAblity 的方式,嵌入显示到另一个应用内。
绘制组件 Rect/Circle/Ellipse/Line/Polyline/Polygon/Path/Rect/Shape 支持偏移、裁剪、遮罩等通用属性,增强绘制组件基础功能。
自定义弹框支持蒙层颜色及弹出动画自定义,如允许设置弹出动画效果的相关参数,增强弹框的开发者自定义功能。
bindContextMenu/bindMenu 支持自定义位置,允许设置菜单的位置,增强菜单基础功能。
ColumnSplit 分隔线支持可拖动,增强组件基础功能。
Refresh 组件支持自定义下拉刷新能力,允许设置下拉刷新时的显示内容,增强组件基础能力。
支持文本组件中返回输入字符串的宽高,用于字符串折叠显示时,鼠标悬浮可弹出字符串完整提示框,增强文本组件基础功能。
Xcomponent 组件支持 Texture 模式绘制。
Popup 组件支持自定义位置。
ArkTS/JS 卡片支持 UI 渲染完成的回调,方便获取渲染完成的状态并进行下一步处理。
Image/Text 组件支持设置隐私遮罩的属性。
基础组件特性增强,提升终端用户的体验,包括弹框支持通过键盘 ESC 键逐层退出、ListItem 支持长距离左滑删除手势、ContextMenu 支持分段显示能力等。
Grid 组件支持设置布局信息。
Menu 组件支持设置圆角。
半模态组件支持设置高度自适应。
动画效果增加或增强:
支持组件属性变化的过渡动效,如组件的尺寸、背景色、透明度等属性发生变化时通过过渡动效衔接变化前后的状态,提升组件属性变化时的动画体验。
支持给组件设置球面高阶属性、下边缘像素扩展、取色模糊、G2 圆角、阴影、渐变等高阶图形属性,丰富高阶动画效果。
布局属性、背景图片大小位置属性、显隐属性支持隐式动效。
List 新增支持 scrollToIndex 动效、Tasb 模糊动效、Popup 出现 / 消失动效。
支持自定义动画,满足多种多样的动画诉求。
开发效率增强:支持命名路由的能力,借助此能力可针对不同页面设置差异化的切换动效;轻量级 ArkUI 框架支持定义全局数据对象,可进行应用内页面间的数据共享。
框架能力增强,包括:全局 API 支持 Stage 模型多实例场景,支持 Rosen 渲染后端等。
对富文本的交互能力增强:新增支持手势长按选中文本、支持鼠标拖动选中文本、支持设置文本可编辑(通过通用属性设置富文本框是否使能编辑)、支持对输入事件的监听。
弹窗功能增强,新增错误、信息和询问三种消息弹窗接口,完善警告弹窗三按钮场景和交互优化。
ArkCompiler
热重载性能优化,支持多 hap 等场景。
支持多实例调优。
TaskPool 支持任务中断和取消,支持定义任务组(TaskGroup),支持对任务的状态和调度信息进行打点,支持超长等待的任务进行识别和恢复。
TaskPool 支持优先级设置及自动扩缩容算法。
正式定义 ArkTS 语法规则并新增 ArkTS 语法检查,在使用 DevEco Studio 进行代码编译时会对不符合 ArkTS 语法规则的代码进行告警。语法检查的规则详见从 TypeScript 到 ArkTS 的迁移指导。
AOT 优化编译支持端侧闲时编译,增强编译优化进一步提升性能。
PGO 支持采集运行期的类型和函数热点信息,支持 AOT 优化编译 JS 代码,提升动态 JS 代码的运行性能。
支持动态 import 加载 NAPI 库。
NAPI buffer、object、arraybuffer、object type 接口功能补齐。
clang/llvm 工具链升级到 15.0.4 版本。
libc 版本升级到 1.2.3 版本,libc 库接口性能优化。
sigaction 函数提供 sigchain 功能。
分布式数据管理
DataShare 客户端提供按 URI 前缀订阅 DataShareExtension 数据变化的能力,被订阅的 URI 前缀下任何 DataShareExtension 数据发生变化都会通知 DataShare 客户端。
新增统一数据管理框架(Unified Data Management Framework, UDMF),支持数据标准化模型、设备内数据拖拽、UDMF 数据存储适配、权限管理、生命周期管理。UDMF 框架下支持应用的跨设备拖拽,在此过程中允许对分布式目录中的文件临时授权。
提供 RDBstore NDK 接口 :包含增 / 删 / 改 / 查 / 事务、数据加密、数据分级保护、备份 / 恢复能力。
Key-Value 和分布式数据对象支持根据数据量自动选择数据同步的通道。系统会根据数据量大小自动选择蓝牙通道或基于 Wi-Fi 的 P2P 通道进行数据的同步。
支持系统应用通过数据管理服务代理静默访问其他系统应用的 DataShareExtension 数据,即不拉起 DataShareExtension 所在的应用即可访问应用 DataShareExtension 的数据。
分布式软总线
支持对基于软总线连接的 link 信息进行管理。
支持会话级的传输能力协商,可通过协商确定设备间传输的能力。
分布式硬件
分布式音频支持扬声器(speaker),麦克风(mic)的资源池化管理,可以在 native 系统服务中跨设备使用远端设备的扬声器和麦克风,并支持控制远端设备的扬声器音量。
分布式输入支持键盘,鼠标,触摸板的资源池化管理,可以在系统应用中触发跨设备的键盘、鼠标和触摸板的使用。
文件管理
支持文件分类视图管理能力,图库等应用以相册方式管理媒体文件(图片、视频无需关注具体存储位置),相册内添加、移除文件等功能不涉及具体的 File IO 行为。支持三方应用通过 PhotoAccessHelper 接口获取相册列表,访问相册内图片、视频等文件。
提供增强的 FileIO 访问能力,支持 randomAccessFile、moveDir、copyDir 能力。
提供基于 URI 的文件临时授权访问及取消授权能力,支持文件的跨应用本地授权或跨设备授权。
支持公共图片文件在设备端和云端进行同步(设备登录的帐号需开通云端服务),支持通过 picker 选择云端的图片。
支持应用定制备份恢复的目录。
支持应用监听沙箱内的文件变化。
图形显示及窗口
对统一渲染模式进行了性能优化,包含基于共享内存的 IPC 性能优化、基于遮挡剔除和缓存等技术的渲染性能优化、基于硬件合成器能力的能效提升等。
图形处理依赖的渲染库升级至 Skia 0310 新版本,提升了渲染性能。
支持组件自绘制内容的属性动画。支持组件设置出现和消失的转场动画。
支持取色能力,支持渐变模糊,支持边缘像素扩展,支持渐亮效果,支持多种模糊材质能力。
图片编解码能力增强:支持 SVG 格式图片解码,ico 格式图片解码,GIF 增量解码,jpeg_IDCT 缩放解码,png 图片编码,图片 exif 信息拓展。
图片接口能力增强:支持 Pixelmap JS 侧的序列化反序列化,提供 ImageReceiver 和图片解码 NDK 接口。
支持监听窗口的获焦状态,可以监听单个窗口的获焦、失焦和显示隐藏状态。
支持应用将子窗口 z 轴顺序调整到当前应用窗口中的顶层。
支持查询屏幕的显示模式(镜像、扩展),提供停止镜像和停止扩展 API。
优化了 display 模块的参数值获取方式,从原先软件方式优化为从硬件直接获取真实值。
支持通过窗口设置将屏幕亮度恢复默认值。
重构沉浸式实现方式,优化应用打开、退出、跳转下的动画效果。
媒体
支持通过 Native 接口(OHAudio)进行音频播放和录制。对于音频录制和播放的时延比较敏感的场景,使用 Native 接口可实现更低的时延。
支持查询或监听当前优先级最高的播放设备。
支持闹钟音量的独立调整。
支持通过物理按键设置静音。
支持音频焦点:应用播放音频时无需手动申请焦点,系统会在后台自动申请焦点,并自动执行焦点策略(如暂停、淡出、淡出恢复等);应用仅需要注册焦点事件监听函数,以接收焦点事件并更新状态,如暂停时停止进度条。支持短音播放。
支持音效模式:应用可查询音频输出的音效模式,切换或关闭音效模式。
支持系统内录音能力:可根据音频场景属性筛选,录制系统内播放的音频数据,支持对录音设备进行查询。
音频设备能力增强:支持获取音频设备显示名,播放对象详细信息内可获取当前播放输出归属的设备名。支持对蓝牙连接的多个可用于音频播放的设备进行查询并选择音频播放的设备。支持标准 USB 协议的音频外设。
支持媒体提供方和控制方之间传递自定义媒体信息,应用可扩展媒体内容展示方式,如媒体控制方可要求媒体提供方按特殊形式显示歌曲歌词。
支持媒体播放列表的框架能力,媒体提供方提供播放列表内容,媒体控制方获取播放列表内容并可以选择任一媒体内容进行播放。
支持播放历史记录的框架能力,媒体会话框架提供查询历史播放应用的列表,列表项按播放先后顺序排序(包含当前播放的和已退出的应用)。
提供自定义媒体事件的传输通道,如歌词内容的传输通道,媒体提供方提供歌词内容,媒体控制方获取歌词内容。
提供自定义的媒体控制命令的传输通道,媒体控制方可以利用该自定义命令传输通道向媒体提供方发送自定义控制命令,如媒体控制方要求媒体提供方显示弹幕信息。
支持基于 HLS 协议的网络直播功能以及基于 datasource 的流式播放功能。
支持基于 HDI 的 H.265 视频硬解播放能力。
支持播放音频属性设置,用户在使用播放器的时候可以选择输出声音的类型。
支持视频自带的旋转播放功能。
支持音效参数配置,可以在音频框架支持音效的能力基础上进一步配置音效。
支持前置预览镜像能力,默认情况下,前置预览画面呈镜像状态。
支持分布式摄像头查询该摄像头的主设备属性,包括设备名称和设备类型。
支持更精细化的分辨率查询,可以按照预览、拍照、录像用途查询支持的尺寸、格式和帧率信息。
相机框架提供横向归一化坐标系 [0, 0, 1, 1],所有与坐标相关的操作都基于这套坐标系完成。
不同相机应用使用同一个摄像头场景下,相机框架具备优先级管控和互斥策略。
支持获取系统的音视频编解码,可以调用本模块的 Native API 接口,查询系统编解码能力的支持情况。
支持音视频封装,可以调用本模块的 Native API 接口,完成音视频封装,即将音频、视频等编码后的媒体数据,按一定的格式存储到文件里。
支持音视频解封装,可以调用本模块的 Native API 接口,完成音视频解封装,即从比特流数据中取出音频、视频等媒体帧数据。
事件通知
支持应用设置静态事件订阅的开关。
支持系统应用删除已发布的粘性事件。
支持应用设置代表通知数量的数字角标。
支持将通知设置为不可移除。
支持选定通知并批量删除通知。
应用内事件处理模块支持取消已按条件指定订阅的回调。
通信与连接
支持 NFC eSE 卡模拟能力。
支持 Wi-Fi 连接 AP 时使用随机 MAC。
支持 Wi-Fi 通过静态 IP 连接 AP。
系统服务管理
支持系统服务按需启动机制,例如外部调用、事件触发,同时支持在设备空闲时自动退出系统服务。
系统服务配置格式优化,使用 JSON 格式替代 XML 格式。
电源
增强系统电量等级查询及上报能力,支持电量等级的裁剪和定制。
支持有线和无线充电类型上报,充电类型包括普通充电、快速充电和超级快速充电。
增强运行锁的管控机制,明确系统电源状态和等级。
提供唤醒源设置能力,支持通过电源键、鼠标、键盘、触控板、屏幕、手写笔、皮套等方式唤醒设备。
提供休眠源设置能力,支持通过电源键、皮套、及超时自动休眠等方式设置设备休眠。
提供电源管理、电池管理、显示亮度管理、耗电统计及热管理的开发指南。
新增系统接口,支持设置系统立即进入睡眠状态。
多模输入
支持将键盘输入设备的原始事件映射为归一化交互的意图事件。
支持用户根据个人习惯设置触控板功能的个性化配置:
支持两种触发模式映射鼠标左键功能:按压、轻点。
支持两种触发模式映射鼠标右键功能:点按左 / 右下角、双指点按或轻点。
跟踪速度:支持 10 档速度调节。
支持两种交互模式映射鼠标滚轮功能:内容随手指移动方向、内容随手指反向移动。
主题框架
锁屏管理服务:支持锁屏事件回调机制、支持静态 / 动态壁纸、支持查询锁屏时的业务状态。
壁纸管理服务:支持自定义壁纸、支持锁屏 / 解锁操作、支持重置壁纸。
上传下载
支持任务信息持久化记录,查询方式灵活多样,任务信息更加全面,支持按过滤条件查询任务信息。
增强安全隐私保护,增加系统管理接口权限。
支持文件覆盖下载、分片上传下载、自定义 token 任务创建。
支持服务按需启停,应用调用相关接口时启动,任务空闲时自动退出。
时间时区
获取系统时间、系统启动时间提供同步接口。获取到的时间更精准,且提供较好的开发者体验。
获取日期接口废弃,由 ArkTS 公共库 new Date () 接口替代。
输入法
网络管理
提供 IPv6 基础能力,包括 DNS 解析、应用通过 http/https/socket 联网,蜂窝 / Wi-Fi / 有线网络下均可支持 IPv4/IPv6 双栈接入。
新增同步接口,针对 @ohos.net.connection 模块的高频接口,在原有异步接口基础上新增了对应的同步接口。
打印
安全
提供 DSA 数字签名算法能力。
提供 DSA、ECC、RSA 密钥解析和密钥参数的获取能力。
提供安全随机数生成算法类型的获取能力。
提供 SM4 密钥的随机生成与转换,以及加密解密能力。
提供 SM3 密钥的 HMAC 和 HASH 的能力。
提供 SM2 密钥的随机生成与转换、签名及验签、以及加密解密能力。
基于 GID 派生芯片级密钥的能力。
支持国密密钥的安全导入。
支持二次身份认证的细粒度访问控制。
密钥管理签名支持签名 NO HASH 模式。
密钥管理算法支持运算时指定密钥参数。
支持 HUKS 密钥加密保护。
支持 KeyAttestation 公钥证书中增加对密钥所属业务身份字段。
支持标准 HDI 南向接口。
对同帐号登录的多个设备进行互信认证。
对非同帐号的点对点互联的两个设备进行互信认证。
程序访问控制
支持拉起应用粒度的权限管理界面。
支持对系统应用的所属身份进行校验。
优化权限管理的菜单呈现,拆分媒体和文件的权限组,相应权限的授权粒度更加精细化。
帐号
支持帐号授权能力扩展和三方应用使用帐号授权能力。
支持域帐号插件管理、域帐号管理、域帐号认证能力。
用户 IAM
提供统一身份认证控件,完善用户身份认证能力,方便系统开发者调用身份认证能力并且生态体验统一。
统一身份认证控件提供了系统默认的用户身份认证界面,选择使用带控件的接口 getUserAuthInstance, AuthParam 指定认证参数,WidgetParam 指定控件显示参数。为确保用户在系统上有统一的身份认证体验,建议开发者使用 API version 10 提供的新用户身份认证接口。
WebView
W3C 能力补充完善:补充 Web camere 能力,以及 bindContextMenu、Select、date 类型 input 等 H5 标签能力。
支持多渲染进程的进程拆分。
支持文字、图片基础拖拽能力。
支持 WebRTC 的视频会议能力(不含摄像头共享)。
支持渲染进程独立 SELinux 标签,增强安全基础能力。
支持识别 Web 组件渲染进程、显示线程和场景信息,并通知系统资源调度进行 CPU 管控。
内核
支持 HCK 内核接口框架。
支持 Linux 内核 config 多级分层配置。
代码执行权限管控能力增强,新增了以下能力:
支持安全内存机制。
支持不同场景的代码执行权限管控策略。
支持代码执行权限管控的全生命周期管理能力。
支持解析可执行文件获取代码段信息。
支持代码页的完整性保护能力。
驱动
扩展设备驱动框架提供以下能力:
扩展设备驱动框架基于 “驱动扩展 Ability(DriverExtensionAbility)” 的能力,构建应用态扩展驱动包的开发、部署、安装、更新、卸载、运行能力,开放全流程生命周期管理能力。
支持三方设备厂商开发的非标准协议的可插拔 USB 设备扩展驱动包,正常安装到 OpenHarmony 系统。插入 USB 设备后,能正常识别 USB 设备并与扩展驱动包匹配。
支持三方应用通过扩展外部设备管理框架查询并绑定 USB 设备扩展驱动包,完成对扩展驱动包定制功能的操作。
相机驱动提供以下能力:
提供 USB 相机热插拔识别能力,支持开机启动检查识别和启动后热插拔识别。
支持 USB 相机的预览、拍照、录像能力,提供相机格式、分辨率查询和配置能力。
编解码驱动提供 JPEG 图片硬件解码加速能力,包括获取硬件解码信息,初始化 / 去初始化,解码,申请 / 释放 buffer,提升用户浏览图片流畅度体验。
传感器驱动提供温湿度传感器设备驱动能力,支持小型设备温湿度器件查询,器件使能 / 去使能,数据查询能力,丰富智能设备传感器能力。
泛 Sensor
支持对设备所支持的预置振动效果进行查询,可通过 EffectId 查询某个振动效果在设备上是否被支持。
新增振动全停接口,无需传入对应的振动模式,可直接停止当前任意模式所设置的振动。
新增播放振动配置文件接口,支持从文件播放自定义触觉的控制模式,播放执行结果依赖设备的振感器件能力。
测试
支持自动化脚本测试套嵌套定义能力,提升开发者脚本设计灵活性。
支持对象级断言能力,提升测试脚本断言能力。
支持模拟中文输入、模拟鼠标操作、区域截图的能力。
支持测试任务管理能力,开发者通过任务 ID 执行历史任务,提升开发者自测试效率。
支持精准测试能力,支持子系统、部件、测试套、测试用例级测试用例筛选执行能力,提升开发者自测试效率。
支持对接执行 hats 用例,丰富执行用例范围。
支持稳定性测试能力,支持测试用例乱序执行。
支持覆盖率统计能力,支持开发者本地一键式生成代码覆盖率数据。
支持 Frame timeline 抓取和展示能力,开发者可以抓取和展示卡顿丢帧检测的数据。
支持 Scheduling analysis 抓取和展示能力,开发者可以抓取和展示 CPU 调度分析,线程调度分析相关数据。
支持调用栈可视化和不同库函数调用占比展示能力,开发者可以抓取并通过饼图的方式展示调用栈及不同库函数的占比
支持应用冷热启、页面内切换、滑动帧率测试能力,开发者可以测试应用冷热启动时延、页面切换时延、滑动帧率测试能力。
支持端侧测试数据对接云端看板能力,开发者可以将端侧测试报告上传云端查看或下载云端数据到本地。
配套关系
软件 | 版本 | 备注 |
---|---|---|
OpenHarmony | 4.0 Release | NA |
Public SDK | Ohos_sdk_public 4.0.10.13 (API Version 10 Release) | 面向应用开发者提供,不包含需要使用系统权限的系统接口。通过 DevEco Studio 默认获取的 SDK 为 Public SDK。 |
HUAWEI DevEco Studio(可选) | 4.0 Release | OpenHarmony 应用开发推荐使用。获取方式: Windows(64-bit) SHA256 校验码:2c88cf43e1ef6ba722aac31eccc8ef92f07a9b72e43a9c1df127017828a22137 Mac(X86) SHA256 校验码:25e491458eec50b4abddf5bed6aa85893801d70afbce02958f17bd904619405a Mac(ARM) SHA256 校验码:284cb01f7b819e0da1d4fcacbbbbe8017ba220b5e3b9b1d5e4cc59ea30456acc |
HUAWEI DevEco Device Tool(可选) | 4.0 Release | OpenHarmony 智能设备集成开发环境推荐使用。 请点击这里获取:https://device.harmonyos.com/cn/develop/ide#download |
相关链接:
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md
https://mp.weixin.qq.com/s/W9H8Yyq6-jK-35FnIsafSQ
往期推荐
这里有最新开源资讯、软件更新、技术干货等内容
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦
微信扫码关注该文公众号作者