Administrator
发布于 2026-09-01 / 71 阅读
0
0

鸿蒙开发系列(第20篇):应用上架与发布流程——从签名到应用市场审核

鸿蒙开发系列 · 专家篇

前言

从第1篇的Hello World到第19篇的CI/CD流水线,我们用20篇文章的篇幅,走完了一个商业级鸿蒙应用的全生命周期。现在代码写完了,测试通过了,构建产物也生成了。但还有一个最关键的环节没完成——让用户能用上它。

应用上架不是"点一下发布按钮"那么简单。它涉及发布证书配置、包体优化、隐私合规审查、应用市场审核、版本管理、灰度发布、上线后数据分析等一系列流程。任何一个环节卡壳,都可能导致上线延期。

作为本系列的收官之作,本文将系统梳理HarmonyOS应用的完整发布链路,帮你的应用顺利通过审核,触达数亿华为设备用户。


一、发布前的准备工作

1.1 发布检查清单

正式打包前,逐条确认以下事项:

检查项

要求

工具/方法

签名配置

使用发布证书,非调试证书

检查.cer文件有效期

包体大小

元服务≤10MB,应用≤2GB

DevEco Studio构建日志

API等级

与目标设备兼容

module.json5中minCompatibleVersionCode

权限声明

所有使用的权限已声明且合理

检查requestPermissions

隐私政策

已配置且内容完整

AppGallery Connect后台

应用图标

所有分辨率适配

main/resources下各dpi目录

启动页

符合规范,无品牌侵权

视觉走查

测试通过

单元测试+集成测试+UI测试全部通过

Hypium测试报告

混淆配置

release包启用代码混淆

obfuscation.txt

1.2 包体优化

包体大小直接影响下载转化率。优化策略:

优化前:48MB
├── 未压缩图片:18MB
├── 冗余资源:8MB
├── 未启用代码混淆:12MB
├── 调试符号:6MB
└── 未分包:4MB单一HAP

优化后:22MB
├── WebP格式图片:6MB(-67%)
├── 删除冗余/测试资源:2MB
├── 启用代码混淆:5MB(-58%)
├── 去除调试符号:0MB
└── 按设备类型分包:9MB基础包 +按需下载

关键优化手段:

  1. 图片压缩:PNG转WebP,通常可减少50-70%

    # 使用cwebp批量转换
    cwebp -q 85 input.png -o output.webp
    
  2. 资源分包:按设备类型(phone/tablet/car)拆分HAP

    // build-profile.json5
    {
      "targets": [
        { "name": "phone", "deviceTypes": ["phone", "default"] },
        { "name": "tablet", "deviceTypes": ["tablet"] }
      ]
    }
    
  3. 代码混淆:在 obfuscation-rules.txt 中配置:

    -enable-property-obfuscation
    -enable-toplevel-obfuscation
    -enable-filename-obfuscation
    -compact
    
  4. 动态加载:非首屏资源使用@bundle按需加载


二、签名与打包

2.1 发布证书与Profile

上架必须使用发布证书,流程如下:

1. 本地生成密钥对
   keytool -genkeypair -alias release -keyalg EC -keystore release.p12

2. 生成CSR(证书签名请求)
   keytool -certreq -alias release -keystore release.p12 -file release.csr

3. AppGallery Connect申请证书
   上传CSR → 下载release.cer

4. 创建发布Profile
   选择证书 + 包名 + 权限列表 → 下载release.p7b

5. DevEco Studio配置签名
   build-profile.json5中指定release.p7b和release.p12

2.2 多渠道打包

同一应用可能需要区分渠道(如华为市场、内部测试、企业分发):

// entry/build-profile.json5
{
  "app": {
    "signingConfigs": [
      {
        "name": "official",
        "type": "HarmonyOS",
        "material": {
          "certpath": "./certs/release.cer",
          "profile": "./certs/official.p7b",
          "storeFile": "./certs/release.p12",
          "keyAlias": "release",
          "signAlg": "SHA256withECDSA"
        }
      },
      {
        "name": "enterprise",
        "type": "HarmonyOS",
        "material": {
          "certpath": "./certs/enterprise.cer",
          "profile": "./certs/enterprise.p7b",
          "storeFile": "./certs/enterprise.p12",
          "keyAlias": "enterprise",
          "signAlg": "SHA256withECDSA"
        }
      }
    ]
  },
  "products": [
    {
      "name": "default",
      "signingConfig": "official"
    },
    {
      "name": "enterprise",
      "signingConfig": "enterprise"
    }
  ]
}

打包命令:

# 官方市场包
dev eco build --product default

# 企业分发包
dev eco build --product enterprise

2.3 包体验证

上传前验证HAP完整性:

