.NET既然是开源的那么可不可以把它移植到鸿蒙操作系统上?

这是一个知乎的问题,布布的回答以及给出的他的实验项目:https://github.com/CeSun/OpenHarmony.Net

结论

开篇先说结论:

  • 目前.Net完全具备可以在OpenHarmony系统上运行的能力

  • nativeaot最为简单,coreclr和mono理论支持,尚未验证

  • .Net对安卓和ios以及macos除了代码可以执行以外,通常还会为系统api以及开发框架做一层包装,以达到使用c#就可以做到原生开发的感觉,这套框架以前叫Xamarin.Android, Xamarin.iOS以及Xarmarin.MacOS, 现在更名为.Net xxx,请注意这层高级的封装在鸿蒙系统上还未适配(其他语言根本没有这套机制,所以他们号称适配鸿蒙仅仅是能在鸿蒙系统上运行,系统api与.Net现状一样仍然需要手动导入)。

  • 类似于Avalonia这样的框架,由于没有适配鸿蒙,目前也是不支持的,但是.net已经具备这些框架适配鸿蒙的能力。

2. 详细情况目前已知鸿蒙系统完全可以调用标准的不依赖glibc的linux的so,而c#的nativeaot功能编译出的原生so也是不依赖glibc的,所以可以使用c#开发原生so,并在鸿蒙nativec++项目中导入(其实理想情况下这段代码可以省略,但是鸿蒙用了非标准的特性,即__attribute__((constructor)),可以在so加载时运行一个函数,类似DllMain用来做一些注册工作,目前.net上还没有找到类似的特性),并调用其中的函数:

37c95d7543d31f1e84d3a5e0bdb7efeb.png

12dd1ca9823a427581e6f16c34955115.png

在原本的native c++项目中,c++可以通过napi为arkts提供api,而借助于c#的p/invoke特性,在c#中也可以调用napi,并使用c#为arkts提供api: 

ba6b9f06d67b84e8a65ce4b075a24a00.png

注册函数

96f601dcf05c72e100aabe93ef8b21c5.png

c3d8d63b3e2c7ff1d44b786dfc6d6559.png

代码仓库:https://github.com/CeSun/OpenHarmony.Net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值