前言

第一次提交 AppGallery 审核,被拒了。理由是隐私声明不完整。改了再提,又被拒——这次是截图尺寸不对。折腾了三轮才过审,前后花了快两周。

说实话,发布流程本身不复杂,但细节坑太多。 一个地方疏忽就打回重来,白白浪费时间。今天把完整流程走一遍,帮你一次过审。

A hand-drawn doodle illustration on pure white pap

开发阶段再顺利,到了发布这一关也容易翻车。签名配置、构建打包、AppGallery 配置、提交审核——每一步都有细节要注意。

这篇文章把从"代码写完了"到"App 上架了"的完整链路梳理一遍,照着走,少踩坑。

发布前检查清单

先别急着打包,逐项过一遍:

检查项 说明 常见问题
应用标识 bundleName 与 AppGallery 一致 不一致导致签名失败
版本号 versionCode 递增,versionName 有意义 版本号没改,覆盖安装失败
权限声明 module.json5 中只申请必要权限 多余权限会被审核打回
隐私声明 数据收集说明完整 缺少隐私政策链接直接被拒
截图素材 3-5 张,720×1280 以上,9:16 比例 尺寸不对、带 debug 信息
图标 512×512 PNG,无透明通道 图标太糊或用了系统图标
调试代码 移除 console.log、测试接口 残留调试信息被拒
签名配置 发布证书和 Profile 已就位 用了调试证书打发布包

划重点:隐私声明和权限是审核的重灾区,务必认真检查。 申请了什么权限,隐私政策里就要解释为什么需要。

A hand-drawn doodle illustration on pure white pap

签名配置

发布包必须带签名,没有签名的 App 装不上真机,更上不了架。

步骤 1:生成密钥和证书请求文件

在 DevEco Studio 菜单栏:Build → Generate Key and CSR

  1. Key Store File:点击 New 创建新的 .p12 密钥库文件,选好存储路径
  2. Password:密钥库密码,至少 8 位,大小写+数字+特殊符号选两种以上
  3. Alias:密钥别名,自己起个有意义的名字,比如 myapp_release_2026

A hand-drawn doodle illustration on pure white pap

  1. Validity:证书有效期,建议 25 年以上
  2. Certificate:填组织信息——姓名、组织、城市、国家码
  3. 最后设置 CSR 文件保存路径,点 Finish

完成后你会得到两个文件:.p12(密钥库)和 .csr(证书请求文件)

步骤 2:申请发布证书

登录 AppGallery Connect,进入你的项目:

  1. 左侧导航 → 数字证书 → 点击 新增数字证书
  2. 填写证书名称,选择 发布证书 类型
  3. 上传刚才生成的 .csr 文件
  4. 点击提交,下载生成的 .cer 证书文件
步骤 3:申请 Profile 文件

还在 AppGallery Connect:

  1. 左侧导航 → Profile → 点击 添加 Profile
  2. 填写 Profile 名称,类型选 发布
  3. 选择上一步创建的数字证书
  4. 提交后下载 .p7b Profile 文件
步骤 4:配置签名信息

回到 DevEco Studio:File → Project Structure → Project → Signing Configs

取消勾选 “Automatically generate signature”,然后手动填写:

字段
Store File 步骤 1 生成的 .p12 文件
Store Password 步骤 1 设置的密码
Key Alias 步骤 1 设置的别名
Key Password 与 Store Password 一致
Sign Alg SHA256withECDSA(固定值)
Profile File 步骤 3 生成的 .p7b 文件
Certpath File 步骤 2 生成的 .cer 文件

配置完成后的 build-profile.json5 大致如下:

{
  "app": {
    "signingConfigs": [
      {
        "name": "default",
        "type": "HarmonyOS",
        "material": {
          "certpath": "/path/to/release.cer",
          "storeFile": "/path/to/release.p12",
          "storePassword": "your_password",
          "keyAlias": "myapp_release_2026",
          "keyPassword": "your_password",
          "profile": "/path/to/release.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFileHash": "xxx"
        }
      }
    ]
  }
}

