第33篇:应用打包、签名与发布

📚 本篇导读

应用打包、签名与发布是应用开发的最后环节,也是将应用交付给用户的关键步骤。本篇教程将详细介绍HarmonyOS应用的完整发布流程。

本篇将实现

  • 📦 应用打包(生成HAP/APP包)
  • 🔐 应用签名(配置签名证书)
  • 🚀 应用发布(上架应用市场)
  • 📝 版本管理(版本号规划、更新策略)
  • 🔄 持续集成(自动化构建和发布)
  • 📊 发布后运营(数据分析、用户反馈)

🎯 学习目标

完成本篇教程后,你将掌握:

  1. 如何配置应用签名
  2. 如何打包生成发布版本
  3. 应用市场上架流程
  4. 版本号管理和更新策略
  5. 持续集成和自动化发布
  6. 应用发布后的运营维护

一、应用签名配置

1.1 签名证书类型

HarmonyOS应用签名分为两种:

  • 调试签名:用于开发和测试阶段
  • 发布签名:用于正式发布到应用市场

1.2 生成签名证书

1.2.1 在AGC创建应用
  1. 登录 AppGallery Connect
  2. 点击"我的项目" → “创建项目”
  3. 填写项目信息并创建
  4. 在项目中添加应用
1.2.2 生成证书请求文件

在DevEco Studio中:

  1. 打开菜单:Build → Generate Key and CSR
  2. 填写信息
    • Key Alias: release-key
    • Password: 设置密码
    • Validity: 25(年)
    • Organization: 公司名称
    • Common Name: 应用名称
  3. 生成文件
    • .p12文件(密钥库)
    • .csr文件(证书请求)
1.2.3 申请发布证书
  1. 在AGC中进入应用详情
  2. 点击"证书管理" → “申请证书”
  3. 上传.csr文件
  4. 下载.cer证书文件
1.2.4 生成Profile文件
  1. 在AGC中点击"Profile管理"
  2. 创建新的Profile
  3. 选择应用和证书
  4. 下载.p7b文件

1.3 配置签名信息

1.3.1 在项目中配置

build-profile.json5 中配置签名:

{
  "app": {
    "signingConfigs": [
      {
        "name": "release",
        "type": "HarmonyOS",
        "material": {
          "certpath": "path/to/release.cer",
          "storePassword": "your_password",
          "keyAlias": "release-key",
          "keyPassword": "your_password",
          "profile": "path/to/release.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "path/to/release.p12"
        }
      }
    ],
    "compileSdkVersion": 17,
    "compatibleSdkVersion": 17,
    "products": [
      {
        "name": "default",
        "signingConfig": "release"
      }
    ]
  }
}
1.3.2 使用环境变量

为了安全,建议使用环境变量存储密码:

{
  "material": {
    "storePassword": "${STORE_PASSWORD}",
    "keyPassword": "${KEY_PASSWORD}"
  }
}

二、应用打包

2.1 配置应用信息

2.1.1 配置app.json5

文件位置AppScope/app.json5

{
  "app": {
    "bundleName": "com.gaogao.zhongdi",
    "vendor": "高高种地团队",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name",
    "description": "$string:app_description",
    "minAPIVersion": 12,
    "targetAPIVersion": 17,
    "apiReleaseType": "Release"
  }
}

4.2 灰度发布

4.2.1 配置灰度策略

在AGC中配置灰度发布:

  1. 选择版本 → 灰度发布
  2. 设置灰度比例(如5%、10%、50%)
  3. 选择灰度用户群体
  4. 监控灰度数据
  5. 逐步扩大范围
4.2.2 灰度监控指标
  • 崩溃率
  • 启动时间
  • 用户反馈
  • 功能使用率
  • 性能指标

五、持续集成与自动化

5.1 配置CI/CD

5.1.1 使用Jenkins
pipeline {
    agent any

    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/your-repo/gaogao-zhongdi.git'
            }
        }

        stage('Build') {
            steps {
                sh 'hvigorw clean'
                sh 'hvigorw assembleApp --mode module -p buildMode=release'
            }
        }

        stage('Test') {
            steps {
                sh 'hvigorw test'
            }
        }

        stage('Sign') {
            steps {
                // 签名步骤
                sh 'sign-app.sh'
            }
        }

        stage('Upload') {
            steps {
                // 上传到应用市场
                sh 'upload-to-agc.sh'
            }
        }
    }

    post {
        success {
            echo 'Build and deploy successful!'
        }
        failure {
            echo 'Build failed!'
        }
    }
}

