HarmonyOS应用<节气通>开发第50篇:应用上架全流程——从签名到审核通过

引言

应用上架是开发周期的"最后一公里"。代码写得再好,如果无法顺利通过华为应用市场(AppGallery)的审核并触达用户,一切努力都大打折扣。HarmonyOS 应用的上架流程涉及 AGConnect 平台配置、签名证书管理、构建打包、应用市场提交、审核规范等多个环节,每个环节都有明确的规则和常见的踩坑点。

本文基于「节气通」的真实上架经验,提供一份从零到通过审核的完整指南。


学习目标

完成本文后,你将能够:

  • ✅ 完成华为开发者账号注册与 AGConnect 项目创建
  • ✅ 配置应用签名证书(调试/发布)
  • ✅ 执行正式包的构建与打包
  • ✅ 在 AppGallery 提交应用并填写合规信息
  • ✅ 理解审核规则,避免常见驳回原因
  • ✅ 掌握版本更新与灰度发布流程

上架全流程概览

复制代码
┌─────────────────────────────────────────────────────┐
│              应用上架完整流程                         │
│                                                     │
│  1. 准备阶段                                         │
│     ├─ 注册华为开发者账号                             │
│     ├─ 创建 AGConnect 项目                           │
│     └─ 配置应用基本信息                               │
│                                                     │
│  2. 签名配置                                         │
│     ├─ 申请发布证书 (.p12 / .cer)                    │
│     ├─ 配置 Profile 签名描述文件                      │
│     └─ DevEco Studio 中关联签名                      │
│                                                     │
│  3. 构建打包                                         │
│     ├─ 构建 Release 包 (.app)                        │
│     └─ 验证包体信息                                  │
│                                                     │
│  4. 提交上架                                         │
│     ├─ AppGallery Connect 创建应用                   │
│     ├─ 填写应用信息(名称/分类/截图/描述)            │
│     ├─ 上传安装包                                    │
│     ├─ 填写隐私协议、内容分级、权限说明               │
│     └─ 提交审核                                      │
│                                                     │
│  5. 审核与发布                                       │
│     ├─ 人工/自动审核                                 │
│     ├─ 处理审核意见(如被驳回)                       │
│     ├─ 审核通过 → 正式发布 / 分阶段发布              │
│     └─ 版本更新迭代                                  │
│                                                     │
└─────────────────────────────────────────────────────┘

步骤1: 准备工作

1.1 注册华为开发者账号

入口: https://developer.huawei.com/

项目 说明
账号类型 华为账号(手机号或邮箱注册)
认证要求 个人开发者:实名认证;企业开发者:企业认证
费用 注册免费,但部分服务(如高级分析)需付费
注意事项 一个账号可创建最多 100 个应用

1.2 创建 AGConnect 项目

AGConnect(AppGallery Connect)是华为应用服务的统一管理后台。

复制代码
操作路径:
登录 developer.huawei.com
  → 控制台
    → 我的项目
      → 添加项目
        → 填写项目名称(如: JieQiTong)
        → 选择平台: Web / Android / HarmonyOS (选 HarmonyOS)
        → 创建项目

1.3 在项目中添加应用

复制代码
操作路径:
项目列表 → 点击刚创建的项目
  → 添加应用
    → 应用名称: 节气通
    → 应用包名: com.example.jieqitong (必须与代码中 module.json5 的 bundleName 一致!)
    → 应用类别: 工具 / 生活(根据实际选择)
    → 默认语言: 中文
    → 创建应用

关键 : bundleName 必须与代码完全一致,否则签名校验不通过。

创建成功后,记录以下信息:

信息 位置 用途
APP ID 应用信息 → AppGallery Connect 配置 应用唯一标识
Client ID 应用信息 → OAuth 2.0 客户端ID 第三方认证
API Key 项目设置 → 常规 HMS SDK 初始化

步骤2: 签名配置

HarmonyOS 应用必须经过数字签名才能在真机上运行和上架。

2.1 签名类型对比