# 使用hdc验证签名
hdc shell bm dump -n com.yourcompany.yourapp

# 检查包信息
hdc shell bm dump -a

# 安装测试
hdc app install entry/build/default/outputs/default/entry-default-signed.hap

三、应用市场上架流程

3.1 AppGallery Connect 上架步骤

Step 1: 创建应用
├── 登录 AppGallery Connect
├── 我的应用 → 新建
├── 填写应用名称、包名、分类
└── 选择设备类型(phone/tablet/watch/car)

Step 2: 完善应用信息
├── 上传图标(216x216px)
├── 上传截图(至少3张,建议6-8张)
├── 填写应用简介、详细描述
├── 填写更新说明(升级场景)
├── 配置隐私政策URL
└── 填写客服联系方式

Step 3: 上传软件包
├── 上传HAP/App包
├── 选择发布国家/地区
├── 配置付费/免费
└── 设置内容分级

Step 4: 提交审核
├── 系统自动检测(约5分钟)
├── 人工审核(1-3个工作日)
└── 审核结果:通过 / 驳回 / 需要修改

Step 5: 发布
├── 审核通过后手动确认上架
├── 或设置定时上架
└── 应用市场展示

3.2 审核常见驳回原因

驳回类型

具体原因

预防措施

功能缺陷

崩溃、闪退、白屏

充分测试,特别是低端设备

权限滥用

申请了无关权限

最小权限原则,逐项说明

隐私合规

未提供隐私政策

准备完整隐私政策文档

内容违规

涉及敏感内容

建立内容审核机制

UI规范

不符合平台设计规范

参考HarmonyOS设计指南

元服务约束

包体超限、Ability超限

开发时持续关注约束指标

支付合规

IAP未使用华为支付

虚拟商品必须走IAP


四、版本管理与灰度发布

4.1 版本号规范

HarmonyOS采用语义化版本:

版本号格式:MAJOR.MINOR.PATCH (如 2.3.1)

MAJOR:重大功能更新,可能存在不兼容变更
MINOR:新功能发布,向后兼容
PATCH:Bug修复,无功能变更

在 AppScope/app.json5 中配置:

{
  "app": {
    "bundleName": "com.example.myapp",
    "versionCode": 231,      // 内部版本号,必须递增
    "versionName": "2.3.1",  // 对外展示版本
    "minCompatibleVersionCode": 200 // 最低兼容版本
  }
}

4.2 灰度发布策略

应用市场支持按用户群灰度发布:

灰度方式

说明

适用场景

按设备

仅指定机型可见

新设备适配验证

按地区

仅指定地区可见

地域化功能测试

按用户比例

随机百分比用户

大规模功能验证

按用户组

白名单用户

内测、VIP用户抢先体验

灰度发布流程:

1. 发布V2.0.0,灰度10%用户
   ├── 监控崩溃率、ANR率
   ├── 收集用户反馈
   └── 观察业务指标

2. 如无异常,扩大至50%

3. 全量发布

4. 保留V1.x.x回滚能力(紧急下架时切换)

五、上线后运营与数据分析

5.1 关键指标监控

指标

说明

健康阈值

DAU/MAU

日活/月活用户

根据产品定位

留存率

次日/7日/30日留存

次日>40%,7日>20%

崩溃率

崩溃次数/启动次数

< 0.1%

ANR率

无响应次数/启动次数

< 0.05%

下载转化率

下载/曝光

> 15%

评分

应用市场评分

> 4.0

5.2 数据分析工具

AppGallery Connect 运营分析:

  • 下载趋势、安装转化、用户留存

  • 崩溃分析、性能监控

  • 用户反馈聚合

集成分析SDK(可选):

// 关键事件埋点
import { hianalytics } from '@kit.HiAnalyticsKit';

// 页面浏览
hianalytics.pageStart('PlayerPage');
hianalytics.pageEnd('PlayerPage');

// 自定义事件
hianalytics.onEvent('record_complete', {
  duration: 120,
  has_transcription: true,
  quality: 'high'
});

// 用户属性
hianalytics.setUserProfile('membership', 'premium');

5.3 用户反馈闭环

用户反馈收集
     │
     ├── 应用市场评论(公开)
     ├── 应用内反馈入口(私有)
     ├── 崩溃上报(自动)
     └── 客服渠道(人工)
     │
     ▼
反馈分类与优先级排序
     │
     ├── P0:崩溃/核心功能不可用 → 立即修复,紧急发布
     ├── P1:影响体验的功能缺陷 → 下个版本修复
     ├── P2:优化建议 → 排期评估
     └── P3:新功能需求 → 产品 backlog
     │
     ▼
修复 → 测试 → 发布 → 回复用户

