三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

HarmonyOS NEXT AI 智能生活助手:项目打包与发布

HarmonyOS NEXT AI 智能生活助手:项目打包与发布

HarmonyOS NEXT AI 智能生活助手:项目打包与发布

图1:项目打包发布流程

前言

经过 27 篇的开发,HarmonyAI 已经具备完整功能。本文将介绍项目打包与发布流程,包括构建配置、签名打包、版本管理、CI/CD 自动化和多渠道发布策略。

发布是开发流程的最后一步,也是最关键的一步。一个完整的发布流程需要经过编译、测试、签名、打包、上架等多个环节。本文将覆盖 HarmonyOS NEXT 应用发布的完整链路。


一、构建配置

1.1 build-profile.json5

// build-profile.json5 { "app": { "products": [ { "name": "default", "signingConfig": "release", "buildSettings": { "compatibleSdkVersion": "5.0.0", "compileSdkVersion": "5.0.0", "targetSdkVersion": "5.0.0" } } ] }, "modules": [ { "name": "entry", "srcPath": "./entry", "buildProfile": "./entry/build-profile.json5" } ] }

1.2 构建流程与耗时

构建步骤命令产出耗时
清理hvigorw clean5s
编译hvigorw assembleHapentry-default.hap30s
签名DevEco Studio 自动签名后的 HAP10s
打包hvigorw assembleAppHarmonyAI.app45s
测试hvigorw test测试报告20s

1.3 代码混淆配置

// obfuscation-rules.txt # 保持入口类 -keep class com.harmonyai.entry.** { *; } # 保持数据模型 -keep class com.harmonyai.model.** { *; } # 保持 Provider 接口(反射调用) -keep class com.harmonyai.provider.LLMProvider { *; } # 混淆 AI 相关类 -obfuscate class com.harmonyai.provider.** -obfuscate class com.harmonyai.service.**

二、版本号规范

2.1 版本阶段定义

版本阶段功能范围对应博客里程碑
v0.0.1Alpha工程创建01-02项目初始化
v0.0.2 - v0.0.9Alpha基础功能03-10基础能力
v0.1.0 - v0.1.9BetaAI 能力模块11-20AI 核心
v0.2.0 - v0.2.9RC优化与完善21-28优化发布
v1.0.0Release正式版29-30正式上架

2.2 版本号自动化管理

// utils/VersionManager.tsexportclassVersionManager{privatestaticreadonlyVERSION_FILE='build-profile.json5';privatestaticreadonlyAPP_VERSION_KEY='app.products[0].buildSettings.version';staticasyncbumpVersion(type:'major'|'minor'|'patch'):Promise<string>{constcurrent=awaitthis.getCurrentVersion();constparts=current.split('.').map(Number);switch(type){case'major':parts[0]++;parts[1]=0;parts[2]=0;break;case'minor':parts[1]++;parts[2]=0;break;case'patch':parts[2]++;break;}returnparts.join('.');}staticasyncgetCurrentVersion():Promise<string>{// 从 build-profile.json5 读取版本号return'1.0.0';}staticgenerateChangelog(fromTag:string,toTag:string):Promise<string>{// 生成版本间的变更日志returnPromise.resolve(`## v1.0.0 (2025-01-15) ### Features - AI 聊天功能 - 多模型支持(OpenAI/DeepSeek/Qwen/智谱/豆包) - 主题切换(Light/Dark/Auto) - 玻璃拟态 UI ### Bug Fixes - 修复流式输出卡顿 - 修复安全区适配问题`);}}

三、发布清单

3.1 发布检查器

