
HarmonyOS APP实战-基于Image Kit的图像处理APP - 第13篇打包发布与总结1. 开篇在上一篇第12篇中我们重点解决了性能优化与资源释放问题通过ImageSource的采样参数setDesiredRegion和setDesiredSize实现大图降采样降低内存占用在处理链路的每个环节旋转、裁剪、滤镜等完成后主动调用PixelMap.release()释放中间对象同时使用弱引用和try/finally确保异常安全。经过优化应用在编辑大尺寸图片时不再出现显式OOM操作流畅度提升明显。现在工程已经具备了完整且稳定的图像处理能力是时候将其打包成可发布的HAP包上架到AppGallery。本篇将完成应用签名的配置、自动化打包脚本的编写并汇总最终的ReleaseNotes。最后对整个13篇系列进行技术总结回顾从零构建一个HarmonyOS图像处理APP的全过程并给出后续可拓展的方向。2. 核心实现2.1 App签名配置HarmonyOS应用在安装前必须经过数字签名签名文件可以通过DevEco Studio的Build → Generate Key and CSR生成也可以使用已有的.p12证书。签名配置存储在build-profile.json5中。代码块1签名配置文件build-profile.json5位于AppScope根目录{ apiType: stageMode, buildOption: { artifactType: hap }, signingConfigs: [ { name: release, // 签名配置名称用于后续引用 type: HarmonyOS, // 签名类型固定为HarmonyOS material: { keyStoreFile: C:/cert/imageapp_release.p12, // p12证书文件路径 certPath: C:/cert/imageapp_release.cer, // 证书文件路径.cer keyPwd: YourKeyPassword, // 证书私钥密码 keystorePwd: YourKeystorePassword, // 证书库密码 materialName: imageapp, // 证书中的KeyAlias signAlg: SHA256withECDSA // 签名算法推荐使用SHA256withECDSA }, provisioningProfile: C:/cert/imageapp_release.p7b // 描述文件.p7b } ] }关键点说明证书和描述文件需在AppGallery Connect中申请。开发调试时可使用“自动签名”模式DevEco Studio自动生成上架时必须使用正式签名。signAlg建议使用SHA256withECDSA兼容性更好。materialName对应生成证书时输入的Key Alias。不要将包含密码的配置文件提交到版本控制建议通过环境变量注入。2.2 打包脚本使用DevEco Studio内置的hvigorw命令行工具可以一键构建HAP包。编写一个Shell脚本方便CI/CD集成。代码块2打包脚本build_hap.sh#!/bin/bash# 图像处理APP打包脚本# 使用方式: ./build_hap.sh [release|debug]set-ePROJECT_DIR$(cd $(dirname$0)pwd) BUILD_MODE${1:-release} OUTPUT_DIR${PROJECT_DIR}/build/output/${BUILD_MODE} echo 开始构建图像处理APP echo 构建模式:${BUILD_MODE} echo 项目路径:${PROJECT_DIR} # 1. 进入项目根目录 cd ${PROJECT_DIR} # 2. 清理上次构建产物 echo 清理上次构建... ./hvigorw clean --mode${BUILD_MODE} -p productdefault --no-daemon # 3. 运行单元测试如有 # echo 运行测试... # ./hvigorw test --mode${BUILD_MODE} --no-daemon # 4. 构建HAP包 echo 开始打包... ./hvigorw assembleHap --mode${BUILD_MODE} -p productdefault --no-daemon # 5. 检查输出 if [ -d ${OUTPUT_DIR} ]; then echo 构建完成产物目录:${OUTPUT_DIR} ls -lh ${OUTPUT_DIR}/*.hap 2/dev/null || echo 未找到HAP文件 else echo 错误输出目录不存在构建可能失败 exit 1 fi echo 构建结束关键点说明hvigorw位于项目根目录由DevEco Studio创建项目时自动生成。assembleHap是构建HAP包的任务。--moderelease会使用build-profile.json5中名为release的签名配置--modedebug使用调试证书。可在CI流水线中调用此脚本实现自动化打包。若需要生成App Pack.app文件用于上架可执行assembleApp任务。2.3 AppGallery服务检查模块可选功能在应用首屏或“关于”页面中可以检查当前设备是否支持AppGallery用于后续版本更新提示。这里使用ohos.app.appGallery模块。代码块3AppGallery可用性检查器AppGalleryChecker.ets// AppGalleryChecker.ets// 检查当前设备是否安装了AppGallery客户端用于后续引导用户更新或评分import{appGallery}fromohos.app.appGallery;// 导入AppGallery模块/** * 检查AppGallery可用性 * returns true表示AppGallery可用false不可用 */exportfunctionisAppGalleryAvailable():boolean{try{// appGallery.isAppGalleryAvailable() 同步返回布尔值constavailable:booleanappGallery.isAppGalleryAvailable();console.info([AppGalleryChecker] AppGallery可用状态:${available});returnavailable;}catch(error){console.error([AppGalleryChecker] 检查AppGallery失败:${JSON.stringify(error)});returnfalse;}}/** * 监听应用安装/卸载事件可选 * param callback 事件回调参数为事件类型字符串 */exportfunctionwatchAppGalleryEvent(callback:(event:string)void):void{try{appGallery.on(appInstall,(data){console.info([AppGalleryChecker] 安装事件:${JSON.stringify(data)});callback(install);});appGallery.on(appUninstall,(data){console.info([AppGalleryChecker] 卸载事件:${JSON.stringify(data)});callback(uninstall);});console.info([AppGalleryChecker] AppGallery事件监听已注册);}catch(error){console.error([AppGalleryChecker] 注册监听失败:${JSON.stringify(error)});}}关键点说明ohos.app.appGallery模块提供了isAppGalleryAvailable()、on(event, callback)等API。该模块仅在真机搭载AppGallery的设备上有效模拟器中可能返回false。注册事件监听后需要在页面销毁时调用appGallery.off(event)取消监听防止内存泄漏。此功能可用于“检查更新”按钮若AppGallery可用则跳转到AppGallery详情页否则提示手动下载。2.4 ReleaseNotes 示例在发布前编写ReleaseNotes.md记录版本号和变更内容。# 图像处理APP v1.0.0 Release Notes ## 功能特性 - 图片选择支持从相册或文件管理器选择图片 - 基础编辑缩放、裁剪、旋转、翻转 - 滤镜效果灰度、怀旧、冷色、暖色等预设滤镜 - 色彩调节亮度、对比度、饱和度独立滑块调整 - 水印叠加支持文字和图标水印可拖动位置 - 批量处理多图编辑统一应用裁切/滤镜 - 历史记录支持撤销/重做最多50步 - 性能优化大图降采样、及时释放资源内存占用降低60% ## 兼容性 - HarmonyOS API 11 及以上 - 支持手机、平板 ## 已知问题 - 滤镜色彩矩阵在部分低端设备上渲染稍慢已调优 - 水印字体仅在系统支持的中文字体范围内有效 ## 安装方式 - 通过AppGallery搜索“图像处理”下载安装 - 或使用本HAP包通过DevEco Studio安装到设备3. 运行验证签名配置验证在DevEco Studio中打开build-profile.json5确认签名物料路径正确。然后点击Build → Build Hap(s)选择release模式观察控制台输出。若成功会在build/output/release目录生成entry-default-release.hap。打包脚本验证打开终端进入项目根目录执行./build_hap.sh release。等待脚本完成查看输出目录下的HAP包大小通常2~5MB。AppGallery检查功能将HAP包安装到真机需支持AppGallery打开应用的“关于”页面点击“检查更新”按钮观察日志输出AppGallery可用状态: true。若在模拟器中运行显示false。4. 小结与系列总结本篇完成了图像处理APP的最后一步配置了正式签名build-profile.json5编写了自动化打包Shell脚本build_hap.sh并添加了AppGallery可用性检查模块AppGalleryChecker.ets。至此一个功能完整、性能优化的图像处理APP具备了上架条件。结合ReleaseNotes我们清楚掌握了版本发布的标准流程。系列总结从零到一的HarmonyOS图像处理APP经过13篇的实战我们完成了一个完整的HarmonyOS原生图像处理应用。以下是核心收获与回顾阶段核心模块使用的Image Kit API环境搭建项目创建、权限配置无图片选择PhotoViewPickerohos.multimedia.photoAccessHelper解码与元信息ImageSource解码createImageSourcegetImageInfo缩放裁剪PixelMap变形scalecrop旋转翻转几何变换rotateflip滤镜色彩矩阵setColorMatrix亮度对比度饱和度像素级调整setColorMatrix配自定义矩阵编码导出ImagePackercreateImagePackerpacking批量处理与历史堆栈数据结构无水印Canvas合成Canvas.drawImage本地存储Preferencesohos.data.preferences性能优化采样、释放setDesiredSizerelease打包发布签名、脚本、AppGalleryohos.app.appGalleryImage Kit核心经验所有图片处理操作均基于PixelMap它是内存中的位图表示。createImageSource负责解码createImagePacker负责编码二者成对使用。setColorMatrix是强大的色彩调节工具通过4×5矩阵可实现滤镜和亮度/对比度/饱和度。大图处理必须使用setDesiredSize降采样否则极易内存溢出。每个PixelMap对象在使用后必须release()建议搭配try/finally或Disposable模式。可拓展方向扩展滤镜库集成更多色彩矩阵甚至通过C原生实现GPU加速。人脸识别接入Camera Kit或ML Kit实现人脸美颜。动效集成为滤镜切换添加过渡动画使用animateTo。云存储将编辑后的图片同步到华为云盘。至此本系列全部结束。希望你能跟随每一步代码亲手构建出属于自己的图像处理APP。如果在实战中遇到问题欢迎在评论区交流。感谢阅读