鸿蒙应用开发之打包与上架

news/2024/7/21 11:27:03 标签: harmonyos, 华为

一、概述

当您开发、调试完HarmonyOS应用/元服务,就可以前往AppGallery Connect申请上架,华为审核通过后,用户即可在华为应用市场获取您的HarmonyOS应用/元服务。

HarmonyOS会通过数字证书与Profile文件等签名信息来保证应用的完整性,需要上架的HarmonyOS应用/元服务都必须通过签名校验,所以上架前,您需要先完成签名操作。

二、创建项目

  1. 登录AppGallery Connect,点击“我的项目”。
  2. 在项目页面中点击“添加项目”。
  3. 在“创建项目”页面中输入项目名称后 ,点击“创建并继续”。
    image.png
  4. 项目创建后会进入“开通分析服务”页面。此时可以开通分析服务,以便通过报表查看相关指标数据,也可以创建完项目后开通。

三、创建HarmonyOS应用/元服务

  1. 在项目列表中点击需要操作的项目。
  2. 点击“添加应用”创建应用/元服务。
  • 项目中没有应用,在“项目设置”页面点击“添加应用”。

image.png

  • 项目中有应用,展开顶部应用列表框,点击“添加应用”。

image.png

3,填写相关信息,点击“确认”。

  • 选择平台:选择“APP(HarmonyOS)”。
  • 应用包名:需要和app.json5文件(Stage模型)或config.json文件(FA模型)中的“bundleName”值保持一致。
  • “是否元服务”:HarmonyOS应用选择“否”,元服务选择“是”。

image.png

四、编译打包HarmonyOS应用/元服务

完整编译流程如下图所示。

image.png

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

  1. 打开DevEco Studio,菜单选择“Build > Generate Key and CSR”。
  2. Key Store File可以点击“Choose Existing”选择已有的密钥库文件(存储有密钥的.p12文件),跳转至步骤4继续配置;如果没有密钥库文件,点击“New”,跳转至步骤3进行创建。

image.png

  1. 在“Create Key Store”界面,填写密钥库信息后,点击“OK”。
  • Key Store File:设置密钥库文件存储路径,并填写p12文件名。
  • Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • Confirm Password:再次输入密钥库密码。
  1. 在“Generate Key and CSR”界面继续填写密钥信息后,点击“Next”。
  • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
  • Validity:证书有效期,建议设置为25年及以上,覆盖元服务的完整生命周期。
  • Certificate:输入证书基本信息,如组织、城市或地区、国家码等。
  1. 在“Generate Key and CSR”界面设置CSR文件存储路径和CSR文件名,点击“Finish”。

image.png

CSR文件创建成功后,将在存储路径下获取生成密钥库文件(.p12)和证书请求文件(.csr)。

image.png

4.2 申请发布证书

  1. 登录AppGallery Connect,选择“用户与访问”。
  2. 左侧导航栏选择“证书管理”,进入“证书管理”页面,点击“新增证书”。

image.png

  1. 在弹出“新增证书”界面填写相关信息后,填写证书名称、证书类型和上传证书请求文件(CSR)等内容,点击“提交”。

image.png

  1. 证书申请成功后,“证书管理”页面展示生成的证书内容。
  • 点击“下载”将生成的证书保存至本地。
  • 每个帐号最多申请1个发布证书,如果证书已过期或者无需使用,点击“废除”即可删除证书。

image.png

4.3 申请发布Profile

  1. 登录AppGallery Connect,选择“我的项目”。
  2. 找到对应项目,点击项目卡片中需要发布的元服务。
  3. 导航选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击“添加”。

image.png

  1. 在“HarmonyAppProvision信息”界面填写相关信息,点击“提交”。
  2. 申请成功,即可在“管理HAP Provision Profile”页面查看Profile信息。点击“下载”,将文件下载到本地。

image.png

4.4 配置签名信息

  1. 打开DevEco Studio,菜单选择“File > Project Structure”,进入“Project Structure”界面。
  2. 导航选择“Project”,点击“Signing Configs”页签,填写相关信息后,点击“OK”。

说明

API 9以前的应用/元服务需要选择“Release”页签。

    1. Store File:密钥库文件,选择生成密钥和证书请求文件时生成的.p12文件。
    2. Store Password:密钥库密码,需要与生成密钥和证书请求文件时设置的密钥库密码保持一致。
    3. Key alias:密钥的别名信息,需要与生成密钥和证书请求文件时设置的别名保持一致。
    4. Key password:密钥的密码,需要与生成密钥和证书请求文件时设置的密码保持一致。
    5. Sign alg:固定设置为“SHA256withECDSA”。
    6. Profile file:选择申请发布Profile时下载的.p7b文件。
    7. Certpath file:选择申请发布Profile时下载的.cer文件。

API 9以前的应用/元服务签名界面

image.png

API 9应用/元服务签名界面

image.png

4.5 编译打包

  1. 打开DevEco Studio,菜单选择“Build > Build Hap(s)/APP(s) > Build APP(s)”。
  2. 等待编译构建签名的HarmonyOS应用/元服务,编译完成后,可获取用于上架的软件包。
  • API 9以前的应用/元服务软件包获取路径:工程目录build > outputs > app > release目录。
  • API 9应用/元服务软件包获取路径:工程目录build > outputs > default目录。