// utils/ReleaseChecker.tsexportclassReleaseChecker{staticreadonlyCHECKLIST:CheckItem[]=[{id:'proguard',name:'代码混淆配置',required:true,checked:false},{id:'permissions',name:'权限最小化审查',required:true,checked:false},{id:'log',name:'关闭调试日志',required:true,checked:false},{id:'version',name:'版本号更新',required:true,checked:false},{id:'privacy',name:'隐私政策',required:true,checked:false},{id:'description',name:'应用描述撰写',required:true,checked:false},{id:'icon',name:'应用图标检查',required:true,checked:false},{id:'crash',name:'崩溃日志关闭',required:true,checked:false},{id:'network',name:'网络策略配置',required:true,checked:false},{id:'apikey',name:'API Key 未硬编码',required:true,checked:false},{id:'screenshots',name:'应用截图准备',required:false,checked:false},{id:'splash',name:'启动页优化',required:false,checked:false}];staticasyncrunAll():Promise<CheckResult>{constitems=this.CHECKLIST;constrequired=items.filter(i=>i.required);constchecked=items.filter(i=>i.checked);return{total:items.length,checked:checked.length,requiredTotal:required.length,requiredChecked:required.filter(i=>i.checked).length,canRelease:required.every(i=>i.checked)};}}interfaceCheckItem{id:string;name:string;required:boolean;checked?:boolean;}interfaceCheckResult{total:number;checked:number;requiredTotal:number;requiredChecked:number;canRelease:boolean;}

3.2 发布前验证清单

