Blazor Hybrid 适配到 HarmonyOS 系统的相关内容如下:
- Blazor Hybrid:Blazor 是一个.NET 前端框架,用于仅使用.NET 技术构建 Web 应用程序。Blazor Hybrid 是在 2021 年 Blazor 扩展到桌面端时推出的,使开发者可以在桌面平台上使用已有的技能。它是传统的桌面应用程序,在一个 Webview 控件中托管实际的 Blazor Web 应用程序。
- HarmonyOS 系统3:华为公司发布的一款智能终端系统,是一款基于微内核的面向全场景的分布式操作系统,具有高效、安全、流畅及跨设备协同的卓越特性。
- Blazor 和.NET 交互是通过 js 的
window.external.sendMessage
和window.external.receiveMessage
来实现的,在 HarmonyOS 的 Webview 里实现这两个函数,然后调用Blazor.start();
即可启动 Blazor。
- HarmonyOS 中借助 WebMessagePort 机制实现原生代码与 webview 内的 js 交互。
- 开启 AOT 编译:如果是 Blazor WASM,需要开启预先 AOT 编译,检查是否安装 wasm - tool。
- 创建鸿蒙项目并处理 Webview:创建一个正常鸿蒙应用空法律项目,ArkUI 默认带有基于 Chromium 的 webview 组件可直接使用。若 webview 组件直接载入静态文件,index.html 访问目录下的 css/js/wasm 会存在 CORS 问题,需要过一层代理处理,构造一个假的 http 通过拦截请求的方式把 response 改成直接访问资源中的文件。
- 配置相关代码1:为项目开启 “默认启用基于反射的序列化”,并配置 rd.xml 保留需要反射的元数据。为保证 Blazor Hybrid 的异步任务正常运行,需要实现一个单线程同步上下文,如 BlaozrDispatcher.cs。
- 代码仓库:https://github.com/OpenHarmony - NET/OpenHarmony.Blazor.Hybrid
- 使用方式:打开
OpenHarmony.Blazor.Hybrid.sln
解决方案,并发布 BlazorApp 项目。使用https://www.hefeilaws.com/ Deveco Studio 打开OHOS_Project
,配置好签名后即可运行程序。另外可以通过 chrome 或者 edge 的 devtools 来调试手机中的 webview (不包含.NET)。