发布时间:2023-04-22 12:30
Microsoft Build 2022 ⼤会上正式发布了 .NET MAUI , 对于 .NET 开发者可以⽤ C# 完成跨平台的前端应⽤开发。对⽐起 MAUI 的前身 Xamarin , MAUI 除了可以⽤传统的原⽣开发模式外,还⽀持了 Blazor 的混合式开发。这也让更多⽅向的开发⼈员能进⼊到跨平台的应⽤开发中来。有⼈会提出云原⽣时代,前端开发还重要吗 ?实际上,多端应⽤兼容是云原⽣不可缺少的门面。互联⽹时代,有很多出⾊的应⽤,并发布了针对第三⽅应⽤的 SDK,开发者可以结合这些 SDK 做相关的解决⽅案。通过 MAUI 能调⽤这些 SDK 吗?我会通过系列⽂章去和⼤家介绍。作为该系列的开篇,我先来介绍⼀下需要掌握的技能, 让⼤家有所准备。
为何要绑定原生SDK
我们知道⼀个应⽤可以融⼊不同的场景,例如⼀个打⻋应⽤就需要地图,例如⼀个拍照应⽤就需要社交,例如⼀个如果你是传统的物联⽹应⽤你需要⼀个蓝⽛的通信协议。拿来主义就是⼀个节省的⽅式,可以结合第三⽅提供的 SDK 来完成应⽤的开发。对于 .NET 开发⼈员会是⼀个难点,因为习惯性地去调⽤ DLL ,但在iOS / Android 原⽣开发上,实际上是有不同的库调⽤机制。在 Xamarin 时代,就有不少开发者去⽤ C# 绑定第三⽅的库,例如在中国市场就有⽀付宝,微信,⾼德地图等。到了 MAUI 有什么不⼀样呢?在⼤致上是和Xamarin 绑定⽅式⼀样。但由于 MAUI 融⼊到了 .NET 6,实际上就是⼀个项⽬⽂件格式的改变。现阶段你可以通过命令⾏的⽅式快速构建 iOS / Android 的绑定项⽬。
01
MAUI iOS 库的绑定
dotnet new iosbinding -o iOS.AMapSDK.Binding
要做 iOS / macOS的绑定你除了创建绑定项⽬外,你还需要安装 Shapie ⼯具 (https://aka.ms/objectivesharpie)做对应转换, 可以通过命令⾏去针对 iOS 的动态库和静态库做对应转换。这⾥补充⼀点你的 Xcode环境是必须要安装的。下⾯是⼀个简单的转换语句,更多具体⼤家可以关注我的该系列的 iOS 库⽂件绑定⽂章。
sharpie bind -framework /your path/AMapFoundationKit.framework -sdk iphoneos15.5
02
MAUI Android 库的绑定
dotnet new android-bindinglib -o Droid.AMapSDK.Binding
Android 的绑定和 iOS 不⼀样,直接把第三⽅库 Android SDK 的 jar 或者 aar 包放进去编译即可。
如果你希望了解更多可以关注本系列 Android 库绑定的系列⽂章。
控件定制
在 Xamarin.Forms 中,通过渲染器机制对跨平台各⾃控件的引⽤,并且依赖于 INotifyPropertyChanged 。.NET MAUI 没取消了渲染器机制,⽽是引⼊了⼀种称为 Handler 的模式。有了 Handlers 更灵活 ,⽽且在需要时更容易扩展或覆盖。这是 MAUI 全新的 Handler 模式。
我们通过 Handler 机制可以构建好⾼德地图的 MAUI 控件
你可以通过 https://github.com/kinfey/AMapMAUIControls 使⽤体验 MAUI 的⾼德 Android / iOS 控件。
后记
本次系列的发布是希望有更多的⼚商和开发者能够针对 MAUI 开发相关的控件和基于 MAUI 的 SDK 。我知道现在跨平台开发都有 Flutter , ReactNative 等。但 MAUI 是⼀个⾮常值得投⼊的解决⽅案,从性能和开发效率都是有竞争性的。我知道传统⾏业有⾮常多的 .NET 开发者, MAUI 会为传统⾏业的数字化转型提供⾮常好的体验。
*相关资料
1.通过 Microsoft Docs 了解 MAUI
https://aka.ms/Docs.MAUI
2.通过 Microsoft Learn 学习 MAUI
https://aka.ms/Learn.MAUI
往期推荐:
CA周记 - 2022年的第一课Rust
CA周记 - 用 Visual Studio Code 做基于 .NET MAUI 跨平台移动应用开发
CA周记 - 通过 Azure ML + GitHub + GitHub Action 打通 ML 开发的任督二脉
CA周记 - 宇宙最強的IDE - Visual Studio 25岁生日快乐
CA周记 - “探店”低代码
CA周记 - 云上“炼”码兵器 GitHub Codespaces
CA周记 - C# 学习经验分享
CA周记 - 带你进入 OpenAI 的世界
CA周记 - 跟我做一个可以聊天的 Visual Studio Code 插件
CA周记 - .NET 6 Minimal API 的经验分享
CA周记 - Microsoft Build 2022 到来,开发者们做好准备了吗?
CA周记 - Build 2022 上开发者最应关注的七⼤⽅向主要技术更新
更多原创文章与资源共享
请关注Kinfey Techtalk
记一次Gitlab升级, 14.6.0-ee到14.10.0-ee
香蕉派 Banana PI BPI M2 Berry 开源硬件开发板全志V40 芯片设计
麒麟操作系统 (kylinos) 从入门到精通 - 研发环境 - 第二十一篇 C++/C语言开发环境搭建
TensorRT运行官方案例Mnist时提示找不到dll文件,cuda、cudnn、TensorRT的环境变量的问题,TensorRT运行时默认会到lib下去找要的文件
学习python需要什么基础-python编程学习需要哪些基础和准备工作?
Python数据分析应用之Matplotlib数据可视化基础