通过deeplink实现HarmonyOS鸿蒙Next应用下载安装(指定设备发布),是否支持封闭的内网环境?

通过deeplink实现HarmonyOS鸿蒙Next应用下载安装(指定设备发布),是否支持封闭的内网环境? 目前开发环境为封闭的内网环境,无法连接到外网,同时开发的应用因为要求无法上架应用商店,所以选择了deeplink的方式进行内部应用测试分发,官方文档如下:https://developer.huawei.com/consumer/cn/doc/app/agc-help-internal-test-release-app-0000002260691994

当前已经配置好了证书、签名等文件,同时也进行了应用打包,但是在浏览器中点击deeplink链接时,会提示:无法获取应用,网络连接不稳定,请稍后重试。错误码:10002。 json5文件配置如下:

{
  "app": {
    "bundleName": "com.xxx.xxx",
    "bundleType": "app",
    "versionCode": 1000000,
    "versionName": "1.0.0",
    "label": "xxx",
    "deployDomain": "xxx",
    "icons": {
      "normal": "https://xxx/opt/harmony/manifests/main.jpg",
      "large": "https://xxx/opt/harmony/manifests/main.jpg"
    },
    "minAPIVersion": "6.0.1",
    "targetAPIVersion": "6.0.1",
    "modules": [
      {
        "name": "pad",
        "type": "entry",
        "description": "$string:module_desc",
        "mainElement": "EntryAbility",
        "deviceTypes": [
          "phone",
          "tablet",
          "2in1"
        ],
        "packageUrl": "https://xxx/opt/harmony/manifests/pad-default-signed.hap",
        "packageHash": "3bed947407f34be2ceb91228e650aea17788585758230e1c2759e07f325b7724"
      }
    ]
  },
  "sign": "xxxxxxAflrreiDcCmXizsSuTS2z"
}

不确定华为浏览器在读取deeplink链接时,是否需要链接外网


更多关于通过deeplink实现HarmonyOS鸿蒙Next应用下载安装(指定设备发布),是否支持封闭的内网环境?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

14 回复

尊敬的开发者,您好,
在写回答->点击上传附件即可上传日志,
注意上传文件支持格式 chm,pdf,txt,docx,ppt,pptx,zip,大小 10MB 以内

zip支持格式 png,jpeg,gif,mp4,ets,ts,js,html,json,json5,yaml,cpp,c,h,properties,py,txt,md,xml

更多关于通过deeplink实现HarmonyOS鸿蒙Next应用下载安装(指定设备发布),是否支持封闭的内网环境?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


不支持完全封闭的内网环境。

通过 Deeplink 实现应用下载安装(指定设备发布/内部测试)的机制,必须依赖 HTTPS 协议,且服务器必须满足特定的 HTTP 头部要求。完全无法连接外网的"封闭内网"通常无法满足这些技术条件,或者会导致你遇到的 10002 错误。

以下是基于文档的具体分析和解决建议:

1. 为什么封闭内网会导致错误 10002?

根据文档[1],Deeplink 下载机制对服务器环境有严格的硬性要求,你的"封闭内网"很可能触犯了以下几点:

  • 强制 HTTPS 要求
    文档明确指出:下载 URL 必须以"https"开头。如果内网使用的是 HTTP 协议,或者自签证书配置不正确,华为浏览器会直接拦截,导致无法获取应用。
  • HEAD 请求限制
    文档要求服务器必须支持通过 HEAD 方式请求返回文件大小。很多内网简易服务器(如某些 Python HTTPServer 或简单的文件共享)不支持 HEAD 方法,这会导致应用市场客户端无法校验文件,从而报错"网络连接不稳定"。
  • 域名与 IP 限制
    文档规定:下载链接中的域名不支持 IP 地址。你必须配置内网 DNS 或在 Hosts 文件中绑定域名,仅仅使用 http://192.168.x.x 是无法通过校验的。
  • 证书信任问题
    如果使用自签证书,文档要求:用户设备必须安装对应的 CA 证书,且有效期不超过 13 个月。如果测试设备未安装证书,或者证书过期,就会出现网络连接错误。

2. 错误码 10002 的排查方向

虽然文档中未直接列出 10002 的详细对照表,但结合"网络连接不稳定"的提示和 Deeplink 机制,通常由以下原因引起:

表格

可能原因 检查点
协议错误 确认 json5 文件中的 URL 是否以 https:// 开头?
服务器配置 服务器是否支持 HEAD 请求?是否支持 Range 分片下载(返回 206 状态码)?
证书问题 测试手机是否已安装内网服务器的根证书?
网络连通性 手机连接的 WiFi 是否真的能访问到这台"内网"服务器?(防火墙、端口是否开放)

3. 解决方案与建议

如果你的应用必须在内网环境下分发,请尝试以下调整:

方案 A:改造内网环境(使其符合要求)

如果你的"内网"只是物理隔离但可以配置服务,请按以下步骤修复:

  1. 配置 HTTPS:必须为内网服务器申请或配置有效的 HTTPS 证书(不能仅用 HTTP)。
  2. 开启 HEAD/Range 支持:确保你的 Web 服务器(如 Nginx/Apache)配置正确,允许 HEAD 请求和 Range: bytes=0-2000 请求,并返回 206 Partial Content
  3. 配置域名解析:在内网 DNS 或手机的 Hosts 文件中,将服务器 IP 映射为一个域名(如 app.internal.com),并在 URL 中使用该域名。

方案 B:改用"本地安装"或"内网 AGC 代理"

