Avalonia主打跨平台, 称一套代码支持Windows, macOS, Linux, iOS, Android操作系统,其基础是基于.NET Standard 2.0的一系列库,也就是只要平台能支持.NET Standard 2.0,就能运行Avalonia开发的应用。然而理想很丰满、现实很骨感,并不是说跨平台Avalonia没有做到,而是过程中免不了会有些小问题。
1.支持的平台
运行平台 | 版本 |
---|---|
Windows | Windows8及其以上版本(Window7也能用,但不保证没问题) |
MacOS | MacOS High Serra 10.13及其以上版本(没用过苹果,也没有开发的需求,就不详细研究了) |
Linux | Debian 9、Ubuntu 16.5、Fedora 30及其以上(主要是各种发行版) |
移动端跨平台,也就是iOS和Android的支持后面单讲。
附带了解下使用Linux内核国产操作系统的情况:
操作系统 研制单位 备注 银河麒麟 天津麒麟信息技术有限公司 中标麒麟 中标软件科技有限公司 原中标普华 统信UOS 统信软件科技有限公司 中科方德 中科方德软件有限公司 优麒麟 中国CCN联合实验室 基于Ubuntu发行版 目前接触的比较多的有这几款,其他国产操作系统还有StartOS(原ylmf OS)、SPG思普、共创Linux、深度Linux(Deepin)、红旗Linux、中兴新起点(NewStart)、华为鸿蒙(HarmonyOS)等。这其中麒麟系的、中字头的党政军部门用到多,会有专用版本,操作系统版总体不错,桌面版体验差点,不过都能支持.NET Core跨平台,运行Avalonia应用应该可以;统信UOS的桌面版算是国产里面用起来比较舒服的,尤其是习惯Windows的切换比较顺畅(测试环境用的统信UOS V20家庭版);华为鸿蒙进来势头很猛,定位跟前面几款比不太一样,侧重移动、物联;其他的没用过,不做评价。
2.跨平台的实现
Avalonia实现跨平台的逻辑可以通过应用入口Program.cs的代码了解一下。
这是MVVM模式下构建应用的代码,常规模式下是没有UseReactiveUI()这一行的。
重点在于方法UsePlactformDetect(),即运行平台检测,方法实现如下:
逻辑也比较好理解,就是应用启动时,通过运行环境信息获取当前的操作系统类型,根据操作系统类型分别加载不同的UI渲染库。操作系统类型为WinNT(Windows)时,加载Win32和Skia的库;操作系统类型为OSX(MacOS)时,加载AvaloniaNative和Skia的库;其他类型,也就是Linux时,加载X11和Skia的库。
3.发布至不同平台
开发Avalonia应用常用的IDE有VisualStudio和JetBrains Rider,以“宇宙第一IDE”VisualStudio为例,发布至不同平台的关键配置如下:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!