类型 文件格式 用途 有效期
调试签名 自动生成(DevEco Studio) 开发调试 临时
发布签名 .p12 + .cer 正式上架 1年 / 3年 / 更长

2.2 申请发布证书

方式一:通过 AGConnect 生成(推荐)
复制代码
操作路径:
AppGallery Connect → 用户与访问 → 证书管理
  → 添加证书
    → 类型: 发布证书
    → 证书文件: 上传 CSR 文件(见下方生成方法)
    → 别名: JieQiTong_Release
    → 有效期: 选择(建议 3 年以上)
    → 确认
生成本地 CSR 文件
bash 复制代码
# 使用 keytool 生成证书请求文件
keytool -genkeypair \
  -alias jieqitong_release \
  -keyalg RSA \
  -keysize 2048 \
  -validity 3650 \
  -keystore jieqitong.keystore

# 从 keystore 导出 CSR
keytool -certreq \
  -alias jieqitong_release \
  -file jieqitong.csr \
  -keystore jieqitong.keystore

提示: CSR 生成过程中会要求输入姓名、组织等信息。个人开发者填真实姓名即可。

下载证书文件

CSR 审核通过后,下载获得:

  • .cer 文件 --- 数字证书
  • .cer 导入本地 keystore
bash 复制代码
# 导入华为签发的证书到 keystore
keytool -importcert \
  -file huawei_release.cer \
  -alias huawei_release_cert \
  -keystore jieqitong.keystore

2.3 配置 Profile 签名描述文件

Profile 文件定义了哪些设备可以安装该应用。

复制代码
操作路径:
AppGallery Connect → 用户与访问 → 管理签名公钥指纹
  → 添加公钥指纹(从你的 keystore 获取)

# 获取 SHA-256 指纹
keytool -list -v -keystore jieqitong.keystore -alias jieqitong_release

然后创建 Profile:

复制代码
AppGallery Connect → 我的项目的对应应用
  → 添加 Profile
    → 类型: 发布
    → 证书: 选择上面创建的发布证书
    → 设备类型: Phone / Tablet(按需要选择)
    → 有效期: 与证书一致
    → 下载 .profile 文件

2.4 DevEco Studio 中配置签名

json5 复制代码
// build-profile.json5 中配置签名信息
{
  "app": {
    "signingConfigs": [
      {
        "name": "default",
        "type": "HarmonyOS",
        "material": {
          "storePassword": "你的keystore密码",
          "certpath": "./signing/huawei_release.cer",
          "keyAlias": "jieqitong_release",
          "keyPassword": "你的key密码",
          "profile": "./signing/JieQiTong_Release.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "./signing/jieqitong.keystore"
        }
      }
    ],
    "products": [
      {
        "name": "default",
        "signingConfig": "default",   // ← 使用上面的签名配置
        "compatibleSdkVersion": "5.0.0(12)",
        "runtimeOS": "HarmonyOS"
      }
    ]
  }
}

或者通过 IDE 图形界面配置:

复制代码
File → Project Structure → Signing Configs
  ☑ Enable HarmoniousApp Signing
  → 选择 Sign In 登录华为账号(自动同步证书)
  或
  → Use local certificate
    → Store File: 选择 .keystore 文件
    → Key Alias: 输入别名
    → Passwords: 输入 keystore 和 key 密码
    → Certpath: 选择 .cer 文件
    -> Profile: 选择 .p7b 文件

安全提醒 : build-profile.json5 中的密码明文存储,不要提交到 Git 仓库!建议使用环境变量或在 CI 流水线中注入。


步骤3: 构建打包

3.1 构建前检查清单

检查项 要求 检查方式
bundleName 与 AGConnect 一致 module.json5
versionCode 递增(每次发版+1) app.json5
versionName 语义化版本号(如 1.0.0) app.json5
minAPIVersion 不高于目标系统版本 build-profile.json5
签名配置正确 发布证书非调试 Signing Configs
无调试代码 移除 console.log / debugger 全局搜索
资源文件完整 图片/字体/字符串齐全 编译无报错

3.2 执行构建

bash 复制代码
# 方式一:DevEco Studio 菜单
Build → Build Hap(s)/APP(s) → Build APP(s)