六、元服务的特殊发布流程

6.1 元服务 vs 应用上架差异

维度

元服务(Atomic Service)

传统应用

审核重点

免安装体验、卡片质量、功能聚焦

功能完整性、稳定性

包体限制

≤10MB

≤2GB

图标要求

需提供卡片预览图

普通应用图标

意图框架

需声明支持的意图

不需要

分发入口

搜索、卡片、NFC等多渠道

主要依赖应用市场

用户评分

评价体系更严格

常规评价

6.2 元服务卡片审核要点

卡片是元服务的"门面",审核时会重点检查:

  • 信息密度:卡片在2×2尺寸下能否展示核心价值

  • 刷新机制:数据是否及时更新,更新频率是否合理

  • 点击行为:点击卡片后的跳转是否自然、无中断

  • 视觉规范:是否符合HarmonyOS卡片设计规范

  • 适配性:在不同尺寸卡片(1×2、2×2、2×4)下的表现


七、完整发布 checklist

## 发布前最终检查

### 技术检查
- [ ] 使用发布证书签名,调试信息已去除
- [ ] versionCode已递增
- [ ] 代码混淆已启用
- [ ] 所有测试通过(单元/集成/UI)
- [ ] 崩溃率和ANR率在阈值内
- [ ] 隐私清单已完整填写

### 素材检查
- [ ] 应用图标:216×216px,PNG格式
- [ ] 应用截图:至少3张,关键流程覆盖
- [ ] 应用视频(可选):30秒功能演示
- [ ] 元服务卡片预览图(如适用)

### 信息检查
- [ ] 应用名称简洁、无侵权
- [ ] 应用描述准确,突出核心价值
- [ ] 更新说明清晰(升级场景)
- [ ] 隐私政策URL可访问且内容完整
- [ ] 客服邮箱/电话有效

### 合规检查
- [ ] 权限申请与实际功能匹配
- [ ] IAP商品已审核通过(如适用)
- [ ] 无敏感/违规内容
- [ ] 未成年人保护机制(如适用)

八、全系列回顾与学习路径

8.1 20篇文章的知识地图

鸿蒙开发系列 · 完整知识体系

初级篇(第1-3篇)
├── 01 DevEco Studio搭建 + 第一个ArkUI应用
├── 02 ArkTS核心语法
└── 03 ArkUI组件、布局与状态管理
        │
        ▼
中级篇(第4-7篇,第11-13篇)
├── 04 页面路由与导航
├── 05 数据持久化
├── 06 网络请求
├── 07 自定义组件与动画
├── 11 元服务开发
├── 12 安全机制与权限管理
└── 13 推送服务与后台任务
        │
        ▼
高级篇(第8-10篇,第14-16篇)
├── 08 性能优化
├── 09 分布式开发
├── 10 大型应用架构设计
├── 14 音视频开发
├── 15 地图与位置服务
└── 16 支付与账号集成
        │
        ▼
专家篇(第17-20篇)
├── 17 HiAI端侧AI集成
├── 18 ArkUI-X跨平台开发
├── 19 单元测试与自动化测试
└── 20 应用上架与发布流程

8.2 从入门到专家的学习路径

阶段

目标

对应篇目

预计时间

入门

能写简单页面

01-03

1周

进阶

能独立完成功能模块

04-07, 11-13

2-3周

熟练

能构建完整应用

08-10, 14-16

3-4周

专家

能主导大型项目

17-20

2-3周


九、小结与展望

本系列从第1篇到第20篇,我们用超过10万字的篇幅,构建了一个完整的HarmonyOS开发知识体系:

  • 初级篇帮你跨过门槛,建立基础认知

  • 中级篇带你掌握核心能力,能独立完成模块开发

  • 高级篇深入特定领域,构建复杂应用

  • 专家篇拓展视野,连接AI、跨平台和工程化

HarmonyOS NEXT是一个仍在快速演进的生态。API 12只是起点,后续的版本会带来更多能力、更好的性能、更丰富的设备形态。作为开发者,最好的准备就是现在就开始写代码。

应用上架不是终点,而是另一个起点。用户反馈会告诉你哪些功能真正有价值,数据会揭示哪些流程需要优化。持续迭代、持续交付、持续学习——这才是工程化的真谛。

感谢一路读到这里的你。如果本系列对你有帮助,欢迎分享给更多开发者。鸿蒙生态的繁荣,需要每一个开发者的参与。


参考阅读


作者:互联网开发站 / 2026-09-01


系列结语

从Hello World到应用上架,我们走完了鸿蒙应用开发的完整旅程。
技术文章的价值不在于收藏,而在于实践。
打开DevEco Studio,开始你的下一个项目吧。


评论