资讯动态

HarmonyOS(OpenHarmony)集成 libpag:PAG 动画实时渲染库的接入与构建指南

发布时间:2026/10/4 14:59:36 来源:尧图企业网站定制
图形学音视频跨平台【免费下载链接】libpagThe official rendering library for PAG (Portable Animated Graphics) files that renders After Effects animations natively across multiple platforms.项目地址https://gitcode.com/gh_mirrors/li/libpag点击查看免费下载导读本文以ohos/libpag/README.md为骨架系统讲解 libpag 在 HarmonyOS NextOpenHarmony平台上的定位、核心能力、OHPM 集成方式与源码构建流程并结合作品仓库中ohos/libpag模块的真实源码ArkTS API、HAR 包配置、原生库导出进行纵深印证。读完本文你将掌握如何在自己的 HarmonyOS 应用中通过 OHPM 安装tencent/libpag、如何用PAGView/PAGViewController播放 PAG 动画并配置播放参数以及如何从源码构建和调试这个渲染库。一、libpag 与 PAG 是什么libpag 是 PAGPortable Animated Graphics便携式动画图形文件的实时渲染库能够同时渲染矢量动画与位图光栅动画覆盖 iOS、Android、OpenHarmony、macOS、Windows、Linux、Web 等多个平台。PAG 本身是一种开源的动画记录文件格式。动画设计师可以通过 PAGExporter 插件在 Adobe After Effects 中一键导出.pag文件并借助 PAGViewer 应用进行预览——PAGExporter 与 PAGViewer 均提供 macOS 与 Windows 版本。按照官方文档说明PAG 已被微信、手机 QQ、王者荣耀、腾讯视频、QQ 音乐等 40 腾讯应用采用服务数亿用户。在 HarmonyOS 生态中libpag 以HARHarmonyOS Ability Resource静态共享包的形式发布包名为tencent/libpag版本 1.0.1。从仓库中的 ohos/libpag/oh-package.json5 可以看到包的元信息main字段指向Index.ets即对外 API 的统一出口依赖项为libpag.so本地原生库位于src/main/cpp/types/libpag说明 ArkTS 层通过 NAPI 桥接 C 原生渲染内核许可证为 Apache-2.0。仓库中 ohos/libpag/CHANGELOG.md 记录了版本演进v1.0.1 将库类型由动态库改为har原因动态库无法正常引入使用v1.0.0 为初始版本——这解释了为何当前模块以 HAR 形式提供。二、四大核心优势官方口径以下优势均来自官方文档的明确说明可作为评估选型的事实依据高效文件格式得益于高度紧凑的二进制格式设计导出同样动画时 PAG 文件比 JSON 文件解码快约 10 倍、体积小约 50%。位图或音视频素材可内嵌进单个文件无需附带其他资源便于分发。全量 AE 特性支持PAG 将矢量导出与位图导出技术结合可把 AE 动画完整导出到单个文件连第三方插件特效也能一并导出而不像部分方案只支持有限的矢量特性。可量化的性能PAGViewer 内置性能监控面板可展示 PAG 文件的归一化性能数据让设计师不依赖开发也能自查与优化性能配合 PAGExporter 插件内置的数十种自动优化手段兼顾视觉效果与性能。运行时可编辑动画通过 PAG SDK 灵活的编辑 API开发者可在运行时修改单个 PAG 文件的图层结构、将多个 PAG 文件混合成一个合成、替换文本与图片并保留所有预置动画效果大幅降低视频模板类产品的开发工作量。三、系统要求在 HarmonyOS 上使用 libpag 的硬性前提HarmonyOS Next 5.0.0(12) 或更高版本。仓库中 ohos/libpag/src/main/module.json5 进一步印证了包的分发形态与运行环境type为har支持的设备类型为phone手机、tablet平板、2in1二合一设备声明了ohos.permission.INTERNET权限用途场景绑定在PAGFile上、使用时授权这与 PAGView 支持加载网络路径文件的异步接口相呼应。四、快速开始在 HarmonyOS 应用中集成官方文档提供了两种安装方式以下逐一说明。方式一通过 OHPM 安装在项目根目录执行ohpm install tencent/libpagOHPMOpenHarmony Package Manager会自动解析并安装tencent/libpag及其依赖。方式二手动声明依赖在应用模块的oh-package.json5中手动添加依赖项dependencies: { tencent/libpag: ^1.0.1, }然后执行安装命令ohpm install也可使用发布包你还可以直接使用从 release 页面下载的 har 包将其引入工程后使用。五、ArkTS 层 API 一览与典型播放流程安装完成后tencent/libpag的对外接口统一由 ohos/libpag/Index.ets 导出主要类型包括视图与控制器PAGView、PAGViewV2、PAGViewController、PAGImageView、PAGImageViewV2、PAGImageViewController播放核心PAGPlayer、PAGSurface、PAG数据模型PAGFile、PAGComposition、PAGLayer含PAGLayerType、PAGImage、PAGImageLayer、PAGShapeLayer、PAGSolidLayer、PAGTextLayer、PAGMarker、PAGVideoRange、PAGText能力与工具PAGFont、PAGDiskCache其中PAGView是声明式 ArkUI 组件从源码 ohos/libpag/src/main/ets/PAGView.ets 可见其本质是对XComponenttype: XComponentType.SURFACE、libraryname: pag的封装组件加载完成后回调controller.update()并通过onVisibleAreaChange监听可视区域变化按可视比例把显隐状态同步给原生层从而在列表快速滚动等场景下自动停止离屏渲染、节省电量。一个典型的最小使用流程基于PAGViewController的公开方法见 ohos/libpag/src/main/ets/PAGViewController.ets创建PAGViewController与PAGView组件绑定aboutToAppear时attachToView用setPath(path)从本地路径加载 PAG 文件文件不存在或数据非法时返回false或用setPathAsync(path)异步加载本地/网络路径文件返回PromisePAGFile | null也可用setComposition(composition)直接设置合成对象调用play()开始播放pause()暂停setRepeatCount(n)设置播放次数0 或负数表示无限循环默认 1 次通过PAGViewListener接口onAnimationStart/onAnimationEnd/onAnimationRepeat/onAnimationCancel/onAnimationUpdate监听动画生命周期调用addListener/removeListener管理监听器。PAGViewController还提供了一组对实际业务非常有用的配置方法默认值均来自源码注释方法作用默认值/取值setScaleMode(mode)设置内容适配方式PAGScaleMode调用后改变矩阵setMatrix(matrix)自定义变换矩阵会强制 scaleMode 为 None—setMaxFrameRate(n)限制渲染最大帧率小于 PAG 文件实际帧率时丢帧换性能60setCacheEnabled(v)为静态内容缓存位图复杂矢量层可显著提速但更耗显存truesetCacheScale(v)内部图形缓存缩放系数小于 1.0 会变模糊但省显存1.0范围 0.0~1.0setUseDiskCache(v)将视频合成等解码数据缓存到磁盘降低内存、提升性能—setVideoEnabled(v)关闭后跳过视频合成的渲染truesetSync(v)是否在主线程同步播放falsesetProgress(p)设置播放进度0.0~1.0—freeCache()立即释放视图缓存缓解内存压力—makeSnapshot()截取当前画面为image.PixelMap未呈现过返回 nullgetLayersUnderPoint(x, y)获取指定像素点下的图层列表—release()立即释放控制器资源—此外PAGView还提供了getBounds(layer)获取图层在视图坐标系下的像素显示区域便于做点击热区与精准交互。原生层符号通过 ohos/libpag/export.def 以*pag*全局导出确保 NAPI 桥接符号在动态链接时可见。六、从源码构建 libpag如果你想深入内核或参与开发官方建议在macOS 平台使用 CLion IDE进行开发构建。分支管理约定main分支是活跃开发分支包含最新特性与修复release/下的分支是经过完整测试的稳定里程碑分支会周期性从main切出切出后仅合入高优先级修复。注意当前仓库仅包含PAG 4.0 之后的最新代码如需使用旧版 PAG 3.0请从 release 页面下载预编译库。构建前置工具链官方要求的最低版本如下Xcode 13.0GCC 9.0Visual Studio 2019NodeJS 14.14.0Ninja 1.9.0CMake 3.13.0QT 6.2.0Emscripten 3.1.58第三方依赖管理depsynclibpag 使用 depsync 工具管理第三方依赖macOS 平台在项目根目录直接运行脚本脚本会自动安装必要工具并同步所有第三方仓库./sync_deps.sh其他平台先安装最新版 Node.js可能需要重启电脑再全局安装 depsyncnpm install -g depsync然后在项目根目录运行depsync同步过程中可能需要 Git 账号与密码请预先开启git-credential-store以便后续CMakeLists.txt自动触发同步。用 CLion 构建同步完成后用 CLion 打开项目并构建 pag 库macOS无需额外 CLion 配置Windows需确保已安装 VS2019 的 [Desktop development with C] 与 [Universal Windows Platform development] 两个组件然后在File - Setting - Build, Execution, Deployment - ToolChains中将 CLion 工具链设置为Visual Studio架构选amd64推荐或x86。如果 cmake 构建过程出错请将 cmake 命令行工具升级到最新版本后重试。七、许可与贡献libpag 采用 Apache Version 2.0 许可详见仓库根目录的 LICENSE.txt。需要说明的是本仓库中腾讯代码的版权声明此前以 THL A29 Limited 名义登记该实体现已注销所有既往分发副本应视为以 Tencent 名义持有版权。使用 libpag SDK 时请遵守 PAG SDK 的个人信息处理规则隐私政策。如有改进建议欢迎提交 issue / pull request提交前请先阅读 CONTRIBUTING.md。结语通过本文可以看到libpag 在 HarmonyOS Next 上以 HAR 包形态提供了从 PAG 文件加载、播放控制到图层编辑、性能调优的一整套 ArkTS API底层则由libpag.so原生内核支撑。无论是直接ohpm install tencent/libpag快速接入还是拉取源码用 CLion 自行构建你都能在 OpenHarmony 设备上稳定渲染出 AE 制作的 PAG 动画并将文本替换、图像替换、多文件合成等运行时编辑能力直接落地到自己的产品中。赞分享图形学音视频跨平台【免费下载链接】libpagThe official rendering library for PAG (Portable Animated Graphics) files that renders After Effects animations natively across multiple platforms.项目地址https://gitcode.com/gh_mirrors/li/libpag点击查看免费下载相关推荐hakchi2社区资源大全最佳mods、主题和工具推荐终极指南hakchi2社区资源大全最佳mods、主题和工具推荐终极指南 hakchi2是一款强大的NES/SNES Classic Mini游戏主机自定义工具允许您如何构建智能微信机器人WeChatFerry完整开发指南与实战应用如何构建智能微信机器人WeChatFerry完整开发指南与实战应用 WeChatFerry是一款功能强大的微信机器人开发框架为开发者提供了通过编程方式控制微超全LottieArkTS实战指南从0到1掌握OpenHarmony动画渲染黑科技超全LottieArkTS实战指南从0到1掌握OpenHarmony动画渲染黑科技 你还在为OpenHarmony动画开发发愁吗 当应用需要呈现流畅细腻的动OpenHarmony图形学前端上一篇使用 inquirer/external-editor 调用系统编辑器编辑文本API 全解与源码原理下一篇Windows风扇智能控制终极指南从噪音烦恼到静音大师的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