5.2 自动化脚本

5.2.1 构建脚本
#!/bin/bash
# build.sh

echo "开始构建..."

# 清理
hvigorw clean

# 构建
hvigorw assembleApp --mode module -p product=default -p buildMode=release

# 检查构建结果
if [ $? -eq 0 ]; then
    echo "构建成功!"
    echo "输出文件: entry/build/outputs/default/entry-default-signed.hap"
else
    echo "构建失败!"
    exit 1
fi
5.2.2 版本号自动更新
#!/bin/bash
# update-version.sh

# 读取当前版本
CURRENT_VERSION=$(grep "versionName" AppScope/app.json5 | cut -d'"' -f4)

# 解析版本号
IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION"
MAJOR=${VERSION_PARTS[0]}
MINOR=${VERSION_PARTS[1]}
PATCH=${VERSION_PARTS[2]}

# 增加修订号
PATCH=$((PATCH + 1))

# 新版本号
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
NEW_VERSION_CODE=$((MAJOR * 1000000 + MINOR * 1000 + PATCH))

# 更新文件
sed -i "s/\"versionName\": \"$CURRENT_VERSION\"/\"versionName\": \"$NEW_VERSION\"/" AppScope/app.json5
sed -i "s/\"versionCode\": [0-9]*/\"versionCode\": $NEW_VERSION_CODE/" AppScope/app.json5

echo "版本号已更新: $CURRENT_VERSION -> $NEW_VERSION"

六、发布后运营

6.1 数据分析

6.1.1 关键指标
  • 下载量:应用下载次数
  • 活跃用户:日活(DAU)、月活(MAU)
  • 留存率:次日留存、7日留存、30日留存
  • 使用时长:平均使用时长
  • 崩溃率:应用崩溃频率
6.1.2 使用AGC分析

在AGC中查看:

  1. 进入"质量" → “应用质量”
  2. 查看崩溃报告
  3. 分析用户行为
  4. 监控性能指标

6.2 用户反馈处理

6.2.1 反馈渠道
  • 应用市场评论
  • 应用内反馈功能
  • 客服邮箱
  • 用户社群
6.2.2 反馈处理流程
  1. 收集反馈:定期查看各渠道反馈
  2. 分类整理:按问题类型分类
  3. 优先级排序:紧急问题优先处理
  4. 及时响应:24小时内回复用户
  5. 跟踪解决:记录问题处理进度

6.3 版本迭代规划

6.3.1 迭代周期
  • 大版本:3-6个月,重大功能更新
  • 小版本:1-2个月,新增功能
  • 修订版本:随时,bug修复
6.3.2 需求来源
  1. 用户反馈和建议
  2. 数据分析发现的问题
  3. 市场竞品分析
  4. 技术升级需求
  5. 业务发展需要

七、常见问题

7.1 签名配置问题

问题:签名配置错误导致打包失败

解决方案

  1. 检查证书文件路径
  2. 验证密码是否正确
  3. 确认Profile文件有效期
  4. 查看详细错误日志

7.2 审核被拒

问题:应用提交审核后被拒绝

解决方案

  1. 仔细阅读拒绝原因
  2. 按要求修改应用
  3. 补充必要的说明文档
  4. 重新提交审核

7.3 更新失败

问题:用户更新应用失败

解决方案

  1. 检查版本号配置
  2. 验证签名一致性
  3. 确保向下兼容
  4. 提供降级方案

八、本篇小结

本篇教程介绍了应用打包、签名与发布的完整流程:

应用签名:证书申请、签名配置
应用打包:版本配置、构建发布版本
应用发布:准备材料、上架流程
版本管理:更新策略、灰度发布
持续集成:自动化构建和发布
发布运营:数据分析、用户反馈

核心技术点

  • HarmonyOS应用签名机制
  • 应用打包和构建流程
  • AppGallery Connect使用
  • 版本号管理规范
  • CI/CD自动化部署

最佳实践

  • 妥善保管签名证书
  • 规范版本号管理
  • 完善应用信息和截图
  • 及时响应用户反馈
  • 建立自动化发布流程

