开源鸿蒙OpenHarmony 5.1.0(API 18)正式上线:进一步增强ArkUI
IT 之家 5 月 4 日消息,开源鸿蒙 OpenHarmony 是由开放原子开源基金会孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。
OpenHarmony 5.1.0 Release 正式版已于 4 月 30 日发布并上线 Gitee 平台,升级 API 18。

相比前一个 Release 版本(OpenHarmony 5.0.3,即 API 15),OpenHarmony 5.1.0 Release 重点做出了如下特性新增或增强:
进一步增强 ArkUI,提供更丰富的组件属性设置,支持更多精致动效,持续补充组件通过 C API 调用的能力;进一步增强媒体能力,提供更丰富的编解码能力、播控能力、媒体会话管理能力;进一步丰富了应用启动的细节设置能力;进一步增强分布式数据管理的 UDMF、RDB 的数据处理能力;进一步完善了标准 Web 能力等等。
IT 之家附官方发行说明如下,将按照 API 版本顺序分别进行列举:
应用框架新增支持根据指定的数据加密级别创建应用上下文,以获取相应的路径。新增支持同步获取当前进程的进程名(processName)。新增支持获取应用被拉起原因(LAUNCH_REASON_MESSAGE)。启动框架新增支持 HAR / HSP 和 so 文件。新增支持启动 Ability 时指定主窗口显示的最大宽高(maxWindowWidth / maxWindowHeight)和最小宽高(minWindowWidth / minWindowHeight)。新增支持获取应用上一次退出的详细原因。新增支持设置 UIAbility 的颜色模式。新增支持通过 startAbility 的属性 startOptions 来指定创建新窗口的大小(minWindowWidth、minWindowHeight、maxWindowWidth、maxWindowHeight)。C API 新增支持启动 Ability 时传递 startOptions。C API 新增支持设置启动 Ability 时窗口和 dock 栏图标的显示模式。新增一批 C API 函数,用于获取应用级别沙箱内文件目录。应用包管理
配置文件 module.json5 新增重定向配置:通过 abilitySrcEntryDelegator 标识当前 Module 需要重定向到的 UIAbility 的名称,通过 abilityStageSrcEntryDelegator 标识当前 Module 需要重定向到的 UIAbility 对应的 Module 名称(不可为当前 Module 名称),两者组合使用,共同指定重定向的目标对象。
ArkUI 文本与输入组件能力增强。包括:文本组件支持通过 NODE_IMMUTABLE_FONT_WEIGHT 属性,设置文字粗细不会跟随系统字体粗细而变化。文本组件支持对选中的文本提供分享服务、支持按音节连字符换行。文本组件新增支持设置文本选择菜单显示在独立窗口。富文本(RichEditor)组件支持设置最大行数。TextInput 组件支持设置文本省略位置。TextInput / TextArea / Search / RichEditor 组件支持将文本行间距平分至行的顶部与底部。TextInput / TextArea 组件扩展自动填充类型,包含:车牌号、护照号等。富文本(RichEditor)组件在长按预览菜单时支持振动效果。基础类型定义新增支持清除当前的预上屏文本内容。新增适配圆形屏幕的能力。包括:新增旋转表冠事件,组件获焦后扭动表冠可获取时间戳、旋转角速度、旋转角度和表冠动作信息。新增弧形列表组件 ArcList 和 ArcListItem,可呈现连续、多行的同类数据。新增弧形索引条组件 ArcAlphabetIndexer,可按字母顺排序进行快速定位。新增弧形滚动条组件 ArcScrollBar,可为弧形列表添加外置滚动条。新增弧形按钮组件 ArcButton,可提供强调、普通、警告等样式按钮。通用拖拽能力增强。包括:支持封装自定义落位动效。支持自定义控制在拖拽至可滚动组件边缘时是否触发自动滚屏。弹窗能力增强。包括:支持通过设置 levelOrder 来管理弹出框的显示顺序,确保层级较高的弹出框覆盖在层级较低的弹出框之上。支持在自定义内容中,创建和关闭对应的自定义弹窗。Popup 组件支持通过 maxWidth 设置最大宽度。半模态 Popup 样式弹窗,支持通过 placement 设置相对于目标的显示位置,通过 placementOnTarget 设置弹窗能否覆盖在目标节点上。Menu 和 Dialog 支持通过 backgroundBlurStyleOptions 和 backgroundEffect 设置自定义背景模糊。模态转场和 MenuItem 支持 !! 双向绑定变量。自定义弹窗支持避让键盘后,通过 keyboardAvoidDistance 设置弹窗和键盘之间的最小距离。支持通过 showInSubWindow 设置半模态是否在子窗中显示、支持通过 effectEdge 设置半模态面板边缘滚动的效果。菜单(Menu)在弹出时支持振动效果。表单选择类组件能力增强。包括:新增 SegmentButtonV2 组件,可创建页签型、单选或多选的胶囊型分段按钮。TextPicker / TimePicker 支持选项进入选中区域时触发事件回调。TimePicker / CalendarPicker 支持通过 start 和 end 配置开始时间和结束时间。TimePicker 支持通过 enableCascade 设置 12 小时制时上午下午跟随时间联动。滚动与滑动组件能力增强。包括:Swiper / Tabs 组件增加页面选中元素改变时触发的回调,返回当前选中或将要隐藏的元素的索引值。Swiper 组件增加控制手指或者鼠标等按下屏幕时子组件是否停止自动播放的能力。Swiper 组件 CAPI 能力增强,可设置缓存节点是否显示、数字导航点和导航箭头的样式。List 组件支持设置布局样式和滚动效果(NODE_LIST_SCROLL_TO_INDEX_IN_GROUP、 NODE_LIST_LANES、NODE_LIST_SCROLL_SNAP_ALIGN、NODE_LIST_MAINTAIN_VISIBLE_CONTENT_POSITION)。新增 C API,支持可配置用户自定义数据的手势中断事件回调函数。新增 C API,支持获取事件命中组件的宽高和坐标信息。支持设置组件的自定义焦点走焦逻辑。支持动态获取手势配置参数,可返回连续点击次数阈值。支持手势取消时触发的 onActionCancel 回调中返回手势事件信息。无障碍支持自定义焦点顺序、支持控制组件的屏幕朗读方式、支持设置屏幕朗读滚动操作。支持设置 EmbeddedComponent 或 UIExtensionComponent 组件的占用事件,指定手势事件的响应方式。支持将当前 FrameNode 移动到目标 FrameNode 的指定位置,实现跨实例节点迁移。NodeController 新增节点上下树和绑定解绑前后的生命周期回调接口(onAttach、onDetach、onWillBind、onWillUnbind、onBind、onUnbind)。支持对 ComponentContent 构建的 UI 组件进行截图。新增鼠标轴事件相关接口。NavDestination 新增 OnActive 和 OnInActive 生命周期。C API 的事件能力增强,新增支持获取事件命中的组件的宽度、高度、X 坐标、Y 坐标等能力。UIContext 新增支持创建不依赖窗口的 UI 实例。组件可见区域变化事件新增支持设置事件的回调参数,限制它的执行间隔。ImageAnimator 组件支持设置是否通过系统 onVisibleAreaChange 的可见性来判断组件的暂停和播放。窗口管理新增软键盘弹出动画完成的监听回调。画中画窗口支持通过创建参数 LocalStorage 实现页面级别的 UI 状态存储单元,多实例下可用来跟踪主窗实例。窗口管理新增支持创建虚拟屏幕。图形图像
新增一批 C API 函数和枚举,用于支持直接绘制到屏幕 buffer 的 gpu 渲染能力。
分布式数据管理 RelationalStore 新增 rootDir 配置,支持打开非 database 目录下的数据库。ArkData RDB 向量数据管理新增提供向量数据存近似查询解决方案。关系型数据库新增支持根据指定的列索引或列名称获取列数据类型。UDMF 新增支持将传入的 data 转换成多样式数据结构的能力。若原 data 使用多个 record 去承载同一份数据的不同样式,则可以使用此接口将原 data 转换为多样式数据结构。媒体
音频
新增支持 Float32 格式音频输出。新增支持空间音频管理的能力。
音视频编解码
视频解码新增支持 MPEG2、MPEG4、H.263。
播放控制
播放器支持向应用透传 SEI 字段数据,适用于 HTTP-FLV 直播。调用媒体播放器 AVPlayer 设置播放策略时,新增支持 Prepare 之后显示视频起播首帧(showFirstFrameOnPrepare)、起播缓冲水线(preferredBufferDurationForPlaying)等播放策略。播放器新增支持播放预下载的视频数据。调用媒体播放器 AVPlayer 设置播放策略时,新增支持智能追帧水线(thresholdForAutoQuickPlay)。能力增强:支持应用创建多个 SoundPool 实例。调用媒体播放器 AVPlayer 设置播放策略时,新增支持 Prepare 之后显示视频起播首帧(showFirstFrameOnPrepare)。新增支持通过 AV 会话命令传递设置目标循环模式(setTargetLoopMode)的能力,并提供对设置动作的事件监听回调。音频会话新增支持单句 / 单条歌词展示的属性 singleLyricText。
图片
新增 C API 支持获取图片的可编辑标志。
录制
新增屏幕录制时视频填充模式的枚举。音视频录制配置文件新增支持配置稳定录制模式 enableStableQualityMode18。语言编译器运行时 TaskPool 支持指定任务执行并发度和指定任务的排队策略。TaskPool 支持通过任务 ID 取消任务池中的任务。collections(ArkTS 容器集)在 API 18 新增支持以下方法: Array:from、isArray、of、copyWithin、lastIndexOf、some、reduceRight、reverse、toString、every、toLocaleString
TypedArray:toString、toLocaleString、lastIndexOf、reduceRight
Sendable 支持在缓存空间不够的时候,将近期最少使用的数据替换为新数据。Worker 支持创建任务时指定任务的优先级。安全
新增基于群组的关键资产访问控制。通过设置群组属性,同一开发者开发的多个应用可以共享数据。
DFX
新增支持为当前线程转储虚拟机的原始堆快照。
企业定制可禁用 / 启用的特性限制新增 MTP(mtpClient / mtpServer)和恢复出厂设置(resetFactory)。新增支持按系统账户安装用户证书。新增支持订阅账号的新增、删除、切换系统事件。基础通信新增在蓝牙 socket server 端可以获取对端蓝牙设备虚拟 MAC 地址的功能新增获取对端蓝牙设备原始名字的功能。新增连接对端蓝牙设备可用 profile 的功能,如 A2DP、HFP、HID 等协议 profile。新增持久化存储对端蓝牙设备虚拟 MAC 地址的功能。新增蓝牙 BLE 扫描围栏模式,可实现首次扫描到 BLE 广播报文时上报进入围栏,扫描不到 BLE 广播报文时上报离开围栏,并携带 BLE 广播报文信息。完善蓝牙搜索到的设备信息,新增获取设备 RSSI(信号强度)、名称和类别信息。新增异步读取和发送蓝牙 socket 数据的功能,如果链路断开,会上报 IO 异常。位置服务
新增支持订阅蓝牙扫描信息上报事件用于辅助定位。
网络管理
新增支持获取 TLSSocket 的文件描述符。
剪贴板
剪贴板支持获取剪贴板的内容变化的次数。
输入法
输入法框架新增支持设置显示预览文本时的回调,支持订阅输入法应用操作文本预览内容的事件。
Web 支持获取上一次被点击区域的元素信息。支持设置 Web 组件是否开启字重跟随系统设置变化。支持 Web 内音视频可对接到播控中心。对接 W3C 规范,支持通过 accept 指定上传的文件类型。提供静态方法,清除应用中的资源缓存文件。新增支持以固定宽高设置同层渲染的元素。多模输入
新增支持设置处于前台的应用操作指定按键的回调。
上传下载上传下载支持应用缓存下载能力,支持应用提前缓存文件到沙箱目录或内存中。上传下载 agent 接口支持设置任务最高限速,支持设置待上传文件在表单中的 content-type 字段。资源调度新增后台子进程管理模块,提供应用对子进程进行压制、解压制的能力,避免子进程过多占用系统资源,导致系统使用卡顿。新增长时任务车钥匙子类型 CAR_KEY。新增长时任务车钥匙子类型 CAR_KEY。后台代理提醒中提醒标题、提醒内容等字段支持设置资源 ID,用于全球化适配。全球化新增支持获取用户偏好温度单位和周起始日的能力。新增支持时间日期 / 数字精细化格式化的能力,便于更灵活的使用格式化能力。新增支持返回富文本的数字格式化能力。新增支持路径本地化显示的能力,可以根据输入语言判断路径是否需要镜像显示。测试框架新增支持按照模糊匹配 / 正则匹配方式查找符合条件的控件 id、type 的能力。新增支持获取控件提示文本,并根据控件提示文本查找控件。新增支持横向纵向查找控件,仅适用于支持滑动的控件。