OpenHarmony生态千帆起,如今投入OpenHarmony生态“正当时,就在昨天晚上,OpenHarmony 4.0 Release的文档正式发布,因为在之前的规划里,定的是10.25日,虽迟但到,终于OpenHarmony 4.0 Release还是和大家见面了。这一次的更新,对于我们开发者来说,不得不说是一个重磅的更新。
开发套件同步升级到API 10,相比3.2 Release版本,新增4000多个ArkTS API
在4.7日推出OpenHarmony 3.2Release开始支持采用ArkTS语言+Stage应用模型进行大型应用,同时OpenHarmony 3.2 Release版本提供API Level 9稳定接口。如今开发套件同步升级到API 10,相比3.2 Release版本,新增4000多个ArkTS API。不的不说一句遥遥领先。
OpenHarmony 4.0 Release相比4.0 Beta2的API差异可以看下面的文档。
- 元能力
- 无障碍服务
- 帐号
- AI
- 应用
- ArkUI
- 电源服务
- 包管理
- 网络与通信
- 语言编译运行时
- 定制
- DFX
- 分布式数据管理
- 分布式硬件
- 上传下载
- 驱动
- 文件管理
- 位置服务
- 全球化
- 图形
- Misc软件
- MSDP
- 多模输入
- 媒体
- 事件通知
- 资源调度
- SDK
- 安全
- 泛Sensor
- 启动
- 电话服务
- 测试框架
- 升级服务
- USB
- 用户IAM
- Web
- 窗口
HDF新增200多个HDI接口,硬件适配更加便捷
持续优化图形框架和方舟编译器(ArkCompiler),用户交互体验得到进一步提升
就拿ArkCompiler来说,支持高级语言调试调优,比如大家最关心的热重载性能优化。高级语言并发增强,比如TaskPool支持任务中断和取消,支持优先级设置及自动扩缩容算法。高级语言优化编译比如正式定义ArkTS语法规则并新增ArkTS语法检查,高级语言运行时其它功能,比如支持动态import加载NAPI库。
ArkUI组件定制化能力和组件动效能力也得到进一步增强
基础组件增加或增强:
- 新增UIExtension组件,用于将一个应用通过UIExtensionAblity的方式,嵌入显示到另一个应用内。
- Refresh组件支持自定义下拉刷新能力,允许设置下拉刷新时的显示内容,增强组件基础能力
动画效果增加或增强:
- 支持给组件设置球面高阶属性、下边缘像素扩展、取色模糊、G2圆角、阴影、渐变等高阶图形属性,丰富高阶动画效果
- 支持自定义动画,满足多种多样的动画诉求。
开发效率增强
支持命名路由的能力,借助此能力可针对不同页面设置差异化的切换动效;轻量级ArkUI框架支持定义全局数据对象,可进行应用内页面间的数据共享。
框架能力增强
包括:全局API支持Stage模型多实例场景,支持Rosen渲染后端等。
对富文本的交互能力增强
新增支持手势长按选中文本、支持鼠标拖动选中文本、支持设置文本可编辑(通过通用属性设置富文本框是否使能编辑)、支持对输入事件的监听。
弹窗功能增强,新增错误、信息和询问三种消息弹窗接口,完善警告弹窗三按钮场景和交互优化
分布式硬件支持的范围扩大到音频和输入领域
- 分布式音频支持扬声器(speaker),麦克风(mic)的资源池化管理,可以在native系统服务中跨设备使用远端设备的扬声器和麦克风,并支持控制远端设备的扬声器音量。
- 分布式输入支持键盘,鼠标,触摸板的资源池化管理,可以在系统应用中触发跨设备的键盘、鼠标和触摸板的使用
分布式数据为开发者数据分享带来了全新的统一数据管理框架
详细来说,就是新增统一数据管理框架(Unified Data Management Framework, UDMF),支持数据标准化模型、设备内数据拖拽、UDMF数据存储适配、权限管理、生命周期管理。UDMF框架下支持应用的跨设备拖拽,在此过程中允许对分布式目录中的文件临时授权。
看完了几个重磅更新,我们来看一下具体的信息。
应用框架
Stage模型完善了以下特性:
- 新增Extension能力最小化管理,支持各类Extension满足业务场景需要。
- 新增UIExtension机制,用于实现有界面的Extension,UIExtension的界面可以通过UIExtension组件的方式嵌入到调用方应用的窗口上显示。
- 提供自定义操作业务的ActionExtension、分享业务的ShareExtension、备份恢复业务的BackupExtension、驱动业务的DriverExtension、打印业务的PrintExtension。
- ArkTS卡片能力增强,支持静态卡片配置、静态图展示,有效降低卡片内存资源占用,支持通过数据代理的方式刷新内容,有效降低卡片功耗。
- 支持元服务的分享,应用开发者可以使用UIAbility组件提供的UIAbility.onShare()生命周期方法,设置要分享的数据。用户可以通过分享框把元服务和卡片分享到另外一台终端设备。
- 跨端迁移能力增强,支持调用接口来动态打开和关闭迁移能力。应用可动态选择迁移成功后是否迁移页面栈,以及源端是否退出。
应用包管理
- 支持应用安装包免解压特性,优化系统启动性能和应用安装性能。
- 支持应用、元服务数据共享,在应用安装时,解析证书文件中的data-group-ids列表,建立映射关系,创建数据共享路径,实现应用与元服务数据共享。
- 支持应用安装时设置分发类型和附加信息,提供ArkTS接口实现应用分发类型和附加信息的设置和查询。
- 支持根据文件扩展名查询打开文件的应用列表,实现通过文件扩展名打开文件。
- 支持企业应用,提供企业MDM应用和企业normal应用的安装,以及对企业应用的管理和吊销。
- 支持overlay能力,针对不同产品的显示风格,开发者可以在不重新编译打包情况下,新增资源文件overlay包,实现应用界面风格变换。
- 拆包工具支持多语言,应用市场可查询包中的多语言信息,支持在不同的语言环境下分发应用。
- 支持so文件不解压使用,即不解压so文件到单独目录,运行期直接从包中读取加载so文件,提升安装速度和减少占用的ROM空间。
ArkUI
基础组件增加或增强:
- 新增UIExtension组件,用于将一个应用通过UIExtensionAblity的方式,嵌入显示到另一个应用内。
- Refresh组件支持自定义下拉刷新能力,允许设置下拉刷新时的显示内容,增强组件基础能力
动画效果增加或增强:
- 支持给组件设置球面高阶属性、下边缘像素扩展、取色模糊、G2圆角、阴影、渐变等高阶图形属性,丰富高阶动画效果
- 支持自定义动画,满足多种多样的动画诉求。
开发效率增强
支持命名路由的能力,借助此能力可针对不同页面设置差异化的切换动效;轻量级ArkUI框架支持定义全局数据对象,可进行应用内页面间的数据共享。
框架能力增强
包括:全局API支持Stage模型多实例场景,支持Rosen渲染后端等。
对富文本的交互能力增强
新增支持手势长按选中文本、支持鼠标拖动选中文本、支持设置文本可编辑(通过通用属性设置富文本框是否使能编辑)、支持对输入事件的监听。
弹窗功能增强,新增错误、信息和询问三种消息弹窗接口,完善警告弹窗三按钮场景和交互优化
媒体
媒体方面就是对音频,播控框架。媒体播放,相机,音视频编解码等的优化
音频
- 支持通过Native接口(OHAudio)进行音频播放和录制。对于音频录制和播放的时延比较敏感的场景,使用Native接口可实现更低的时延。
- 支持查询或监听当前优先级最高的播放设备。
- 支持闹钟音量的独立调整。
- 支持通过物理按键设置静音。
- 支持音频焦点:应用播放音频时无需手动申请焦点,系统会在后台自动申请焦点,并自动执行焦点策略(如暂停、淡出、淡出恢复等);应用仅需要注册焦点事件监听函数,以接收焦点事件并更新状态,如暂停时停止进度条。支持短音播放。
- 支持音效模式:应用可查询音频输出的音效模式,切换或关闭音效模式。
- 支持系统内录音能力:可根据音频场景属性筛选,录制系统内播放的音频数据,支持对录音设备进行查询。
- 音频设备能力增强:支持获取音频设备显示名,播放对象详细信息内可获取当前播放输出归属的设备名。支持对蓝牙连接的多个可用于音频播放的设备进行查询并选择音频播放的设备。支持标准USB协议的音频外设。
播控框架
- 支持媒体提供方和控制方之间传递自定义媒体信息,应用可扩展媒体内容展示方式,如媒体控制方可要求媒体提供方按特殊形式显示歌曲歌词。
- 支持媒体播放列表的框架能力,媒体提供方提供播放列表内容,媒体控制方获取播放列表内容并可以选择任一媒体内容进行播放。
- 支持播放历史记录的框架能力,媒体会话框架提供查询历史播放应用的列表,列表项按播放先后顺序排序(包含当前播放的和已退出的应用)。
- 提供自定义媒体事件的传输通道,如歌词内容的传输通道,媒体提供方提供歌词内容,媒体控制方获取歌词内容。
- 提供自定义的媒体控制命令的传输通道,媒体控制方可以利用该自定义命令传输通道向媒体提供方发送自定义控制命令,如媒体控制方要求媒体提供方显示弹幕信息。
媒体播放
- 支持基于HLS协议的网络直播功能以及基于datasource的流式播放功能。
- 支持基于HDI的H.265视频硬解播放能力。
- 支持播放音频属性设置,用户在使用播放器的时候可以选择输出声音的类型。
- 支持视频自带的旋转播放功能。
- 支持音效参数配置,可以在音频框架支持音效的能力基础上进一步配置音效。
相机
- 支持前置预览镜像能力,默认情况下,前置预览画面呈镜像状态。
- 支持分布式摄像头查询该摄像头的主设备属性,包括设备名称和设备类型。
- 支持更精细化的分辨率查询,可以按照预览、拍照、录像用途查询支持的尺寸、格式和帧率信息。
- 相机框架提供横向归一化坐标系[0, 0, 1, 1],所有与坐标相关的操作都基于这套坐标系完成。
- 不同相机应用使用同一个摄像头场景下,相机框架具备优先级管控和互斥策略。
音视频编解码
- 支持获取系统的音视频编解码,可以调用本模块的Native API接口,查询系统编解码能力的支持情况。
- 支持音视频封装,可以调用本模块的Native API接口,完成音视频封装,即将音频、视频等编码后的媒体数据,按一定的格式存储到文件里。
- 支持音视频解封装,可以调用本模块的Native API接口,完成音视频解封装,即从比特流数据中取出音频、视频等媒体帧数据。
主题框架
- 锁屏管理服务:支持锁屏事件回调机制、支持静态/动态壁纸、支持查询锁屏时的业务状态。
- 壁纸管理服务:支持自定义壁纸、支持锁屏/解锁操作、支持重置壁纸。
等等其他方面的细节,
最后也是希望能与大家一起在OpenHarmony上搞大事。
参考
https://gitee.com/openharmony
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v4.0-release.md
https://gitee.com/openharmony/arkcompiler_ets_runtime
https://gitee.com/openharmony/arkcompiler_toolchain