HarmonyOS 鸿蒙Next中HMRouter不配置路由?

HarmonyOS 鸿蒙Next中HMRouter不配置路由?

复现过程:在静态包中创建@HMRouter对应的路由页面,静态包下的generated有自动生成,静态包下的hm_router_map.json也有自动生成,

但是entry模块下的/rawfile/hm_router_map.json中却没有生成对应的路由配置,导致HMRouterUtils.getPageInfoByPageUrl(routeInfo.pageUrl)这里获取不到路由信息?

请问这种情况有什么解决办法吗?

9 回复

检查一下模块之间是否添加依赖关系

更多关于HarmonyOS 鸿蒙Next中HMRouter不配置路由?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主可以了解一下hsp的跨包跳转,har包的话需要存在依赖,但是hsp可以不用依赖就能实现跳转,要路由能存在,hsp之间不用依赖也能跳转的话能结局分包体积问题,在元服务里面很常用

楼主可以参考一下这个文档:项目文件预览 - ohrouter:一款功能强大的路由框架,聚焦应用内原生页面的跳转,帮助开发者更好的进行模块间解耦。底层对系统Navigation进行封装,提供了可复用的路由拦截、页面生命周期、自定义转场动画,并且在传参、额外的生命周期、服务型路由方面对系统能力进行了扩展。

好的好的,感谢老哥!!!非常感谢!!!

路过…

太厉害了

解决了,模块之间没添加依赖关系!麻了!

静态包是有配置harTasks的

import { harTasks } from '@ohos/hvigor-ohos-plugin';
import { harPlugin } from '@hadss/hmrouter-plugin';

export default {
  system: harTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
  plugins: [harPlugin()]
}

在HarmonyOS Next中,HMRouter不配置路由会导致页面导航失败。HMRouter是鸿蒙的路由管理模块,必须通过@Route装饰器在page/entry/src/main/resources/base/profile目录下的router.json中声明路由路径。未配置时系统无法识别目标页面,表现为跳转无效或白屏。每个页面的[@Route](/user/Route)(name: string, path: string)path参数必须与router.json中的uri字段匹配。

根据描述,这个问题可能是由于模块间的路由配置同步问题导致的。以下是可能的原因和解决方案:

  1. 检查静态包和entry模块的依赖关系是否正确配置,确保静态包被正确引入到entry模块中。

  2. 确认静态包下的hm_router_map.json文件是否被正确打包到最终APK中。可以检查build/outputs目录下的中间产物。

  3. 尝试clean项目后重新build,有时构建缓存可能导致这类问题。

  4. 检查@HMRouter注解是否正确配置,包括path参数是否完整且唯一。

  5. 如果使用多模块开发,确保所有模块都正确配置了HarmonyOS的编译插件。

  6. 检查entry模块的build.gradle中是否正确配置了资源合并选项。

这个问题通常是由于构建系统没有正确合并各模块的路由配置导致的,重点检查构建配置和模块依赖关系。

回到顶部