# 方式二:命令行
hvigorw assembleHapp --mode module -p product=default -p buildMode=release

构建产物位置:

复制代码
entry/build/default/outputs/default/
  └── entry-default-signed.app    # 这就是最终的上架包

3.3 验证包体信息

bash 复制代码
# 查看包体基本信息(确认签名正确)
# 在 DevEco Studio 中:
Build → Analyze HAP/APK → 选择生成的 .app 文件

# 确认项:
# ✓ 包名 (Package Name): com.example.jieqitong
# ✓ 版本号 (Version): 1.0.0 (code: 1)
# ✓ 签名证书信息: 显示你的发布证书
# ✓ 权限列表: 符合预期
# ✓ 文件大小: < 一定限制(通常单包<500MB)

步骤4: 提交到 AppGallery

4.1 进入 AppGallery Connect 后台

复制代码
入口: https://appgallery.huawei.com/
→ 使用开发者账号登录
→ 选择"我的应用"
→ 创建应用(如果在 AGConnect 已创建则直接看到)

4.2 填写应用基础信息

字段 要求 示例
应用名称 简洁有辨识度,不含"官方""第一"等违规词 节气通
应用简介 200字以内,清晰描述功能 了解二十四节气的时间、习俗与文化
详细描述 支持 Markdown,详细说明功能和特色 见下方模板
应用图标 512×512 PNG,无圆角无水印 准备好设计稿
应用截图 至少 3 张,推荐 5 张 手机实机截图
分类 主分类 + 子分类 工具 > 日历/时间
关键词 最多 5 个,用逗号分隔 节气,二十四节气,农历,日历,传统文化
语言 支持的语言 中文简体, English
详细描述模板(参考)
复制代码
【产品介绍】
节气通是一款专注于中国传统文化------二十四节气的知识类应用。
涵盖24个节气的详细信息,包括时间、气候特征、农事活动、民俗文化、养生建议等内容。

【核心功能】
• 二十四节气百科:每个节气的起源、三候、习俗、诗词
• 农历日历查询:公历农历对照,节日提醒
• 节气倒计时:下一个节气的精确时间
• 传统文化知识:节气相关的历史故事和文化内涵
• 多语言支持:中文 / English
• 暗色模式:护眼主题,夜间阅读更舒适

【适用场景】
• 学习传统文化
• 农事活动参考
• 养生保健指导
• 教育科普工具

【更新说明】
V1.0.0
- 首次发布,包含完整的二十四节气内容库
- 支持多语言切换
- 支持暗色模式

4.3 应用截图规范

规格 要求
尺寸 手机截图最小 1080px 宽,平板 2048px
格式 JPG 或 PNG
数量 3~10 张
内容 不能含模拟器/调试信息/其他App水印
状态栏 可以保留,但不能显示异常信息

截图技巧:

typescript 复制代码
// 截图前建议做的准备:
// 1. 使用真机截图(不要用模拟器)
// 2. 时间设为美观的时间(如 10:08)
// 3. 电量/信号正常显示
// 4. 清空通知栏
// 5. 准备好各页面的截图:首页、详情页、百科页、设置页

4.4 隐私协议

这是审核必查项,必须认真填写。

复制代码
AppGallery Connect → 应用 → 内容
  → 隐私协议
    → 上传 PDF 或填写在线协议

隐私协议必须包含的内容

必须项 说明
收集的信息 明确列出收集了哪些数据(设备信息/日志/用户输入等)
收集目的 每种数据的用途
数据共享 是否向第三方共享,共享给谁
用户权利 查看/导出/删除数据的方式
联系方式 开发者邮箱或客服渠道
协议更新方式 如何通知用户新版协议
生效日期 协议生效时间

模板要点(节气通用):

复制代码
《节气通隐私政策》

生效日期: 2026年6月

一、我们收集哪些信息
  1. 设备信息:设备型号、操作系统版本(用于适配)
  2. 日志信息:崩溃日志、性能数据(用于改进体验)
  3. 用户内容:您主动输入的反馈信息

