.Net在华为鸿蒙系统上的支持情况续

请先阅读前置条件:.NET既然是开源的那么可不可以把它移植到鸿蒙操作系统上?

第一篇文章主要想给.Net正名,因为太多人一直在问.Net什么时候适配鸿蒙,在.net的开源仓库都看到好几个问题了,所以先写一篇文章告诉大家鸿蒙现在的技术栈.Net是完全支持的。

这篇文章主要想写一些在鸿蒙上使用.Net的一些坑,顺便寻求一些帮助。

问题1:跨平台编译

目前我主要尝试使用NativeAot开发鸿蒙应用,众.Net开发者周知.Net的NativeAot不支持跨平台编译,所以在windows上无法将.Net编译成arm64架构的so,这对开发者是一个极大的阻碍。

尽管社区有“PublishAotCross”这样的项目,但是这个项目不支持-ld,即压缩相关的api都会有问题。

PublishAotCross项目地址:

MichalStrehovsky/PublishAotCross: NuGet package to help you cross-compile Native AOT to different OSes/architecturesgithub.com/MichalStrehovsky/PublishAotCross

他改过的原版链接不了lz的问题,借助zig的工具链,还是可以在win下aot到linux下的https://github.com/xljiulang/PublishAotCross。

另外一种思路是使用WSL2配置交叉编译环境,但是交叉环境配置较麻烦,需要给系统配置arm64架构的包源,安装arm64平台的开发环境,如果遇到问题,跨平台编译的资料也不是很好查,微软官方的跨平台文档:

Cross-compilation - .NETlearn.microsoft.com/en-us/dotnet/core/deploying/native-aot/cross-compile#linuxc501cb0f276f271e5c409bf705a341f9.png

所以,目前缺少一个上手简单的编译环境。

问题2:ICU和OpenSSL

NativeAot编译后的二进制不是完全不依赖第三方库,可能出于开源协议的原因,这两个库默认是静态链接的,在linux桌面系统上很容易就可以安装这两个库,但是在鸿蒙系统上,貌似需要自己编译,然后会遇到交叉编译等问题,ICU可以开启<InvariantGlobalization>true</InvariantGlobalization>选项避开,但是OpenSSL没有办法。

不过微软提供了静态链接选项,文档如下,经过我的测试OpenSSL可以静态链接,ICU会链接失败:

runtime/src/coreclr/nativeaot/docs/compiling.md at main · dotnet/runtimegithub.com/dotnet/runtime/blob/main/src/coreclr/nativeaot/docs/compiling.md

最佳方案是自己附带这两个动态库,但是从哪里下载这两个库呢?看起来还是得配置交叉编译环境,自行编译。

问题3:第三方依赖

在尝试移植Avalonia时(大概率会弃坑),发现SkiaSharp依赖libfontconfig.so.1,网上查了一下,解决方案又是用包管理工具下载依赖,在鸿蒙上使用,还是需要自行编译,有没有大佬知道在哪里能指定libc和指令集下载依赖的地方。

总结

其实说来说去,只是一个问题交叉编译环境比较麻烦,特别是是鸿蒙使用musl,在arm64和musl双重debuff下,如果遇到问题,在网上很难搜到有效的资料参考。

另外分享一下关于鸿蒙的两个仓库,希望得到有能力的朋友的帮助:

  1. 鸿蒙Native SDK,这个基本是把NDK的头文件抄成P/Invoke,目前计划不对api做包装,只提供unsafe接口,另外更新了一个opengl的例子。https://github.com/CeSun/OpenHarmony.Net

  2.  Avalonia移植仓库,我的打算是写一个引子,给有兴趣的朋友提供一点参考

  3. https://github.com/CeSun/OpenHarmony.Avalonia

华为手机升级鸿蒙系统的具体步骤如下: 1. 检查可升级的手机型号和版本:根据华为官方公告,华为将从4月份开始向华为手机推送鸿蒙系统。然而,并没有明确的升级名单。虽然华为软件部总裁王成录在接受采访时表示,9成以上的华为手机都可以升级,但仍有一些老用户担心自己的手机无法更新。 2. 检查系统更新:在手机设置中,打开“系统更新”选项,检查是否有可用的系统更新。如果有鸿蒙系统的更新,会显示在这里。如果没有,可能需要等待更多的手机型号逐步推出更新。 3. 下载和安装系统更新:如果有可用的鸿蒙系统更新,点击下载并等待下载完成。下载完成后,点击安装并按照系统提示完成安装过程。 4. 备份重要数据:在进行系统升级之前,建议备份您的手机重要数据,以防意外情况发生。 需要注意的是,华为鸿蒙系统的推送和升级可能会根据不同地区和手机型号的发布策略而有所差异。因此,用户可以定期检查系统更新,并关注华为官方的相关公告和通知,以获取最新的升级信息。 华为手机升级鸿蒙系统是为了让用户们体验更顺畅的操作和功能,同时对于华为来说,如何维护这些鸿蒙系统用户是一项重要任务。华为手机业务目前受到芯片制裁的影响,出货量不断下降。因此,在老产品逐渐淘汰、新用户补充缓慢的情况下,华为鸿蒙手机系统的推广和用户维护显得尤为重要。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [华为手机怎么升级鸿蒙系统-华为手机升级成鸿蒙系统教程汇总](https://blog.csdn.net/weixin_34794420/article/details/117859774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [结果水落石出!华为手机升级鸿蒙系统,只需要满足一个条件](https://blog.csdn.net/weixin_42349272/article/details/117364088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值