坦克大战游戏开发实战(二十三)-游戏发布与打包流程

前言

游戏开发完成后,需要经过打包和发布流程才能让玩家体验到游戏。本文将详细讲解HarmonyOS游戏的发布与打包流程,包括签名配置、打包流程、应用商店发布、更新维护等内容。

发布流程概述

  1. 准备阶段:完善应用信息、配置签名
  2. 打包阶段:编译打包生成HAP文件
  3. 测试阶段:测试HAP文件功能完整性
  4. 发布阶段:提交应用商店审核发布

发布流程

准备阶段

打包阶段

测试阶段

发布阶段

完善信息

配置签名

编译打包

生成HAP

功能测试

性能测试

提交审核

发布上架

一、应用信息配置

1.1 app.json5配置

配置应用基本信息:

{
  "app": {
    "bundleName": "com.example.tankbattle",
    "vendor": {
      "name": "Your Name",
      "description": "Tank Battle Game Developer"
    },
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "icon": "$media:app_icon",
    "label": "$string:app_name",
    "description": "$string:app_description",
    "minAPIVersion": 9,
    "targetAPIVersion": 10,
    "apiReleaseType": "Release",
    "debug": false
  }
}

配置项说明:

  • bundleName:应用唯一标识符
  • versionCode:版本号,用于版本比较
  • versionName:版本名称,显示给用户
  • minAPIVersion:最低支持的API版本
  • targetAPIVersion:目标API版本

1.2 module.json5配置

配置模块信息:

{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_description",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "default",
      "tablet"
    ],
    "deliveryWithInstall": true,
    "installationFree": false,
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:startWindowBackground",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ]
      }
    ],
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}

1.3 资源文件

配置应用资源:

resources/
├── base/
│   ├── element/
│   │   ├── string.json        # 字符串资源
│   │   └── color.json         # 颜色资源
│   ├── media/
│   │   ├── app_icon.png       # 应用图标
│   │   └── startIcon.png      # 启动图标
│   └── profile/
│       └── main_pages.json    # 页面配置

二、签名配置

2.1 生成签名证书

使用DevEco Studio生成签名证书:

  1. 打开DevEco Studio
  2. 选择Build > Generate Key and CSR
  3. 填写证书信息
  4. 生成.p12密钥库文件和.csr证书请求文件

2.2 申请签名证书

向华为申请签名证书:

  1. 登录华为开发者联盟
  2. 进入管理中心 > 证书管理
  3. 上传CSR文件申请证书
  4. 下载证书文件(.cer和.p7b)

2.3 配置签名

在build-profile.json5中配置签名:

{
  "app": {
    "signingConfigs": [
      {
        "name": "default",
        "material": {
          "certpath": "signature/TankBattle.cer",
          "storePassword": "your_password",
          "keyAlias": "tankbattle",
          "keyPassword": "your_password",
          "profile": "signature/TankBattleProfile.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "signature/TankBattle.p12"
        }
      }
    ],
    "compileSdkVersion": 10,
    "compatibleSdkVersion": 9,
    "products": [
      {
        "name": "default",
        "signingConfig": "default"
      }
    ]
  }
}

三、打包流程

3.1 编译打包

使用DevEco Studio打包:

  1. 选择Build > Build Hap(s)/APP(s) > Build Hap(s)
  2. 等待编译完成
  3. 在entry/build/default/outputs/default/目录找到HAP文件

3.2 命令行打包

使用命令行打包:

# 编译项目
hvigorw assembleHap

# 打包APP
hvigorw assembleApp

3.3 打包配置

在hvigorfile.ts中配置打包:

import { hapTasks } from '@ohos/hvigor-ohos-plugin';

export default {
  system: hapTasks,
  plugins: []
}

四、测试验证

4.1 功能测试

测试HAP文件功能完整性:

  1. 安装测试:测试HAP文件能否正常安装
  2. 启动测试:测试应用能否正常启动
  3. 功能测试:测试所有游戏功能
  4. 性能测试:测试游戏性能指标

4.2 兼容性测试

测试不同设备兼容性:

  1. 不同屏幕尺寸:测试不同分辨率适配
  2. 不同API版本:测试不同系统版本兼容
  3. 不同设备类型:测试手机、平板等设备

4.3 性能测试

测试性能指标:

// 性能测试脚本
export class PerformanceTest {
  testFPS(): boolean {
    // 测试帧率是否达标
    return this.measureFPS() >= 55;
  }
  