九、教程系列总结

🎉 恭喜!您已完成全部33篇教程!

9.1 学习回顾

通过本系列教程,您已经掌握:

基础篇(1-3篇)

  • HarmonyOS开发环境搭建
  • 应用架构设计
  • UI组件库开发

核心功能篇(4-15篇)

  • 引导流程和用户画像
  • 地图集成和地块管理
  • 作物管理和农事记录
  • 任务管理和成本核算
  • 数据分析和智能决策
  • 地图导航和路线规划

AI能力篇(16-23篇)

  • HarmonyOS AI能力集成
  • 图像识别功能
  • 语音合成功能
  • 天气服务和节气指导
  • 智能推荐系统

学习考试篇(24-27篇)

  • 课程体系设计
  • 考试系统开发
  • 成绩分析功能

服务扩展篇(28-31篇)

  • 用户中心和个人资料
  • 数据管理与备份
  • 设置与帮助系统
  • 桌面小组件开发

优化发布篇(32-33篇)

  • 应用测试和优化
  • 应用打包和发布

9.2 项目特色

"高高种地"项目的核心特色:

🗺️ 以地图为核心:应用首页即为地图,所有功能围绕地图展开
🤖 AI能力深度集成:图像识别、语音播报等AI功能
🌾 完整业务流程:涵盖农业管理全流程
📚 学习考试系统:提供专业知识学习和考试
📊 智能决策支持:数据分析和智能推荐

9.3 后续学习建议

  1. 深入学习HarmonyOS

    • 分布式能力
    • 多设备协同
    • 服务卡片高级功能
  2. 扩展应用功能

    • 社区功能
    • 电商功能
    • 物联网设备接入
  3. 性能优化

    • 深度性能优化
    • 用户体验提升
    • 代码质量改进
  4. 持续学习

    • 关注HarmonyOS更新
    • 学习最佳实践
    • 参与开发者社区

📖 参考资料


🎓 结语

感谢您完成"高高种地"HarmonyOS智慧农业管理应用开发教程!

希望通过这33篇教程,您不仅学会了HarmonyOS应用开发,还掌握了:

  • 完整的项目开发流程
  • 地图SDK的深度集成
  • AI能力的实际应用
  • 应用架构设计思想
  • 最佳实践和优化技巧

祝您开发顺利,应用成功! 🚀

如有问题或建议,欢迎通过以下方式联系我们:

  • 📧 邮箱:support@gaogaozhongdi.com
  • 🌐 官网:www.gaogaozhongdi.com
  • 💬 开发者社区:HarmonyOS开发者论坛

教程编写时间:2024-01-22
适用版本:HarmonyOS NEXT API 17+
作者:高高种地开发团队
教程完成度:33/33篇(100%)✅

2.1.2 版本号规范

版本号格式:主版本号.次版本号.修订号

  • 主版本号:重大功能更新或架构变更
  • 次版本号:新增功能或较大改进
  • 修订号:Bug修复或小优化

示例:

  • 1.0.0:首次发布
  • 1.1.0:新增AI识别功能
  • 1.1.1:修复定位问题

versionCode规则:

versionCode = 主版本号 * 1000000 + 次版本号 * 1000 + 修订号
例如:1.2.3 → 1002003

2.2 构建发布版本

2.2.1 使用DevEco Studio构建
  1. 选择构建类型:Build → Build Hap(s)/APP(s) → Build APP(s)
  2. 选择签名配置:release
  3. 等待构建完成
  4. 查看输出文件:build/outputs/app/release/
2.2.2 使用命令行构建
# 清理项目
hvigorw clean

# 构建发布版本
hvigorw assembleApp --mode module -p product=default -p buildMode=release

# 输出位置
# entry/build/outputs/default/entry-default-signed.hap

2.3 验证打包结果

2.3.1 检查包内容
# 解压HAP包查看内容
unzip entry-default-signed.hap -d hap_content

# 查看目录结构
tree hap_content
2.3.2 验证签名
# 使用工具验证签名
java -jar hap-sign-tool.jar verify-app -inFile entry-default-signed.hap

三、应用市场发布

3.1 准备发布材料

3.1.1 应用信息
  • 应用名称:高高种地
  • 应用简介:智慧农业管理平台(50字以内)
  • 应用描述:详细介绍应用功能和特色(500-2000字)
  • 应用分类:工具 → 生活服务
  • 适用年龄:3+
