【HarmonyOS NEXT】Entry包跳转HAP包或Feature包失败

【关键字】

跨module包跳转 / Entry / HAP / Feature / Previewer / can't find this page / 页面路由(@ohos.router)/ router.pushUrl / 命名路由

【问题描述】

项目工程包含三个模块:

  • entry模块:包含2个页面Index1、Index2

  • library模块(HSP包):包含1个页面Index

  • feature模块(feature包):包含1个页面Index

工程中存在跨包跳转,跳转代码参考官网编写:

router.pushUrl({
url : '@bundle:com.***.myapplication/library/ets/pages/Index'
})

问题1:当前entry内部Index1可以跳转Index2,但Index2跳转HSP包的Index失败(Previewer模式和模拟器均失败),工具提示“can't find this page”。

问题2:使用模拟器,entry无法跳转到feature包页面。

【解决方案】

  1. Previewer模式当前不支持跨module包跳转。

  2. 模拟器实现HSP包页面跳转,请确认是否完成如下配置:

    • 在entry包中增加HSP包的引用

      在使用方entry/feature模块的oh-package.json5文件中添加HSP模块引用,以引用名为“sharedlibrary”的HSP为例:

      {
      ...
      "dependencies": {
      "sharedlibrary": "file:../sharedlibrary"
      }
      }

      参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-har-import-0000001547293682

    • 本地调试时将HSP模块一起加入打包

      请按如下方法查看本地调试时是否将HSP模块加入运行:菜单栏选择“Run > Edit Configurations”,选择“Deploy Multi Hap”页签,勾选“Deploy Multi Hap Packages”,选择使用方模块(如entry)和HSP模块(如library),点击“OK”。

      参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-run-debug-configurations-0000001760344518#section393005432811

    • 同时附上Demo供参考

      • entry模块:Index.ets

        import router from '@ohos.router'
        @Entry
        @Component
        struct Index {
        build() {
        Column() {
        Text('Hello World1')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        Button('跳转')
        .margin({top: 50})
        .onClick(() => {
        router.pushUrl({
        url: '@bundle:com.huawei.flexlaout.myapplication/library/ets/pages/Index'
        })
        })
        }
        .width('100%')
        .height('100%')
        }
        }

      • entry模块:oh-package-lock.json5

        {
        "name": "entry",
        "version": "1.0.0",
        "description": "Please describe the basic information.",
        "main": "",
        "author": "",
        "license": "",
        "dependencies": {
        "library": "file:../library"
        }
        }

      • library模块:Index.ets

        @Entry
        @Component
        struct Index {
        build() {
        Row() {
        Column() {
        Text('Hello World2')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        }
        .width('100%')
        }
        .height('100%')
        }
        }

  3. entry和feature包间的跳转不支持使用router.pushUrl,可通过命名路由的方式跳转。

    参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-routing-0000001820879797#ZH-CN_TOPIC_0000001820879797__命名路由

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值