.NET Core适配鸿蒙HarmonyOS的最新进展:
运行能力方面
目前.Net完全具备可以在OpenHarmony系统上运行的能力。其中,NativeAOT方式是较为可行的一种,它编译出的原生so不依赖glibc,可与鸿蒙系统的libc兼容,能在鸿蒙的原生项目中通过dlopen以及dlsym等函数调用C#中的入口函数。理论上CoreCLR和Mono也支持在鸿蒙上运行,但尚未经过验证。
已知问题及解决情况
Seccomp限制问题:鸿蒙系统使用seccomp限制危险的syscall调用,而.NET的运行时初始化时会调用__NR_get_mempolicy系统调用对numa支持进行检查,此系统调用不在鸿蒙的seccomp白名单中,导致直接宕机。解决办法是自行修改代码,将numa的函数全部修改为空函数。
虚拟内存申请过大问题:GC初始化时会申请大量虚拟内存,导致mmap返回Out Of Memory错误。可以通过设置环境变量“DOTNET_GCHeapHardLimit”将虚拟内存申请控制在约180G以下,或者修改源代码关掉USE_REGIONS宏来解决。
第三方库缺失问题:ICU、OpenSSL等第三方库可能缺失。解决方案是从Alpine上获取相关包,因为Alpine的libc是musl,其库在鸿蒙上大部分能使用;如果有cmake项目的库,可通过鸿蒙的CMake工具链编译。
ICU初始化失败问题:鸿蒙的ICU配置文件路径与默认路径不同,需要调用修改环境变量API,将ICU_DATA修改为/system/usr/ohos_icu,且要使用版本号为72的libICU库。
适配框架情况
.Net对安卓和ios以及macos除了代码可以执行以外,通常还会为系统api以及开发框架做一层包装以实现原生开发的感觉,这套框架以前叫Xamarin.Android、Xamarin.iOS以及Xarmarin.MacOS,现在更名为.Net xxx,但目前这层高级的封装在鸿蒙系统上还未适配。
类似于Avalonia这样的框架,由于没有适配鸿蒙,目前也是不支持的,但是.net已经具备这些框架适配鸿蒙的能力。
.NET Core适配鸿蒙HarmonyOS取得了一定进展,但仍面临一些问题待解决。随着技术不断发展,未来.NET Core在鸿蒙系统上的应用前景值得期待。
站星网
为您推荐
如何显著提升 .NET 应用的启动速度:实用技巧与最佳实践
Blazor 与传统 MVC 对比详解:如何为你的 .NET 项目选择合适框架
.NET Web API 文档库全对比:Swagger、NSwag、Scalar 选哪个?
如何使用 .NET 与 C# 利用 FluentFTP 库实现可靠的 FTP 文件传输
2025 年最新 .NET Redis 客户端库对比测评:性能、功能与适用场景解析
.NET 中用 C# 构建布隆过滤器(Bloom Filter)实战教程
.NET 10 C# 14 必知的 6 大语法糖:提升开发效率,简洁优雅
2025年最佳.NET C#实现PDF转Word:主流库功能与对比
.NET Core 图像处理:Magick.NET 与 SkiaSharp 的全面对比
使用.NET C#将图片转换为.ico图标文件的多种方法
RabbitMQ 4.0+重大更新!.NET(C#)开发者必须掌握的6大升级要点
Paylinks:基于现代 .NET 的跨平台第三方支付 SDK 详解与使用示例
.NET 使用 Qdrant.Client 连接向量数据库 Qdrant 的完整指南
Entity Framework(EF) Core 10新特性全面解析:提升开发效率的关键更新
.NET(C#)使用 iText7 高效处理PDF文件的全面指南
.NET Exception: Received an unexpected EOF or 0 bytes from the transport stream.解决方法
微软退出中国对.NET开发人员有什么影响?