exportconstRELEASE_CHECKLIST:ReleaseCheckItem[]=[// 构建{id:'B001',name:'编译成功',category:'build',required:true,passed:false},{id:'B002',name:'代码混淆开启',category:'build',required:true,passed:false},{id:'B003',name:'资源文件压缩',category:'build',required:false,passed:false},// 安全{id:'S001',name:'API Key 未硬编码',category:'security',required:true,passed:false},{id:'S002',name:'调试日志关闭',category:'security',required:true,passed:false},{id:'S003',name:'网络请求使用 HTTPS',category:'security',required:true,passed:false},// 内容{id:'C001',name:'隐私政策完整',category:'content',required:true,passed:false},{id:'C002',name:'应用截图已更新',category:'content',required:false,passed:false},{id:'C003',name:'版本号已更新',category:'content',required:true,passed:false},{id:'C004',name:'更新日志已撰写',category:'content',required:true,passed:false},// 合规{id:'R001',name:'权限最小化',category:'compliance',required:true,passed:false},{id:'R002',name:'未成年人保护',category:'compliance',required:true,passed:false}];exportclassReleaseValidator{staticasyncrunAll():Promise<{passed:number;total:number;canRelease:boolean}>{constrequired=RELEASE_CHECKLIST.filter(i=>i.required);constpassedRequired=required.filter(i=>i.passed).length;return{passed:RELEASE_CHECKLIST.filter(i=>i.passed).length,total:RELEASE_CHECKLIST.length,canRelease:required.length===passedRequired};}}interfaceReleaseCheckItem{id:string;name:string;category:'build'|'security'|'content'|'compliance';required:boolean;passed:boolean;note?:string;}

3.3 检查类别分工

检查类别必检项选检项负责人
构建编译、混淆、签名资源压缩开发
安全API Key、日志、HTTPS代码审计安全
内容隐私政策、版本号、更新日志截图产品
合规权限、未成年人无障碍法务

四、自动化构建流水线

4.1 CI/CD 配置

# .github/workflows/build.ymlname:HarmonyAI Buildon:push:tags:-'v*'jobs:build:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4-name:Setup DevEcorun:|wget https://contentcenter-drcn.dbankcdn.com/Deveco_studio_RELEASE-5.0.0.zip unzip Deveco_studio_RELEASE-5.0.0.zip-name:Build HAPrun:|./hvigorw assembleHap --mode=release-name:Sign HAPrun:|./hvigorw signHap-name:Upload Artifactuses:actions/upload-artifact@v4with:name:HarmonyAI-releasepath:./entry/build/output/hap/release/

4.2 CI 流程表

CI 步骤工具触发条件耗时产出
代码检查hvigor lint每次 Push30s检查报告
单元测试hvigor test每次 Push60s测试报告
构建hvigor assembleHapTag 触发90sHAP 包
签名hvigor signHapTag 触发20s签名 HAP
发布手动Release 创建上架包

五、多渠道打包

5.1 渠道配置

// utils/MultiChannelBuilder.tsexportclassMultiChannelBuilder{staticreadonlyCHANNELS={huawei:{name:'华为应用市场',icon:'app_icon_huawei'},tencent:{name:'应用宝',icon:'app_icon_tencent'},xiaomi:{name:'小米应用商店',icon:'app_icon_xiaomi'},oppo:{name:'OPPO 软件商店',icon:'app_icon_oppo'}};staticasyncbuildForChannel(channel:string):Promise<void>{constconfig=this.CHANNELS[channelaskeyoftypeofthis.CHANNELS];if(!config)thrownewError(`Unknown channel:${channel}`);// 替换渠道图标awaitthis.replaceIcon(config.icon);// 打包hilog.info(0x0000,'Build','Built for channel: %{public}s',channel);}privatestaticasyncreplaceIcon(iconName:string):Promise<void>{hilog.info(0x0000,'Build','Icon replaced: %{public}s',iconName);}}

5.2 渠道清单

渠道包名后缀图标特色功能
华为应用市场.huaweiapp_icon_huaweiHMS 集成
应用宝.tencentapp_icon_tencent微信分享
小米应用商店.xiaomiapp_icon_xiaomiMIUI 适配
OPPO 软件商店.oppoapp_icon_oppoColorOS 适配

六、发布后监控

6.1 发布监控实现

// utils/PostReleaseMonitor.tsexportclassPostReleaseMonitor{staticasyncmonitor():Promise<void>{// 崩溃率监控constcrashRate=awaitthis.getCrashRate();if(crashRate>0.01){hilog.warn(0x0000,'Release','Crash rate above threshold: %{public}f%%',crashRate*100);}// 用户反馈监控constfeedback=FeedbackCollector.getInstance().getRecentFeedbacks(50);constnegativeCount=feedback.filter(f=>f.type==='dislike').length;if(negativeCount>10){hilog.warn(0x0000,'Release','High negative feedback count: %{public}d',negativeCount);}// 性能监控constreport=PerformanceMonitor.getInstance().generateReport();if(report.fps<30){hilog.warn(0x0000,'Release','Low FPS detected: %{public}f',report.fps);}}privatestaticasyncgetCrashRate():Promise<number>{// 从崩溃日志统计return0.001;// 示例值}}

6.2 监控指标

指标健康阈值告警阈值采集周期
崩溃率< 0.1%> 1%实时
负反馈率< 5%> 10%每小时
启动时长< 1s> 3s每次启动
ANR 率< 0.01%> 0.1%实时

七、Git 提交

gitadd.gitcommit-m"chore(release): 项目打包与发布 v1.0.0-rc - 构建配置优化(签名/打包/混淆) - 版本号规范(Alpha/Beta/RC/Release) - 发布清单检查器(12项检查) - CI/CD 自动化流水线 - 多渠道打包支持(华为/应用宝/小米/OPPO) - 版本号和变更日志自动化 - 发布后监控(崩溃/反馈/性能) Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>"gittag v0.2.7

总结

本文介绍了项目打包与发布的完整流程。核心要点如下:

  1. 构建流程:清理 → 编译 → 签名 → 打包,hvigor 工具链全自动化
  2. 版本管理:Alpha/Beta/RC/Release 四阶段规范,语义化版本控制
  3. 代码混淆:保护核心代码,保留接口和模型类
  4. 发布清单:12 项检查确保发布质量,分构建/安全/内容/合规四类
  5. CI/CD 自动化:GitHub Actions 流水线,Tag 触发自动构建
  6. 多渠道打包:华为/应用宝/小米/OPPO 多市场适配
  7. 发布后监控:崩溃率、用户反馈、性能指标实时监控

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源

  • DevEco Studio 打包指南
  • HarmonyOS 应用签名文档
  • HarmonyOS 版本管理
  • HarmonyOS 代码混淆
  • GitHub Actions 官方文档
  • 华为应用市场上架指南
  • Semantic Versioning 规范

下一篇预告:[29-源码解析与项目复盘]—— 对整个 HarmonyAI 项目进行源码解析与复盘,分析架构设计的得失,总结经验教训,并展望未来改进方向。

← 返回列表