指定设备发布:构建Deeplink下载链接(三)
2026/9/12 20:29:27 网站建设 项目流程

前两篇分别讲了打包配置和编译流程,本文进入指定设备发布的最后关键环节——如何通过Deeplink让团队成员下载安装应用。这部分涉及应用描述文件(manifest.json5)、服务器配置要求、Deeplink格式等。

一、整体流程

核心步骤:

  1. 将编译得到的各个HAP/HSP 包上传至公司的服务器或第三方云上

  2. 获取 HAP/HSP 包下载 URL,下载 URL 必须以https开头

  3. 基于应用信息生成应用描述文件(例如manifest.json5,文件名可自定义)

  4. 将描述文件上传至服务器,获取其下载 URL

  5. 将描述文件 URL 构建成Deeplink,用于下载应用

二、应用描述文件(manifest.json5)结构

{ "app": { "bundleName": "com.example.demo.a", "bundleType": "app", "versionCode": 1000000, "versionName": "1.0.0", "label": "DemoA", "deployDomain": "应用、图标以及描述文件部署域名", "icons": { "normal": "标准图标下载链接", "large": "大图标下载链接" }, "minAPIVersion": "4.1.0(11)", "targetAPIVersion": "4.1.0(11)", "modules": [ { "name": "module1", "type": "entry", "deviceTypes": ["tablet", "2in1", "phone"], "packageUrl": "HAP包下载链接", "packageHash": "HAP包sha256值" }, { "name": "module2", "type": "feature", "deviceTypes": ["tablet", "2in1", "phone"], "packageUrl": "HAP包下载链接", "packageHash": "HAP包sha256值" }, { "name": "module3", "type": "shared", "deviceTypes": ["tablet", "2in1", "phone"], "packageUrl": "HSP包下载链接", "packageHash": "HSP包sha256值" } ], "sign": "描述文件签名" } }

三、应用信息字段说明

1. 应用基础信息

属性数据类型必选/可选说明
bundleName字符串M(必选)应用的 Bundle 名称
bundleType字符串M应用的 Bundle 类型,用于区分 HarmonyOS 应用或元服务。
当前仅支持配置为"app",表示 HarmonyOS 应用
versionCode数值M应用的版本号
versionName字符串M应用版本号的文字描述
label字符串M应用的名称,建议与实际应用名称一致,否则会出现下载与安装过程中应用名不一致的问题

2. 部署与图标信息

属性数据类型必选/可选说明
deployDomain字符串M应用、图标及描述文件的部署域名,需要与 icons、packageUrl 以及描述文件自身下载 URL 中的域名一致,且不可包含协议头或端口号,否则会导致下载失败
icons字符串M应用的图标,提供内部部署的图片下载地址,必须以https开头
minAPIVersion字符串M应用运行所需 SDK 的 API 最小版本,用于判断是否与当前设备兼容
targetAPIVersion字符串M应用运行所需的 API 目标版本,用于判断是否与当前设备兼容

3. modules 列表信息

属性数据类型必选/可选说明
modules列表M应用分包 module 信息列表,以数组形态组织,其中至少包括一个 entry module 信息
name字符串Mmodule 的名称,该名称在整个应用须唯一
type字符串M应用 module 的类型,取值范围:
entry:应用的主模块
feature:应用的动态特性模块
shared:动态共享包模块(仅支持应用内共享包
deviceTypes字符串M当前 module 可以运行在哪类设备上,取值范围:
phone:手机
tablet:平板
(原文表格在此处被截断,PC/2in1 未在可识别文本中出现)
packageUrl字符串M当前 module 上传至服务器后生成的下载 URL,必须以https开头
packageHash字符串M当前 module 的 SHA256 值。
• Windows:certutil -hashfile 包路径 SHA256
• Mac:shasum -a 256 包路径
说明:“包路径”指应用 HAP/HSP 包在本地的存储路径
sign字符串M描述文件签名。
• Windows:可使用验证工具生成签名
• Mac:可采用以下任意一种方法生成签名:
① 将 .bat 文件中的命令转换成在 iOS 上运行的命令使用
② Windows 模拟器运行 .bat 文件

四、Deeplink 构建与拉起条件

1. Deeplink 格式

store://enterprise/manifest?url=https://xxx.xxx/xxx.json5
部分
Schemestore://
Hostenterprise
Pathmanifest
参数应用描述文件上传至服务器后生成的下载 URL,必须以https开头

2. 拉起条件

  • 仅支持页面点击行为触发拉起

  • 不支持地址栏输入 DeepLink 拉起

  • 不支持HTML 头文件自动拉起

  • 仅支持华为浏览器拉起

  • 从华为浏览器拉起的所有行为,均需判断是否有用户点击行为,确认用户点击才允许拉起

3. 特殊字符处理

如果下载 URL 内包含特殊字符,还需进行特殊字符编码:

declare function encodeURIComponent(uriComponent: string | number | boolean): string;

五、服务器配置要求

1. 基本要求

  • 服务器提供应用描述文件和安装包的 HTTPS 下载链接

  • 下载链接中的域名不支持 IP 地址

  • 应用描述文件和安装包的下载链接,均需要支持通过 HEAD 方式请求返回文件大小

2. 自签证书要求(如使用)

如果服务器提供的 HTTPS 下载链接使用了自签证书,还需满足:

  • 用户设备需要安装服务器自签证书对应的 CA 证书

  • 自签证书有效期不超过 13 个月,超期请及时更换

3. 分片下载能力

  • 配置服务器支持分片下载能力

  • 建议验证方式:构造下载请求头包含range字段,返回码为 206表示支持分片下载;反之则不支持

4. 响应头配置

  • 需配置服务器返回的响应头,使得应用描述文件和应用包可正确传输下载

六、分发页面实现下载功能

1. HTML 页面触发 Deeplink

<html lang="en"> <head> <meta charset="UTF-8"> <title>Button Open DeepLink Example</title> <script> function openDeepLink() { let url = 'store://enterprise/manifest?url=https://xxx.xxx/xxx.json5'; window.open(url, '_parent'); } </script> </head> <body> <button onclick="openDeepLink()">下载</button> </body> </html>

2. 应用更新场景(openlink 方式)

对于应用更新场景,可以使用openlink方式直接拉起下载安装。

private openDeepLink(deeplink: string): void { // deeplink格式具体见开发者文档 let context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext; context.openLink(deeplink).then(() => { console.info('openlink success.'); }).catch((error: BusinessError) => { console.error('openlink failed.'); }); }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询