敲黑板:密钥文件(.p12)千万别丢! 丢了就没法更新 App 了,只能重新签名,但旧版本用户没法覆盖升级。

构建 HAP / APP

签名配好了,接下来打包。

构建 HAP(单模块包)

调试或单个模块测试用:

hvigorw assembleHap --mode module -p module=entry@default

HAP 包输出在 entry/build/default/outputs/default/ 目录下。

构建 APP(上架包)

上架必须用 APP 包,它包含所有模块:

hvigorw assembleApp --mode release -p product=default

也可以在 DevEco Studio 菜单操作:Build → Build Hap(s)/APP(s) → Build APP(s)

APP 包输出在 build/outputs/default/ 目录下,文件名类似 myapp-default-signed.app

注意:Build APP 默认是 Release 模式,已经是正式签名包,不需要额外设置。Build HAP 默认是 Debug 模式,这个要区分清楚。

构建前确认一件事:工程里不需要打包的模块要先移除,DevEco 会把所有模块都打进去。比如测试用的示例模块,别一起打进去。

AppGallery Connect 配置

包打好了,去 AppGallery Connect 做上架前的准备。

创建应用
  1. 登录 AppGallery Connect → 我的项目 → 添加项目
  2. 项目下添加应用,填写应用名称、bundleName
  3. bundleName 必须和代码里的一致,不然签名对不上
配置签名指纹
  1. 本地生成 SHA256 指纹:
keytool -list -v -keystore release.p12 -storepass your_password
  1. 复制 SHA256 值
  2. AppGallery Connect → 项目设置 → 常规 → 应用信息 → SHA256 证书指纹 → 粘贴
开通服务

如果你用到了华为的服务(推送、账号、支付等),需要在 AppGallery Connect 里开通对应服务。不开通的话相关 API 调不通。

提交审核

准备工作做完了,正式提交。

基本流程
  1. 软件包管理 → 上传 .app 文件
  2. 版本信息 → 填写版本号、更新说明
  3. 分发国别 → 选择要上架的国家/地区
  4. 应用信息 → 填写应用介绍、一句话简介、截图、视频
  5. 内容分级 → 根据应用内容选择年龄分级
  6. 隐私声明 → 填写隐私政策 URL,声明数据收集情况
  7. 提交审核
注意事项
  • 应用介绍:认真写,审核会看。别用"这是一个很好的应用"这种废话
  • 截图:3-5 张,必须是真实界面截图,不能用模拟图或设计稿
  • 隐私政策 URL:必须是可访问的 HTTPS 链接,指向完整的隐私政策文档
  • 更新说明:写清楚这版改了什么,别留空
  • 软件包加密:建议开启,保护代码安全

审核周期一般 1-3 个工作日,高峰期可能更长。

审核常见被拒原因

审核被拒最让人崩溃,列几个高频原因:

  • 隐私声明不完整:申请了定位权限但隐私政策没提定位数据用途
  • 权限滥用:申请了跟功能无关的权限(比如手电筒 App 申请通讯录)
  • 截图不规范:带 debug 信息、尺寸不对、非真实截图
  • 应用崩溃:审核人员一打开就闪退,这个最冤——提交前一定要在真机上完整测试
  • 包含敏感内容:政治、色情、暴力等,不用多解释
  • 未适配最新系统:在 HarmonyOS7 上有兼容问题
  • 应用介绍与实际不符:介绍写了某功能但 App 里找不到
  • 图标不规范:用了系统图标、有透明通道、分辨率太低
  • 签名问题:用了调试签名打发布包,或者 Profile 类型不对
  • 版本号问题:versionCode 没递增,或者低于已发布版本

血泪教训:提交前在真机上跑一遍完整流程。 模拟器上正常不代表真机也正常,审核用的是真机。

写在最后

发布流程总结起来就四步:签名 → 打包 → 配置 → 提审。 每一步都不难,但每一步都有细节坑。

最容易忽略的永远是隐私声明和权限——建议写代码的时候就同步维护隐私政策文档,别等到提交审核才补,那时候容易漏。

审核被拒别慌,看清楚拒绝理由,针对性修改就行。大多数被拒都是小问题,改了重新提交,过审不难。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