HarmonyOS基础(七):工程化与上架

应用开发完成只是整个旅程的一半。从代码编写到最终触达用户,中间还需要经历测试验证、签名打包、上架审核、运营维护等多个关键环节。这些工程化实践决定了应用的质量、安全性和商业价值。

本文将系统讲解HarmonyOS应用从开发完成到上架运营的完整工程化流程。从应用程序包结构出发,深入解析应用测试的全链路方法,然后详细讲解签名证书的配置、编译打包的操作步骤、上架审核的流程规范,最后介绍数据运营与运维设计等持续优化能力。

1. 应用程序包结构

1.1 HAP与HSP的概念

HarmonyOS应用以APP Pack形式发布,其包含一个或多个HAP包。HAP是HarmonyOS应用安装的基本单位,HAP可以分为Entry和Feature两种类型。

Entry类型的HAP是应用的主模块。在同一个应用中,同一设备类型只支持一个Entry类型的HAP,通常用于实现应用的入口界面、入口图标、主特性功能等。Entry类型的HAP是应用启动的入口点,用户点击应用图标时首先加载的就是Entry模块。

Feature类型的HAP是应用的动态特性模块。Feature类型的HAP通常用于实现应用的特性功能,一个应用程序包可以包含一个或多个Feature类型的HAP,也可以不包含。Feature模块可以在应用运行时按需加载,实现功能的动态扩展。

HSP是HarmonyOS共享包,可以包含代码、C++库、资源和配置文件,供多个模块或应用共享。HSP支持应用内共享和跨应用共享两种模式。

1.2 Module的概念

Module是HarmonyOS应用/服务的基本功能单元,包含了源代码、资源文件、第三方库及应用/服务配置文件,每一个Module都可以独立进行编译和运行。

Module分为Ability和Library两种类型。Ability类型的Module编译后生成HAP包,Library类型的Module编译后生成HAR包或HSP包。Ability类型的Module是可以独立运行的单元,包含完整的应用组件和生命周期管理。Library类型的Module是代码和资源的集合,供其他模块引用,不能独立运行。

一个HarmonyOS工程可以包含一个或多个Module。合理的Module划分有助于提高代码的复用性和可维护性。common层模块通常编译为HAR或HSP,features层模块可以根据是否需要独立部署选择编译为HAP或HAR,products层模块编译为Entry类型的HAP。

1.3 APP包的结构

APP包是HarmonyOS应用的最终交付物,其内部包含一个或多个HAP包以及描述文件。APP包的目录结构如下:

复制代码
app_name.app
├── entry.hap
├── feature1.hap
├── feature2.hap
├── pack.info
└── signature/
    └── 签名文件

pack.info文件描述了APP包的基本信息,包括应用名称、版本号、包含的HAP列表等。签名文件用于验证APP包的完整性和来源。

1.4 APP包的约束

HarmonyOS对APP包有以下约束。Entry类型的HAP在同一个应用中同一设备类型只允许有一个。Feature类型的HAP可以有零个或多个。APP包中的所有HAP必须使用相同的签名证书。APP包中的所有HAP的bundleName必须一致。APP包的versionCode和versionName必须一致。

开发者需要理解这些约束,以正确组织应用工程结构和打包流程。

2. 应用签名与证书管理

2.1 签名的基本概念

HarmonyOS应用/服务通过数字证书和Profile文件来保证应用/服务的完整性,应用/服务上架到AppGallery Connect必须通过签名校验。因此,开发者需要使用发布证书和Profile文件对应用/服务进行签名后才能发布。

签名机制的核心概念包括以下几点。

密钥包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,格式为.p12,公钥和私钥对用于数字签名和验证。开发者需要妥善保管私钥,一旦泄露可能导致应用被冒名发布。

证书请求文件格式为.csr,全称为Certificate Signing Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。

数字证书格式为.cer,由AppGallery Connect颁发,用于验证应用开发者的身份和应用的完整性。

Profile文件格式为.p7b,包含HarmonyOS应用/服务的包名、数字证书信息、描述应用/服务允许申请的证书权限列表,以及允许应用/服务调试的设备列表等内容,每个应用/服务包中均必须包含一个Profile文件。

2.2 生成密钥和证书请求文件

HarmonyOS应用/服务通过数字证书和Profile文件来保证应用/服务的完整性。在申请数字证书和Profile文件前,需要提前生成密钥和证书请求文件。

使用DevEco Studio生成密钥和证书请求文件

DevEco Studio提供了图形化的生成工具,操作步骤如下。

