如何通过路由跳转到一个只有页面没有 UIAbility 的模块?

问题描述

现在有模块 A,B。A 模块为 Entry 类型,其中有个 UIAbility,有 pages。B 模块是 Feature 类型,没有 UIAbility,但是有 pages。整个 App 只想使用一个 UIAbility 的情况下,A 模块怎么跳转到 B 模块的页面。

阅读 600
1 个回答

内容澄清

  • Module 分为“Ability”和“Library”两种类型:“Ability”类型的 Module 对应于编译后的 HAP;“Library”类型的 Module 对应于 HAR 或者 HSP
  • HAP 可分为 Entry 和 Feature 两种类型:Entry 类型的 HAP 是应用的主模块,通常用于实现应用的入口界面、入口图标、主特性功能等;Feature 类型的 HAP 是应用的动态特性模块,通常用于实现应用的特性功能,可以配置成按需下载安装。
  • HAR 静态共享包,和 HSP 动态共享包,都是为了实现代码和资源的共享,都可以包含代码、C++库、资源和配置文件。其中 HAR 不支持在配置文件中声明 pages 页面,HSP 支持配置 pages 页面。

解决方案

对于没有 UIAbility 但依然提供可跳转页面的模块,应该考虑使用 Library 类型的 HSP
实现相应的功能,从 UIAbility 跳转 HSP 中的页面可参考下列方式:

router.pushUrl({
url: '@bundle:com.example.hmservice/library/ets/pages/menu'
}).then(() => {
console.log("push page success");
}).catch(err => {
console.error(`pushUrl failed, code is ${err.code}, message is ${err.message}`);
})

其中 router.pushUrl 方法的入参中 url 的内容模板为:

'@bundle:包名(bundleName)/模块名(moduleName)/路径/页面所在的文件名(不加.ets 后缀)'

参考链接

Stage 模型应用程序包结构,HAR 开发指导,应用内 HSP 开发指导

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