如果无法改造内网,Deeplink 方案将无法使用,建议考虑替代方案:

  1. 直接 HAP 安装
    既然是内部测试,最简单的方法是直接将 HAP 包通过内网共享、U盘或内网 IM 工具发送给测试人员,直接点击安装(HarmonyOS 支持本地 HAP 安装)。
  2. 使用内网 OTA 服务
    搭建一个简单的内网 OTA(空中下载技术)页面,不使用华为的 store:// 协议,而是直接提供一个 <a href="xxx.hap">下载链接,引导用户在浏览器中直接下载 HAP 文件安装。

总结

Deeplink (store://) 方案不适用于无法配置 HTTPS 和域名的纯封闭内网。
建议你先检查服务器是否开启了 HTTPS 和 HEAD 请求支持。如果只是为了内部测试,直接分发 HAP 文件是最快且不受网络环境限制的方法。

直接下载内网的https服务器的应用安装包或者描述文件是可以的,但是华为系统目前不支持直接安装应用的安装包,必须通过deeplink的方式或者应用商店

目前已在外网服务器通过deeplink的形式实现应用安装包的下载。

尊敬的开发者,您好,10002:描述文件下载URL网络不可达,请检查描述文件下载URL是否可被正常访问。您可将描述文件下载URL复制至浏览器中进行下载验证。如果还是不能解决您的问题,请您提供完整的日志信息。
获取hilog日志命令如下:

hdc file recv data/log/hilog/ ./

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

cke_175.png
直接下载文件是可以下载的,但是没法读取deeplink链接

设备日志如何发给你,目前评论区是没法发送的

在内网环境时,是无法访问外界的信息的,比如百度之类的,网络为封闭的状态

Deeplink 支持封闭内网环境,但需满足以下核心条件:

  • 所有资源(HAP 包、描述文件、图标)必须通过 内网可访问的 HTTPS 服务器 提供。
  • 设备需与内网服务器网络互通,且能正确解析 deployDomain 配置的域名。
  • 华为浏览器无需连接外网,但必须能正常访问内网服务器。

排查步骤

结合问题描述排查需按以下顺序开展:

排查项 检查点 解决方案
HTTPS 证书 证书是否为自签名?是否包含 SAN(Subject Alternative Name)? 重新生成带 SAN 的自签名证书,并将 CA 根证书安装到设备信任列表中。
网络连通性 在设备浏览器中直接访问 packageUrl 或描述文件 URL 是否成功? 确保设备与服务器在同一网络,且防火墙未拦截 443 端口。
域名一致性 deployDomain 的值(如 xxx)是否与 packageUrl/icons 的域名一致? 修改为相同域名(不含协议/端口),如 deployDomain: "your.domain.com"
证书信任 设备访问资源时是否提示 “不安全连接”? 在设备设置中手动安装自签名 CA 证书(路径:设置 > 安全 > 安装证书)。
日志分析 查看设备日志是否存在 SSL handshake failedERR_CERT_AUTHORITY_INVALID 优先解决证书问题(常见于自签名证书未安装或 SAN 缺失)。

检查配置文件

请检查并优化 manifest.json5 配置,确保符合内网部署要求:

{
  "app": {
    "deployDomain": "your.domain.com",  // 需与实际域名完全一致(不含协议/端口)
    "modules": [
      {
        "packageUrl": "https://your.domain.com/.../pad.hap", // 域名需与deployDomain保持一致
        "packageHash": "3bed9474..."   // 确认通过命令生成(如 `shasum -a 256 pad.hap`)
      }
    ]
  },
  "sign": "xxxxxx..."  // 需通过官方验签工具生成,确保有效性
}

其他检查注意事项

  • 华为浏览器限制:仅支持用户点击行为触发下载(如按钮点击),不支持地址栏直接输入 Deeplink 触发。
  • 证书 SAN 项要求:若未配置 SAN,会导致证书无效;使用 OpenSSL 生成时需添加参数 -addext "subjectAltName=DNS:your.domain.com"
  • 设备兼容性:确保测试设备的系统版本 ≥ 配置的 minAPIVersion

总结一下

排查优先级:先在设备浏览器中手动访问资源 URL,根据错误提示(如证书警告、连接超时)针对性解决;封闭内网部署时,务必确保设备已信任自签名证书,且所有资源域名可正常解析、网络互通。

错误码:10002 描述文件下载出错

描述文件下载URL网络不可达,请检查描述文件下载URL是否可被正常访问。

您可将描述文件下载URL复制至浏览器中进行下载验证。试下url在浏览器中是否可以打开呢?

参考下这个连接呢:https://developer.huawei.com/consumer/cn/doc/app/agc-help-internal-test-errorcode-0000002295325157#section13508931122415

描述文件下载的url直接复制到浏览器中是可以下载的

不支持。deeplink依赖网络连接至华为应用市场或指定下载服务器,封闭内网无法访问外部资源,故无法实现下载安装。

在完全封闭的内网环境下,使用 deeplink 方式分发 HarmonyOS 应用不支持
错误码 10002 提示“网络连接不稳定”,并非清单或 HAP 包本身无法访问(你的内网服务器可通),而是因为设备在解析 deeplink 后,仍需向华为服务器发起签名验证、设备授权检查等必须的在线校验。这些校验依赖外部网络,内网隔离会导致流程中断,安装被拒绝。即使 manifest 和 HAP 部署在内网,只要设备无法连通华为相关服务,该系统机制就无法完成安装。如需内网分发,请使用企业 MDM 等不依赖公网验证的方案。

回到顶部