在主菜单栏单击Build > Generate Key and CSR。如果本地已有对应的密钥,无需新生成密钥,可以在Generate Key界面中单击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。

填写密钥库文件,若已有的密钥库文件,单击Select an existing key进行选择。下面以新创建密钥库文件为例进行说明。

在Generate Key窗口,填写密钥库信息后,点击Next。Keystore Name填写p12文件名称,仅允许包含字母、数字、下划线、中划线、句点。Select file save path设置密钥库文件存储路径。Key store Password设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。Alias密钥别名也请记住,后续签名配置需要使用。

在Generate Certificate Request File (CSR)窗口,设置CSR文件名和CSR文件存储路径后,点击Finish。创建CSR文件成功,可以在存储路径下获取生成的密钥库文件和证书请求文件。

使用命令行工具生成证书请求文件

使用Open JDK携带的Keytool工具也可以生成证书请求文件,步骤如下。

使用管理员身份运行命令行工具,切换到keytool工具所在路径,执行如下命令生成公私钥文件:

bash 复制代码
keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc

参数说明如下。alias是密钥的别名信息,用于标识密钥名称。sigalg是签名算法,固定为SHA256withECDSA。dname包含国家/地区代码CN、组织名称、组织单位名称、名字与姓氏。validity是证书有效期,建议设置为25年。storepass和keypass是密码,必须由大小写字母、数字和特殊符号中的两种以上字符组合。

生成密钥文件后,执行如下命令生成证书请求文件:

bash 复制代码
keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr

2.3 申请发布证书和Profile文件

通过生成的证书请求文件,向AppGallery Connect申请发布证书和Profile文件。

首先在AppGallery Connect项目中,创建一个HarmonyOS应用/服务。如果申请原子化服务的签名证书,在创建应用操作时,是否原子化服务选项请选择是。

然后在AppGallery Connect中申请、下载发布证书和Profile文件。发布证书用于标识应用开发者的身份,Profile文件包含应用的包名、证书信息、权限列表等信息。

2.4 配置签名信息

使用制作的私钥文件、在AppGallery Connect中申请的证书文件和Profile文件,在DevEco Studio配置工程的签名信息,构建携带发布签名信息的APP。

在File > Project Structure > Project > Signing Configs > default界面中,取消Automatically generate signature勾选项,然后配置工程的签名信息。Store File选择密钥库文件.p12,Store Password输入密钥库密码,Key Alias输入密钥的别名信息,Key Password输入密钥的密码,Profile File选择申请的发布Profile文件.p7b,Certpath File选择申请的发布数字证书文件.cer。

2.5 自动签名与手动签名

从DevEco Studio 26.0.0 Beta1版本开始,开发者只需将应用进行编译构建后上传到AGC。在上传的过程中,无论应用之前是否已签名,DevEco Studio都会对应用重新进行签名,支持使用AGC自动生成的云管理证书,也支持使用开发者创建的证书。

对于手动管理签名的场景,开发者需要自行配置签名信息,包括创建或导入证书、导入或下载Profile文件。

创建证书时,在Distribution Certificate选择Create Certificate,填写相关信息生成证书。导入证书时,需要导入本地已有的密钥库文件和证书文件。导入Profile时,在本地选择与证书匹配的.p7b文件,或在AGC下载Profile后导入。

3. 编译构建与打包

3.1 编译构建概述

完成签名配置后,开发者需要将应用编译构建为可发布的APP包。编译构建是将源代码、资源文件和配置打包为最终交付物的过程。

HarmonyOS应用支持在DevEco Studio中进行编译构建,通过IDE的图形化界面即可完成打包操作。应用上架时,要求应用包类型为Release类型。

3.2 编译构建操作步骤

在DevEco Studio中编译构建APP包的步骤如下。

单击Build > Build Hap(s)/APP(s) > Build APP(s),等待编译构建生成应用包。构建模式是Default时,构建APP包默认Release模式;构建HAP/HSP/HAR包默认Debug模式。

编译构建完成后,可以在工程目录build > outputs > {product}下获取应用包。APP包文件后缀为.app,包含了应用的所有HAP模块和描述文件。

3.3 HAP包与APP包的区分

HAP包是HarmonyOS应用安装的基本单位,一个HAP包对应一个Module。HAP包可以独立安装和运行,通常用于调试和测试场景。

APP包是HarmonyOS应用的最终交付物,包含一个或多个HAP包。APP包用于上架到华为应用市场,用户下载安装的是APP包解压后的HAP组合。