  testMemory(): boolean {
    // 测试内存占用是否合理
    return this.measureMemory() < 100 * 1024 * 1024;
  }
  
  testStartup(): boolean {
    // 测试启动时间是否合理
    return this.measureStartup() < 3000;
  }
}

五、应用商店发布

5.1 准备发布材料

准备应用商店所需材料:

  1. 应用图标:512x512 PNG格式
  2. 应用截图:至少3张,展示主要功能
  3. 应用描述:详细的应用介绍
  4. 版本说明:版本更新内容
  5. 隐私政策:隐私政策链接

5.2 提交审核

提交应用商店审核:

  1. 登录华为开发者联盟
  2. 进入应用市场 > 应用发布
  3. 填写应用信息
  4. 上传HAP文件和素材
  5. 提交审核

5.3 审核流程

审核流程包括:

  1. 自动检测:检测应用基本信息
  2. 人工审核:审核应用内容和功能
  3. 安全检测:检测应用安全性
  4. 性能检测:检测应用性能

六、版本更新

6.1 版本号管理

合理管理版本号:

// 版本号规则:major.minor.patch
// major:重大版本更新
// minor:功能更新
// patch:问题修复

const VERSION = {
  major: 1,
  minor: 0,
  patch: 0,
  
  toString(): string {
    return `${this.major}.${this.minor}.${this.patch}`;
  },
  
  toCode(): number {
    return this.major * 1000000 + this.minor * 1000 + this.patch;
  }
};

6.2 更新检测

检测应用更新:

export class UpdateChecker {
  async checkUpdate(): Promise<UpdateInfo | null> {
    try {
      const response = await fetch('https://api.example.com/version');
      const data = await response.json();
      
      if (data.versionCode > this.getCurrentVersion()) {
        return {
          version: data.versionName,
          description: data.description,
          url: data.downloadUrl
        };
      }
      
      return null;
    } catch (error) {
      console.error('检查更新失败:', error);
      return null;
    }
  }
  
  private getCurrentVersion(): number {
    // 获取当前版本号
    return 1000000;
  }
}

6.3 热更新

实现热更新机制:

export class HotUpdater {
  async checkHotUpdate(): Promise<boolean> {
    // 检查是否有热更新
    const updateInfo = await this.getUpdateInfo();
    
    if (updateInfo && updateInfo.needUpdate) {
      // 下载更新包
      await this.downloadUpdate(updateInfo.url);
      
      // 应用更新
      await this.applyUpdate();
      
      return true;
    }
    
    return false;
  }
}

七、发布后维护

7.1 监控统计

监控应用运行状态:

export class Analytics {
  // 上报事件
  reportEvent(eventName: string, params: any): void {
    // 上报到分析平台
  }
  
  // 上报错误
  reportError(error: Error): void {
    // 上报错误信息
  }
  
  // 上报性能
  reportPerformance(metrics: any): void {
    // 上报性能指标
  }
}

7.2 用户反馈

收集用户反馈:

export class FeedbackManager {
  // 提交反馈
  async submitFeedback(feedback: Feedback): Promise<boolean> {
    try {
      const response = await fetch('https://api.example.com/feedback', {
        method: 'POST',
        body: JSON.stringify(feedback)
      });
      
      return response.ok;
    } catch (error) {
      console.error('提交反馈失败:', error);
      return false;
    }
  }
}

7.3 崩溃报告

收集崩溃报告:

export class CrashReporter {
  // 捕获崩溃
  captureCrash(error: Error): void {
    const report = {
      error: error.message,
      stack: error.stack,
      device: this.getDeviceInfo(),
      timestamp: Date.now()
    };
    
    this.saveReport(report);
    this.uploadReport(report);
  }
}

八、总结

游戏发布与打包是游戏开发的重要环节。本文详细讲解了应用信息配置、签名配置、打包流程、测试验证、应用商店发布等内容,为游戏发布提供了完整指导。

关键要点

  1. 应用配置:完善应用信息和权限配置
  2. 签名配置:正确配置应用签名
  3. 打包流程:使用工具正确打包
  4. 测试验证:全面测试应用功能
  5. 发布上架:按流程提交应用商店

系列文章导航:

下期预告: 坦克大战游戏开发实战(二十四)-项目架构设计原则

Logo

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

更多推荐