二、我们如何使用信息
  • 提供和改进我们的服务
  • 分析应用使用情况以优化功能

三、信息的存储
  • 数据存储于您的设备本地
  • 匿名统计数据加密传输至服务器

四、您的权利
  • 您可以在"设置"中关闭数据统计
  • 您可以导出您的本地数据
  • 您可以卸载应用以删除所有数据

五、联系我们
  • 邮箱: support@example.com

4.5 内容分级

复制代码
AppGallery Connect → 应用 → 内容
  → 内容分级
    → 根据问卷回答自动评级

对于节气通这类应用,通常评级为 3+(Parental Guidance)PG(Parental Guidance Suggested)

问题 推荐 answer
是否包含暴力内容?
是否包含色情内容?
是否包含赌博元素?
是否包含药品相关? 否(养生建议不属于)
是否需要联网? 是(可选,用于内容更新)
是否包含第三方广告? 视实际情况

4.6 权限使用说明

复制代码
AppGallery Connect → 应用 → 内容
  → 隐私 → 权限
    → 逐个声明每个权限的使用场景
权限 使用场景 是否必需
ohos.permission.INTERNET 加载远程内容、数据更新 是(可选)
ohos.permission.NOTIFICATION_CONTROLLER 发送节气提醒通知 是(可选)
ohos.permission.READ_MEDIA 读取用户选择的图片 否(当前未使用)

重要: 只声明实际使用的权限,多余的权限申请会导致审核质疑。

4.7 提交审核

所有信息填写完成后:

复制代码
1. 点击"保存"(保存草稿)
2. 全面检查一遍所有字段
3. 点击"提交审核"
4. 等待审核结果(通常 1-3 个工作日)

步骤5: 审核与常见驳回原因

5.1 审核流程

复制代码
提交审核
    │
    ▼
┌─────────────┐
│ 自动检测     │ ← 包体扫描、病毒检测、权限检查
│ (~30分钟)   │
└──────┬──────┘
       │ 通过
       ▼
┌─────────────┐
│ 人工审核     │ ← 内容审查、截图验证、协议检查
│ (1-3天)     │
└──────┬──────┘
       │
       ├── 通过 → 可选择发布策略
       │         ├── 立即全量发布
       │         └── 分阶段发布(灰度)
       │
       └── 驳回 → 修改后重新提交

5.2 常见驳回原因及解决方案

Top 1: 隐私协议不规范
复制代码
驳回理由: 隐私协议缺少数据共享说明 / 未说明用户权利
解决:
  - 对照上文"隐私协议必须包含的内容"逐项检查
  - 特别是"数据共享"和"用户权利"两个章节最容易遗漏
Top 2: 应用名称违规
复制代码
驳回理由: 应用名称包含"官方""最""第一"等绝对化词汇
  或名称与实际功能不符
解决:
  - 名称只做功能性描述:"节气通""二十四节气助手"
  - 避免:"中国第一节气APP""官方节气大全"
Top 3: 截图不符合规范
复制代码
驳回理由: 截图含有模拟器标识 / 分辨率不足 / 含其他App水印
解决:
  - 务必使用真机截图
  - 最小宽度 1080px
  - 不要用带水印的截图工具
Top 4: 权限过度申请
复制代码
驳回理由: 申请了不必要的权限(如读取联系人/定位等)
解决:
  - module.json5 中删除不需要的权限
  - 在 AppGallery 中补充每个权限的使用场景说明
  - 如果确实不需要某权限,直接移除重新打包
Top 5: 应用功能不完整
复制代码
驳回理由: 存在无法使用的空白页面 / 功能报错
解决:
  - 所有页面都要有实际内容
  - 空状态要有友好提示
  - 网络请求失败时不能白屏
  - 测试所有入口后再提交
Top 6: 缺少退出机制
复制代码
驳回理由: 应用没有明确的退出入口
解决:
  - 设置页添加"退出登录"/"退出应用"按钮
  - 或确保系统能通过返回键退出

5.3 快速过审技巧