开发者在上架前需要确保编译构建的是APP包而非单个HAP包。如果工程目录中存在不需要打包到APP的HAP模块,请手动删除后再进行编译构建生成APP。

3.4 多设备包构建

对于需要支持多种设备类型的应用,可以在build-profile.json5中声明目标设备类型。构建时会根据设备类型生成对应的HAP包。

复制代码
"targets": [{
  "name": "default",
  "deviceTypes": ["phone", "tablet", "tv"]
}]

不同的设备类型可能需要不同的资源和配置,通过设备类型声明可以确保应用在不同设备上正确运行。

4. 应用测试全流程

4.1 应用测试概述

为确保HarmonyOS应用的质量和用户体验达到商用标准,须对应用实施全面的测试活动。整个测试活动从流程上分为开发者测试、集成验证和上架审核三个阶段。

测试活动涵盖单元测试、功能场景测试、体验专项测试、线上监测、上架审核测试等内容。

单元测试在应用开发过程中,对函数、模块或接口进行测试,验证代码实现的正确性,属于白盒/灰盒测试范畴。功能场景测试在应用开发完成后,针对已实现的功能进行验证,推荐使用Hypium鸿蒙自动化测试框架开发测试脚本。

体验专项测试在功能稳定后开展,内容包括应用操作流畅性、长时间稳定性、功耗续航、用户体验、应用安全隐私,以及不同操作系统和设备的兼容性等。可使用端侧DevEco Testing测试工具或者云侧AGC测试服务。

线上监测在应用正式发布后进行,通过线上指标监测,精准识别并解决应用运行中的性能与稳定性问题。上架审核测试在申请应用上架时进行,具体包括基础功能测试、体验测试,以及与合规性和内容审核相关的测试。

4.2 应用测试标准

为保障应用的质量和用户体验,华为开发者官网发布了功能测试标准和体验测试标准。开发者在应用开发过程中须参考相关标准,开展系统性测试。

功能测试标准

功能测试标准通常包括核心功能测试标准和创新特性测试标准两类,用于保障应用功能的完整性和可用性。

核心功能测试标准看护三个关键内容。功能正确性保障应用业务功能运行正常,无逻辑错误、数据偏差或功能异常。功能完备性保障应用业务功能完整可用,无功能遗漏、逻辑断层或冗余模块。数据完备性保障应用数据同步功能通过实时或周期性同步,确保多设备、平台、系统间的数据一致性。本地须确保在应用版本、系统版本更新后数据无丢失,同步正常;云端须实现跨设备、跨系统的数据互相同步且无丢失。

创新特性测试标准看护基于鸿蒙开放能力进行创新的特性。意图框架集成的AI能力可准确、及时地识别用户的显性需求与潜在意图。自由流转能力适用于应用接续、跨设备拖曳和跨设备剪贴板等场景。一次开发多端部署能力使开发者能够基于一套设计高效构建可在多端运行的应用。

体验测试标准

体验测试标准涵盖兼容性、稳定性、性能、功耗、安全隐私及用户体验交互六大核心维度。

兼容性保障应用在不同操作系统版本中、不同设备上及升级场景下的兼容性,并满足生态开发规范。稳定性保障应用长时间稳定运行无故障,内存资源使用无异常,不出现闪退、卡死等现象。性能保障应用具备极致流畅的体验,启动及应用内操作的时延、帧率满足人因体验要求,无响应慢、卡顿等现象。

功耗保障应用在前/后台无不合理行为,确保良好的续航体验。安全隐私保障应用全生命周期的纯净、安全与隐私体验,维护生态健康。用户体验交互保障应用良好的交互体验,页面精致美观,操作简单易用。

4.3 测试工具与服务

DevEco Testing测试工具

DevEco Testing支持接入本地设备进行测试,提供兼容性、性能、稳定性、功耗、安全等专项测试能力。开发者可以在应用开发完成后使用DevEco Testing对应用进行全面的体验专项测试。

AGC云测试服务

AGC提供云端设备测试模式,开发者无需准备大量真机即可在云端完成兼容性、性能、安全等测试。云测试可以自动测试应用在华为手机上的兼容性、性能、稳定性、功耗、安全问题,并出具详细报告。

Hypium自动化测试框架

Hypium是鸿蒙官方自动化测试框架,支持开发者编写UI自动化测试脚本。应用功能稳定后,推荐使用Hypium开发测试脚本,以提升测试执行效率。Hypium支持编写电商应用UI自适应用例,解决UI变化导致自动化脚本维护成本高的问题。