3.1.2 应用截图

准备5-8张应用截图:

  • 尺寸:1080x1920或更高
  • 格式:PNG或JPG
  • 内容:展示主要功能界面

截图建议:

  1. 地图首页(展示核心功能)
  2. 地块管理(展示管理功能)
  3. AI识别(展示AI能力)
  4. 数据分析(展示智能决策)
  5. 学习中心(展示学习功能)
3.1.3 应用图标
  • 尺寸:512x512px
  • 格式:PNG(透明背景)
  • 要求:清晰、美观、符合品牌形象
3.1.4 隐私政策

准备完整的隐私政策文档,包括:

  • 收集的信息类型
  • 信息使用方式
  • 信息存储和保护
  • 用户权利说明
  • 联系方式

3.2 上架流程

3.2.1 创建应用
  1. 登录 AppGallery Connect
  2. 进入"分发" → “应用发布”
  3. 点击"创建应用"
  4. 填写基本信息
3.2.2 上传安装包
  1. 进入应用详情
  2. 点击"版本信息" → “软件版本”
  3. 上传HAP/APP文件
  4. 填写版本说明
3.2.3 填写应用信息

基本信息

  • 应用名称
  • 应用简介
  • 应用描述
  • 应用分类
  • 标签关键词

图片素材

  • 应用图标
  • 应用截图
  • 宣传图(可选)

联系方式

  • 客服邮箱
  • 客服电话
  • 官方网站
3.2.4 配置权限说明

说明应用需要的权限及用途:

  • 定位权限:用于获取地块位置
  • 相机权限:用于拍照识别植物
  • 存储权限:用于保存图片和数据
3.2.5 提交审核
  1. 检查所有信息是否完整
  2. 阅读并同意发布协议
  3. 点击"提交审核"
  4. 等待审核结果(通常1-3个工作日)

3.3 审核注意事项

3.3.1 常见审核问题
  1. 功能不完整:确保所有功能正常可用
  2. 隐私政策缺失:必须提供隐私政策
  3. 权限说明不清:详细说明权限用途
  4. 截图不符:截图必须真实反映应用功能
  5. 内容违规:不得包含违法违规内容
3.3.2 审核加速技巧
  1. 提供完整的测试账号
  2. 详细的功能说明文档
  3. 清晰的操作指引
  4. 及时响应审核反馈

四、版本更新管理

4.1 版本更新策略

4.1.1 更新类型
  • 强制更新:修复严重bug或安全问题
  • 推荐更新:新增重要功能
  • 可选更新:优化和小改进
4.1.2 更新检测
class UpdateManager {
  /**
   * 检查更新
   */
  async checkUpdate(): Promise<UpdateInfo | null> {
    try {
      // 获取当前版本
      const currentVersion = await this.getCurrentVersion();
      
      // 请求服务器获取最新版本
      const latestVersion = await this.getLatestVersion();
      
      // 比较版本号
      if (this.compareVersion(latestVersion.versionName, currentVersion) > 0) {
        return latestVersion;
      }
      
      return null;
    } catch (error) {
      console.error('Check update failed:', error);
      return null;
    }
  }

  /**
   * 比较版本号
   */
  private compareVersion(v1: string, v2: string): number {
    const parts1 = v1.split('.').map(Number);
    const parts2 = v2.split('.').map(Number);
    
    for (let i = 0; i < 3; i++) {
      if (parts1[i] > parts2[i]) return 1;
      if (parts1[i] < parts2[i]) return -1;
    }
    
    return 0;
  }

  /**
   * 显示更新对话框
   */
  showUpdateDialog(updateInfo: UpdateInfo): void {
    AlertDialog.show({
      title: '发现新版本',
      message: `版本 ${updateInfo.versionName}\n\n${updateInfo.updateLog}`,
      primaryButton: {
        value: updateInfo.forceUpdate ? '立即更新' : '稍后',
        action: () => {
          if (!updateInfo.forceUpdate) {
            // 可选更新,用户选择稍后
          }
        }
      },
      secondaryButton: {
        value: '立即更新',
        action: () => {
          this.downloadUpdate(updateInfo.downloadUrl);
        }
      }
    });
  }
}
Logo

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

更多推荐