技巧 说明
参考同类已上架应用 看看别人怎么写描述、怎么截图
先提交一次试水 第一次可能被驳回,根据反馈改就好
隐私协议越详细越好 宁多勿少,覆盖所有数据使用场景
截图要精美 第一印象很重要,影响用户下载转化
回复审意见要及时 驳回后尽快修改重提,通常二次审核更快

步骤6: 发布策略

6.1 发布选项

策略 说明 适用场景
立即发布 审核通过后对所有用户可见 小版本更新 / 紧急修复
定时发布 设定具体时间自动发布 重要版本选择合适时机
分阶段发布 先推送给少量用户,逐步扩大 大版本更新 / 有风险的功能

6.2 分阶段发布(灰度)

复制代码
AppGallery Connect → 应用分发 → 管理
  → 发布策略
    → 选择"分阶段发布"
    → 第一阶段: 5% 用户(观察 24h)
    → 第二阶段: 20% 用户(观察 48h)
    → 第三阶段: 50% 用户(观察 72h)
    → 第四阶段: 100% 全量

灰度期间关注指标

  • 崩溃率(目标 < 0.2%)
  • 用户反馈(应用市场评论)
  • 核心功能可用性
  • 性能指标(启动速度、页面加载)

6.3 版本更新流程

复制代码
发现 Bug / 新需求
    │
    ▼
修改代码 → bump versionCode 和 versionName
    │
    ▼
构建新包 (确保 signing config 正确)
    │
    ▼
AppGallery Connect → 上传新版本包
    │
    ▼
填写版本更新说明(用户可见的更新内容)
    │
    ▼
提交审核 → 审核通过 → 发布

版本号规范

复制代码
versionFormat: MAJOR.MINOR.PATCH

MAJOR:   重大架构变更或不兼容更新  (1.0.0 → 2.0.0)
MINOR:   新增功能                (1.0.0 → 1.1.0)
PATCH:   Bug修复                 (1.0.0 → 1.0.1)

versionCode: 单调递增整数 (每次提交必须 +1)
  V1.0.0 → code: 1
  V1.0.1 → code: 2
  V1.1.0 → code: 3
  V2.0.0 → code: 4

步骤7: 上架后的运营

7.1 应用市场优化 (ASO)

优化项 操作 影响
关键词 选择精准搜索词(节气/农历/日历/传统文化) 搜索排名
应用图标 简洁、辨识度高、在小尺寸下也清晰 点击率 (CTR)
截图 展示核心功能亮点,首图最重要 转化率
应用描述 前3行最重要(搜索结果显示时截断) 安装意愿
评分与回复 及时回应用户评价,处理差评 排名权重
类别选择 放在竞争较小但精准的分类 曝光量

7.2 数据监控

复制代码
AppGallery Connect → 分析
  → 应用分析
    • 新增用户 / 活跃用户 / 留存率
    • 下载量 / 安装量 / 卸载量
    • 来源分析(搜索/推荐/分享)
    • 评分趋势

  → 性能分析
    • 崩溃报告(必看!)
    • 启动时长
    • 页面加载时间
    • ANR 率

上架检查清单(终极版)

提交审核前,逐项确认:

代码层面

  • bundleName 与 AGConnect 一致
  • versionCode 递增,versionName 合理
  • 无调试代码(debugger / 过多的 hilog)
  • 签名为发布证书(非调试签名)
  • 所有页面功能正常,无空白页/崩溃
  • 有明确的退出机制
  • 网络超时有友好提示

应用信息层面

  • 应用名称不含违规词(官方/最/第一)
  • 图标 512×512 PNG,无圆角无水印
  • 截图 ≥3 张,1080px+,真机截图
  • 描述清晰,前3行有吸引力
  • 分类准确

合规层面

  • 隐私协议完整(6项必备内容都有)
  • 内容分级已填写
  • 每个权限都有使用场景说明
  • 无多余权限申请
  • 第三方 SDK 有隐私说明(如有)

打包产物

  • 包体格式为 .app(HAP/APP)
  • 包体大小合理(通常 < 50MB)
  • 签名信息验证通过
  • 安装到真机能正常运行

相关链接