云调试服务

云调试解决开发者设备机型不足、设备管理困难问题,远程真机测试并解决应用在手机上的运行问题,帮助提前发现并精准定位、解决应用问题。

4.4 上架前测试清单

在提交上架审核前,建议开发者完成以下测试验证。

功能层面,所有核心功能经过测试并验证正确性,边界条件和异常场景有处理逻辑。

性能层面,冷启动时间满足要求,内存占用不超过配额,帧率稳定性达标。

兼容性层面,在目标设备类型上完成兼容性测试,不同系统版本下功能正常。

安全隐私层面,权限申请有明确用途说明,隐私政策可访问且内容完整,数据传输和存储安全合规。

体验层面,界面布局合理、无遮挡,交互反馈及时,动效流畅。

参考华为开发者官网发布的应用测试标准,开展系统性测试,确保应用达到上架标准。

5. 上架审核流程

5.1 上架前准备

上架前需要完成以下准备工作。

开发者账号需要已完成实名认证,在AppGallery Connect提交应用资质审核。应用包名与AGC注册的bundleName完全一致。签名文件包括发布证书和Profile文件已正确配置。隐私政策链接可访问,内容完整。资质文件包括版权证明、隐私政策链接等相关材料。

5.2 上架审核流程

HarmonyOS应用上架到华为应用市场的流程如下。

开发者完成HarmonyOS应用开发后,使用发布证书和Profile文件对应用进行签名,然后打包成APP文件。在DevEco Studio中可以通过Build > Upload Product直接将APP包上传到AGC。

在上传过程中,DevEco Studio 26.0.0 Beta1及以上版本会自动对应用进行签名,支持使用AGC自动生成的云管理证书。

上传软件包后,在AGC中配置应用信息,包括应用名称、应用介绍、应用截图、应用分类、内容分级、隐私声明等。

完成信息配置后提交上架申请。审核周期通常为1到3个工作日。审核通过后应用正式上架,用户可在华为应用市场搜索下载。

5.3 上架信息配置

上架信息配置是提交审核前的关键步骤。

基础信息包括应用名称、应用图标、应用分类、默认语言。应用名称必须与软件包中的名称一致,且需符合审核规范。

版本信息包括发布地区、版本号、版本更新日志。版本号需要正确填写,测试版本的VersionCode必须高于已发布版本的VersionCode。

资质材料包括电子版权证书、备案信息等。游戏类应用还需提供游戏版号信息。

应用内资费需要选择用户在使用应用过程中的付费类型,如道具购买、会员开通等。

内容分级通过填写调查问卷获取年龄分级结果。隐私标签根据应用是否收集用户信息数据选择是否展示。

5.4 应用发布方式

HarmonyOS应用发布后,通过AppGallery Connect将HarmonyOS应用分发至应用市场,用户可以通过终端设备上的应用市场App获取HarmonyOS应用。

元服务发布后,将会被分发至服务中心,消费者可以通过服务中心获取原子化服务。

应用发布支持分地区发布,开发者可以选择应用上架的国家和地区。

5.5 开放式测试与公开测试

在正式发布前,可以发布测试版本提前验证。

公开测试

公开测试版本在华为应用客户端测试专区面向全网所有用户展示。测试时间最大有效期为30天,下载安装次数上限为1000万。公开测试版本可以生成分享链接,用户可通过链接下载安装。

测试版本提交审核后,版本状态包括正在审核、等待生效、正在测试、审核不通过、已失效等状态。

测试版本状态为等待生效或正在测试时,开发者可以修改测试时间。正式版本上架后,同版本名称同版本号的公开测试版本会自动下架。

开放式测试

开放式测试可以让应用在正式上架前,提前发布一个测试版本给开发者信任的测试用户。测试版本仅对指定的测试用户可见,方便提前收到用户反馈并改进应用。

沙盒测试

沙盒测试用于在应用未正式上线前模拟真实用户的使用体验,可以在AGC控制台创建沙盒测试账号,测试某些需要对接现网真实环境的功能,如订单支付测试。

6. 数据运营与监控

6.1 App Analytics分析服务

应用上架后,数据分析是持续优化应用体验的基础。AppGallery Connect提供了App Analytics分析服务,用于监控应用运营数据。

App Analytics可以跟踪的关键指标包括:应用安装量、活跃用户数、留存率、使用时长、页面访问路径、转化漏斗、崩溃率等。通过这些数据,开发者可以了解用户行为模式,发现体验问题,优化产品设计。