五、上架HarmonyOS应用/元服务

  1. 登录AppGallery Connect,选择“我的应用”。
  2. 在应用列表首页中点击“HarmonyOS应用”页签。

image.png

  1. 点击待发布的应用/元服务,在左侧导航栏选择“应用信息”菜单。
  2. 填写应用的基本信息,如语言,应用名称,应用介绍等,上传应用图标,所有配置完成后点击“保存”。
  3. 填写版本信息,如发布国家或地区、上传软件包、提交资质材料等,所有配置完成后点击右上角“提交审核”。

六、常见问题

6.1 提示“HarmonyOS hapAppProvision文件非法”

上传软件包时,提示“HarmonyOS hapAppProvision文件非法,请重新上传”,一般是由于软件包中使用的发布Profile文件并非当前待发布应用的。

例如:下载Profile文件时,获取了A应用的Profile,然后将此Profile文件打入B应用包中。

image.png

那么在发布B应用时,上传软件包就会出现此错误。

image.png
所以出现此错误提示时,请排查软件包中使用的Profile文件是否为当前待发布应用的。我们可以以文本方式打开Profile文件,检查“bundle-name”的包名是否与待发布应用包名一致。

image.png

6.2 提示“使用的HarmonyAppProvision和证书不匹配”

上传软件包时,提示“使用的HarmonyAppProvision和证书不匹配,请重新上传”,一般是由于软件包中使用的发布证书与发布Profile文件中使用的发布证书不一致。

出现此错误提示时,请排查在IDE打包时配置的发布证书,是否为配置的Profile文件中使用的发布证书。

image.png

image.png

6.3 提示“软件包中使用证书已经失效”

上传软件包时,提示“软件包中使用证书已经失效,请重新上传”,一般是软件包中使用的证书已经删除或者过期。

出现此错误提示时,请访问AppGallery Connect申请Profile的页面,检查打包使用Profile的证书是否还存在。如果证书为空或者已删除,需要重新申请证书并重新编译打包新的软件包。

image.png


http://www.niftyadmin.cn/n/5194081.html

相关文章

Nginx 核心配置文 nginx.conf介绍

Nginx核心配置文件结构 我们知道Nginx的核心配置文件默认是放在/usr/local/nginx/conf/nginx.conf, 读取Nginx自带的Nginx配置文件,我们将其中的注释部分删除掉后,就剩下下面核心内容: worker_processes 1;events {worker_connections 1…

Linux:按时间批量删除文件(删除N天前文件)

需要根据时间删除这个目录下的文件:/tmp,清理掉20天之前的无效数据。 可以使用下面一条命令去完成: find /tmp -mtime 20 -name "*.*" -exec rm -Rf {} \;这个是根据时间删除。 下面简要解释一下,这句shell命令&…

【csapp lab】lab2_bomblab

文章目录 前言实验内容phase_1phase_2phase_3phase_4phase_5phase_6secret_phase 前言 刚做了csapp lab2,记录一下。 我这里用的的系统环境是Ubuntu22.04,是64位系统,与用32位系统可能有所差异。 实验共包括七个阶段,每个阶段考…

python图

有向图&#xff1a;图中的每条边都有方向的图叫有向图。此时&#xff0c;边的两个顶点有次序关系&#xff0c;有向边 < u,v>成为从顶点u到顶点v的一条弧&#xff0c;u成为弧尾&#xff08;始点&#xff09;&#xff0c;v成为弧头&#xff08;终点&#xff09;&#xff0c…

C语言ASCII码排序(1086: ASCII码排序(多实例测试))

题目描述 输入三个字符后&#xff0c;按各字符的ASCII码从小到大的顺序输出这三个字符。 输入&#xff1a;输入数据有多组&#xff0c;每组占一行&#xff0c;由三个字符组成&#xff0c;之间无空格。chu 输出&#xff1a;对于每组输入数据&#xff0c;输出一行&#xff0c;字符…

[C国演义] 哈希的使用和开闭散列的模拟实现

哈希的使用和开闭散列的模拟实现 1. 使用1.1 unordered_map的接口1.2 unordered_set的接口 2. 哈希底层2.1 概念2.2 解决哈希冲突 3. 实现3.1 开放寻址法3.2 拉链法 1. 使用 1.1 unordered_map的接口 构造 void test1() {// 空的unordered_map对象unordered_map<int, in…

数据结构【DS】队列

队列&#xff1a;只允许在表尾(队尾)进行插入&#xff0c;而在表头(队头)进行删除的线性表。 循环队列 初始(队空)时&#xff1a; &#x1d478;.&#x1d487;&#x1d493;&#x1d490;&#x1d48f;&#x1d495;&#x1d478;.&#x1d493;&#x1d486;&#x1d482;&am…

asp.net智能考试系统VS开发sqlserver数据库web结构c#编程计算机网页项目

一、源码特点 asp.net 智能考试系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 系统运行视频 https://www.bilibili.com/video/BV1gz4y1A7Qp/ 二、功能介绍 本系统使用Microsoft Visual Studio 201…