IT之家 9 月 30 日消息,开源鸿蒙 OpenHarmony 5.0.0 Release 版本于昨日发布,相比 OpenHarmony 5.0 Beta1,Release 版本做出了如下特性新增或增强:
应用框架新增更多生命周期管理能力、提供子进程相关能力
ArkUI 进一步开放自定义节点的渲染能力
应用包管理提升了应用打包效率,丰富终端用户使用应用可操作场景(如创建应用分身、创建桌面快捷方式等)
分布式数据管理能力进一步增强,在保证数据合理共享的前提下增强安全性
文件管理进一步完善 Picker 的能力,对文件资源做到合理管控权限和合理使用
媒体在音视频播放、录制方面能力进一步增强,新增支持多个音视频、图片的编码格式,支持更细节的播控操作
IT之家附 OpenHarmony 5.0.0 Release 更新日志如下:
应用框架
支持创建 JS / Native 子进程,开发者可以把耗时操作放到子进程中执行。
Ability 生命周期监听支持 onNewWant 等更多生命周期。
支持 Ability 在不主动销毁自己的情况下,将 AbilityResult 结果返回给调用方。
Context 支持 Sendable 对象转换,用于多线程传递 Context。
支持应用级别的字体设置。
ArkUI
进一步增强了组件自定义能力,新增组件 modifier、ContentModifier 和 DrawModifier,支持基于已有组件新增属性、自定义组件内容和完全自绘制。
开放了自定义节点和 Native 的渲染节点。自定义节点是指具备底层实体节点的部分基础能力的节点对象,这些节点能够通过自定义占位节点与原生组件进行混合显示。自定义节点可以具备单个节点的测算布局、设置基础属性、设置事件监听、自定义绘制渲染内容的自定义能力。包括 FrameNode、RenderNode、BuilderNode 三类对象。详细如下:
BuilderNode:提供能够挂载原生组件的自定义节点 BuilderNode。
FrameNode:提供自定义节点 FrameNode,表示组件树的实体节点。NodeController 可通过 BuilderNode 持有的 FrameNode 将其挂载到 NodeContainer 上,也可通过 FrameNode 获取 RenderNode,挂载到其他 FrameNode 上。
RenderNode:提供自绘制渲染节点 RenderNode,支持在 Native 侧完成自定义绘制需求。
NodeController:提供 NodeController 用于实现自定义节点的创建、显示、更新等操作,并负责将自定义节点挂载到 NodeContainer 上。
适用于三方框架的组件 NDK 能力增强,涵盖组件创建、属性设置、事件注册、自定义能力、组件树构建。
Navigation 组件能力增强,包括单双栏切换动效、转场懂行的打断和接续,以及页面生命周期的监听能力。
控件视觉、动效和交互刷新,以及支持适老化、镜像语言和屏幕朗读。
菜单和弹窗类组件支持开发者组定义颜色、形状、圆角、大小、位置和阴影。
应用包管理
支持应用分身的接入和管理,应用可以通过简单的配置即可接入应用分身。
支持桌面快捷方式,用户可以动态添加快捷方式到桌面。
支持系统级 HSP 和 ArkWeb 独立升级能力,支持独立更新预置的应用。
支持 OTA 升级异常中断后恢复机制,OTA 升级流程中出现断电、服务 crash,重启时恢复 OTA 流程,继续安装、更新应用;
提供 cache 目录自动清理能力,支持存储管理在设备空间不足时自动清理 cache 目录。
支持 Native 软件包,提供 Native 软件包的打包、安装和卸载能力。
打包工具打包 App 时,对 App 包整体压缩,减少上架 App 的包大小。
分布式软总线
IPC 提供 CAPI 基础接口能力,包括序列化 / 反序列化、消息收发处理接口等。
分布式数据管理
RelationalStore&Preferences 支持共沙箱数据的访问方式。
RDB 支持只读方式打开。
UDMF 支持 UTD 与 MIME Type 的兼容性查询。
迁移场景数据资产同步优化。
支持 E 类加密的分布式数据管理。
倒排索引构建场景,支持应用指定外挂分词器。
基于 NDK 的 C API 支持 UDMF 数据跨设备拖拽能力。
分布式硬件
提供 ACL 精细化管理:根据业务的设备、用户、账号、包名对 ACL 进行精细的增、删、改、查操作。
质量加固,提高功能稳定性和可靠性。
分布式 DeviceProfile
设备数据分级重构,提高对数据增删改查的执行效率。
质量加固,后台建立链接功能优化,提高稳定性和可靠性。
文件管理
支持文件增量备份的能力。
提供备份应用获取备份数据量详情的接口,允许应用上报待备份数据记录数(如:短信条数),支持备份恢复过程中的异常事件上报。
新增支持 SA 接入备份恢复框架。
增强 Picker 能力:提供 Audio Picker 一次多选的能力;新增 Download Picker,应用可直接将文件保存到“Download / 包名级”目录下,且后续对该目录的访问无需申请权限,补齐浏览器等应用的下载体验。
支持应用通过申请权限等方式获取公共目录(Download、Desktop、Document)的访问权限(部分设备支持,需通过 syscap 判断),未申请权限无法直接访问。
支持应用通过 FilePicker 的方式选择文件或目录并获取对该目录或文件的临时访问权限,并支持持久化访问能力,未持久化的文件或目录,在应用退出后无法再继续访问。
新增 CreateStream、fdopenStream 等流式的文件访问接口。
新增设置和获取扩展属性的接口。
图形图像及窗口
图形图像
基于 NDK 的 C API 的 NativeImage 模块新增支持 NativeWindowBuffer。
基于 NDK 的 C API 新增支持 NativeVsync,支持单帧多次回调能力。
基于 NDK 的 C API 新增支持可变帧率的能力。
ColorSpaceManager 支持 sendable 能力。
字体引擎支持文字阴影能力,支持下划线对齐。
图形绘制接口完善绘制相关能力。
窗口
提供 display.getDisplayByIdSync 接口配合多屏特性使用,支持应用通过 id 同步获取 Ability 所在屏幕信息。
支持获取屏幕可用区信息。
支持在 ArkUI 中根据页面颜色设置状态栏文本颜色。
媒体
音频
音频焦点增强:支持焦点会话,允许应用设置与其他应用的并发播放策略,允许应用静音播放时不打断后台播放中的音频。
新增支持 DP、USB 耳机等更多的音频发声设备,支持切换默认发声设备功能(听筒和扬声器)。
新增视频通话的音频流类型,优化该场景下的音频流播放体验。
新增统一音量组件,方便使用、降低开发复杂度。
支持应用内投播组件样式的自定义。
支持铃音列表查询和自定义铃音设置。
播放
播放器起播、Seek 性能优化,降低时延。
新增多种播放协议或格式:支持 DASH 流媒体协议播放;支持 AMR、APE、WAV PCM-MULAW 格式音频播放。
新增多种播放控制的能力:支持多音轨视频播放、播放视频过程更换输出 Surface、静音播放、精准 Seek、设置播放区间、字幕。
支持配置流媒体缓冲大小;支持音频 Offload 模式。
流媒体播放能力增强:优化流媒体缓存策略,减少卡顿。
录制
音频录制能力增强:支持 mp3 、WAV PCM -MULAW 格式音频录制。
录屏
支持对应用自身隐私窗口豁免录屏保护,提供隐私确认窗口和录屏状态提示。
支持录屏时排除指定窗口的画面。
支持配置屏幕旋转并可动态调整旋转参数。
支持麦克风和系统音同时录制。
音视频编解码
新增 AVTranscoder 转码接口,支持降低码率,输出视频编码 AVC、音频编码 AAC、封装格式 MP4 的视频文件,减少传输 / 存储数据量。
DRM
AVPlayer / AVCodec 支持 DASH 协议节目的 DRM 信息解析、支持 TS 封装的 H265 视频格式的解密、支持音频解密。
AVCodec DRM 适配增加解密参数设置。
相机
新增模式化能力,包括:延时摄影、全景、流光快门、大光圈录像、荧光摄影。
新增相机 PerConfig 一键配置机制,确保相机效果一致,降低开发复杂度。
优化分段式流程,提升拍照 / 录像的性能与质量。
对标 ArkTS API 能力,补齐相关 C API。
增强相机使用体验,包括:镜像、变焦、防抖、连拍、相机状态通知等。
图片
EXIF 读写能力增强,支持 EXIF 批量读写,GIF 支持获取播放次数信息。
支持 HDR 能力:HDR 双层编解码、HDR 与 SDR 互转。
编解码格式增强,支持 HEIF 编解码,DNG 解码。
编创框架基于 NDK 的 C API 补齐,包括:效果器基类、滤镜基类、自定义算法。
事件通知
CEM 工具新增支持发布自定义公共事件。
Emitter 新增泛型接口,可以用来直接传递 Sendable 对象。
支持同步查询通知的使能状态。
基础通信
支持三方应用通过网络管理连接热点。
网络管理
网络管理能力
支持通过创建 NetConnection 对象连接目标指定 Wi-Fi 热点。
提供网络管理状态监听、应用级代理监听等能力的基于 NDK 的 C API。
网络协议栈能力
支持将 TCP Socket 升级成 TLS Socket,提升通信安全性。
TLS Socket 支持跳过证书校验,避免特殊情况下无法校验证书的场景。
所有 Socket 均支持获取本地 IP 与端口。
HTTP 支持配置证书锁定信息。
HTTP 支持 brotli 压缩算法。
电源
支持获取当前充电电流,三方应用可以通过 nowCurrent 获取当前设备电流。
支持飞行模式的温度管控动作,开发者可定制温控策略控制设备进入飞行模式。
支持根据 WorkSource 代理运行锁辅助资源调度模块进行功耗控制。
支持低电量时从 S3 睡眠状态唤醒后自动进入 S4 休眠,实现超长待机特性。
支持系统启动后读取并广播设备壳 / 套的在位信息,电池信息内核节点和是否发广播等支持开发者配置。
USB
USB DEVICE 配置管理安全访问控制增强。
USB 标准数据传输模式 (中断传输、Bulk 传输) 功能增强。
支持标准类型 USB 外设安全管控。
启动恢复
支持 Native 软件包打包、安装、运行和卸载,搭建 Native 软件包开发和发布系统,有助于生产力软件生态能力的快速构建,也有助于系统开发者提升开发效率。
提供可重置的开发者匿名设备标识符 ODID,代替 UDID 以及其他的硬件标识符。
支持运行 bftpd 命令,支持 user 模式下调试应用沙箱数据访问。
全球化
提供 C API 支持 ICU4C 标准的国际化能力。
国际化的格式化处理能力支持屏幕大小自适应。
全面支持伪本地化测试。
提供 C API 支持资源文件管理能力。
字符串资源支持可翻译性的标记。
提供小语种字库能力。
安全
加解密算法库框架
对标部分常用加解密算法能力的 ArkTS API,提供对应的 C API。
支持 SM4-GCM 算法接口。
证书管理
提供拉起证书管理界面的 API。
提供获取应用私有证书列表的 API。
程序访问控制
地理位置权限支持单次授权选项。
支持拉起设置页面的权限管理应用界面。
用户 IAM
支持口令有效期检查。
支持恢复密钥。
账号
支持注销本地账号。
支持创建本地账号时,指定账号短名称(用作个人文件夹名称)。
支持查询本地账号名称。
新增隐私账号类型。
新增解锁认证意图。
新增图形、四位 PIN 凭据类型。
ArkCompiler
ArkTS 前端编译器
语法增强,编译目标从 es2017 切换到 es2021,支持编译带有 es2018~es2021 语法特性的源码文件。
混淆能力增强,支持异常堆栈还原的能力、文件粒度不混淆的功能、HAP 与 HSP 模块文件名混淆功能、白名单通配符功能。
ArkTS 运行时
支持模块懒加载,在变量被真正使用时再同步加载执行文件,提升应用启动性能。
并发能力增强,提供 Sendable 对象共享机制,优化对象跨线程通信性能;TaskPool 提供任务队列、长时任务、周期任务等功能。
调试功能增强,支持反向调试、Smart Stepinto 等功能。
调优功能增强,支持 hiperf / profiler 混合回栈、多实例 HeapDump 功能。
ArkTS 基础库
支持高精度浮点运算功能,提供 StringDecoder 字符流解码能力、stream 数据流处理能力,支持位向量。
JSVM
提供系统 JS 引擎,支持高性能运行 JS 和 WASM 的能力。
综合传感处理平台
拖拽框架
支持随着窗口旋转,旋转拖拽窗口。
支持三设备之间进行拖拽。
支持应用自定义配置拖拽过程中不显示数量角标。
支持数据接收方自定义剪切与复制行为。
键鼠穿越
管控双端同时发起 activate 接口调用。
键鼠穿越时序问题优化,减少系统依赖,消除多进程间时序问题。
提高穿越管理性能,提高成功率,降低穿越时延。
多模输入
提供 C API 支持设备信息查询等相关能力。
泛 Sensor
vibrator
部分异步查询接口提供同步版本 API。
系统可以根据不同的器件能力等级更好的使用马达器件触发振感。
sensor
部分异步查询接口提供同步版本 API。
提供 C API 支持线性加速度、游戏旋转向量传感器。
无障碍服务
放大手势,支持通过手势对屏幕内容进行放大显示操作。
主动播报能力,应用适配屏幕朗读时,在一些动态变化的场景下,可支持通过无障碍进行变化信息的主动播报。
主动聚焦能力,应用适配屏幕朗读时,在某些场景下,可对组件请求主动聚焦。
资源调度
后台任务
应用申请长时任务类型,支持同时申请多种类型的长时任务。
应用申请 DATA_TRANSFER 下载类长时任务,支持返回下载通知给应用进行进度更新。
性能功耗热融合管控
根据当前温度、负载以及是否处于高负载场景等信息决策出系统负载融合档位,应用注册系统负载回调后,可根据系统负载融合档位的不同等级,自适应降级自身业务负载,从而降低整机负载。
代理提醒
应用申请重复类型的日历提醒时,支持指定剔除日,在剔除日内不进行提醒。
应用申请提醒时,wantAgent 支持传递 parameters 参数,在点击提醒后跳转到目标 UIAbility 时,携带 parameters 参数。
应用查询已发布的提醒时,查询结果中返回对应的 reminderId 。
测试框架
支持跨平台接口的兼容性测试。
DFX
提供判断 HDC 调试器是否连接的 API。
支持在开发者模式打开 trace 功能。
开放主线程超时事件的感知。
errorManager 支持 TaskPool 和 Worker 监听未处理的 Reject 事件。
内核
提供基于用户交互关系的线程 QoS 等级标注和调度。
上传下载
request.agent.Fault 细化了错误类型,便于开发者快速定位接口使用问题。
request.agent.Config 新增 proxy 成员,支持设置任务的网络代理地址。
request.agent.Task 支持使用 network.json 配置文件配置 TLS 证书锁定指纹。
request.agent.FileSpec 支持指定应用沙箱 base 目录下的所有文件路径,便于开发者管理沙箱文件;同时支持前台上传公共文件,例如图库文件、相册文件等,减少额外拷贝带来的开销。
输入法框架
基于 NDK 的 C API 新增支持自绘 UI 组件使用输入法,包括拉起、退出输入法,处理文字上屏请求等操作。
优化拉起键盘时回调时序,输入法应用可根据输入框属性及时调整键盘显示内容。
时间时区
提供 NTP 时间强制刷新和获取当前 NTP 时间的系统 API。
基于 NDK 的 C API 提供获取时区的能力。
剪贴板
基于 NDK 的 C API 支持剪贴板的能力。
提供跨设备剪贴板开关。
在应用升级到 API 12 及以后,对读取剪贴板接口增加读权限校验。
Web
网络接管特性增强,支持获取请求的 FrameUrl,支持获取被拦截请求的 ResourceType。
支持 Web 场景输入法预上屏能力。
支持 Web 组件键盘托管能力。
支持 Web 组件与 ArkUI 原生组件同步绘制能力。
支持设置 File 协议可跨域访问的白名单目录。
支持应用可指定渲染子进程。
Web 组件支持加速度陀螺仪。
Web 组件支持 H5 页面智能填充。
Web 组件支持 BFCache 能力。
完善 Web 组件软键盘避让机制,支持 Resize 和 Offset 模式。
主题框架
支持通过文件夹目录使能主题,相比压缩包使能,提升使能主题的性能。
支持卡片资源的管理,支持被添加主题卡片的增删改查能力。
为外屏设备做特性化功能,支持使能外屏主题。
主题使能支持不切换当前“active”目录。
编译构建
编译构建依赖的 CMake 版本从 3.16.5 升级到 3.28.2。