在AGC创建项目时,建议启用App Analytics服务,以便上架后获得完整的数据运营能力。

6.2 APMS应用性能监测

APMS应用性能监测服务可以及时捕捉现网卡顿与崩溃,帮助开发者快速定位并修复问题。

APMS能够监控的关键指标包括:应用启动耗时、页面加载速度、网络请求耗时、卡顿率、崩溃率、内存占用等。当应用出现性能劣化时,APMS能够提供详细的堆栈信息和现场数据,便于开发者复现和解决问题。

6.3 崩溃监控与修复

应用发布后,崩溃是影响用户体验最严重的问题。建立有效的崩溃监控和修复流程至关重要。

崩溃监控可以通过APMS或第三方服务实现。当出现崩溃时,系统会自动收集崩溃堆栈、设备信息、应用版本等现场数据。开发者应根据崩溃率和崩溃类型设定告警阈值,及时发现重大问题。

崩溃修复遵循识别、定位、修复、验证、发布的流程。紧急问题应走热修复通道快速解决。

6.4 用户反馈收集

用户反馈是发现体验问题的重要来源。可以通过应用内反馈入口收集用户意见和建议,结合应用商店评价进行分析。

建议定期分析用户反馈中的共性问题,将其纳入版本优化计划。

7. CI/CD自动化实践

7.1 持续集成概述

对于多应用同时开发的团队,持续集成与持续交付流程可以显著提升开发效率和质量。

HarmonyOS提供了命令行工具,支持将代码检查、单元测试及UI自动化测试集成到CI/CD流水线中。

7.2 自动化测试集成

Code Linter可以进行代码静态检查,确保代码质量。DevEco Studio单元测试框架可以验证逻辑正确性。Hypium自动化测试框架支持UI自动化测试脚本的编写和执行。

这些工具可以通过简单的命令行操作,形成持续集成的自动化测试流水线,便捷、快速地实现多应用自动化测试,大大提升上架效率。

7.3 打包与上传自动化

在CI/CD流水线中,编译构建、签名打包、上传AGC等操作都可以通过命令行或脚本实现自动化。使用DevEco Studio提供的命令行工具,开发者可以在无人值守的情况下完成应用的构建、签名和上传。

自动化流程建议包含以下环节:代码拉取、代码检查、单元测试、编译构建、签名打包、上传AGC、触发测试、提交审核。

8. 应用发布后的持续维护

8.1 版本更新策略

应用上架后,需要持续迭代更新。版本更新应遵循以下原则:保持合理的更新频率,既不过于频繁让用户疲惫,也不过于稀少让问题积累。每次更新应包含明确的版本说明,告知用户新功能和修复内容。

版本号规范要求VersionCode每次发布新版本时递增,VersionName遵循语义化版本规范。测试版本的VersionCode必须高于已发布正式版本的VersionCode。

8.2 性能持续优化

应用发布后,应持续关注性能指标的变化趋势。通过APMS等监控工具,识别性能劣化问题并及时修复。建立性能基线和告警机制,当关键指标超出阈值时主动介入。

8.3 安全合规更新

随着法律法规和平台政策的更新,应用可能需要适配新的安全合规要求。定期检查权限使用情况、隐私政策合规性、API兼容性,确保应用始终保持合规状态。

总结

本文系统讲解了HarmonyOS应用从开发完成到上架运营的完整工程化流程。从应用程序包结构出发,深入解析了HAP、HSP、Module等核心概念,然后详细讲解了应用签名与证书管理的完整流程,包括密钥生成、证书申请、签名配置等关键步骤。

本文还介绍了编译构建与打包的操作方法,应用测试全链路的标准与工具,上架审核的流程与注意事项,数据运营与监控的核心能力,以及CI/CD自动化实践的方向。通过本文的学习,希望你能够独立完成HarmonyOS应用的签名、打包、测试、上架和运营维护工作。

HarmonyOS提供了从开发、测试、上架到运营的全生命周期一站式服务能力。在应用开发过程中,建议开发者充分利用这些工具和服务,确保应用质量,提升用户满意度,最终实现应用的商业价值。

至此,HarmonyOS基础七篇精要全部完成。本系列从HarmonyOS系统概述与开发准备开始,依次深入Stage应用模型与Ability开发、ArkUI框架与声明式UI、一次开发多端部署、数据管理与持久化、元服务开发、工程化与上架等七个主题,系统覆盖了HarmonyOS应用开发的完整知识体系。希望本系列能为鸿蒙开发者提供系统化的学习参考和实践指导。