跟我做⼀个高德地图的 iOS / Android MAUI 控件(前言)

Microsoft Build 2022 ⼤会上正式发布了 .NET MAUI , 对于 .NET 开发者可以⽤ C# 完成跨平台的前端应⽤开发。对⽐起 MAUI 的前身 Xamarin , MAUI 除了可以⽤传统的原⽣开发模式外,还⽀持了 Blazor 的混合式开发。这也让更多⽅向的开发⼈员能进⼊到跨平台的应⽤开发中来。有⼈会提出云原⽣时代,前端开发还重要吗 ?实际上,多端应⽤兼容是云原⽣不可缺少的门面。互联⽹时代,有很多出⾊的应⽤,并发布了针对第三⽅应⽤的 SDK,开发者可以结合这些 SDK 做相关的解决⽅案。通过 MAUI 能调⽤这些 SDK 吗?我会通过系列⽂章去和⼤家介绍。作为该系列的开篇,我先来介绍⼀下需要掌握的技能, 让⼤家有所准备。

3bdd8c42897e553233578374de5d2649.png

为何要绑定原生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 包放进去编译即可。

b09246cc004e4fc5b540bbe5a396e08a.png

如果你希望了解更多可以关注本系列 Android 库绑定的系列⽂章。

控件定制

在 Xamarin.Forms 中,通过渲染器机制对跨平台各⾃控件的引⽤,并且依赖于 INotifyPropertyChanged 。.NET MAUI 没取消了渲染器机制,⽽是引⼊了⼀种称为 Handler 的模式。有了 Handlers 更灵活 ,⽽且在需要时更容易扩展或覆盖。这是 MAUI 全新的 Handler 模式。

8502021a010ed91d95ff4a727c4c1c6d.png

我们通过 Handler 机制可以构建好⾼德地图的 MAUI 控件

c2973a7d76c4803939a7e4b32c5274ac.png

你可以通过 https://github.com/kinfey/AMapMAUIControls 使⽤体验 MAUI 的⾼德 Android / iOS 控件。

880c5b508185d0a7d2bc5ecd8a40803b.jpeg  7477dd173d4778f975b699644d3218f2.jpeg

后记

本次系列的发布是希望有更多的⼚商和开发者能够针对 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Valid Number

Valid Number 题解 题目描述 即判断某个字符串是否合法的数字表达式。如: 2e10,合法。 75.0.,非法。 0e,非法。 0.1 ,合法。题解 基于规则与状态判断。可利用二维数组模拟状态转移图,又或是利用变量记录状…

java.util.ListIterator

列表迭代器并不持有当前元素的引用,其持有的游标是位于列表连个元素之间。可以通过调用next()或者previous()返回列表中的元素。一个拥有n个元素的列表拥有n1个游标位置,示意图如下: 注意:remove和 set(Object)方法并不是以迭代器…

保姆级C语言版高斯坐标正算反算倾情奉献!

文章目录 正反算原理速递C语言正反算实现坐标正算坐标反算扩展阅读: 【小程序】坐标正算神器V1.0(附C/C#/VB源程序) 测量人看过来:多种语言编写的测量坐标反算神器附源码(C#/VB) 正反算原理速递 已知边长和方位角,由已知点计算待定点的坐标,称为坐标正算。已知两点坐标…

C语言试题164之求定积分

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:利用梯形…

我的jekyll配置和修改

主要记录使用jekyll搭建博客时的一些配置和修改。 注意&#xff1a; >使用时请删除{和%以及{和{之间的空格。 预览文章 source ~/.bash_profile jekyll server添加about me 边栏 参考the5fire的技术博客在index.html页面加入如下代码&#xff1a; <section> <h4>…

[转]白话阿里巴巴Java开发手册高级篇

不久前&#xff0c;阿里巴巴发布了《阿里巴巴Java开发手册》&#xff0c;总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范&#xff0c;这些流程规范在一定程度上能够保证最终的项目交付质量&#xff0c;通过在时间中总结模式&#xff0c;并推广给广大开发…

C语言试题165之求三色旗问题

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:有一根绳…

spring boot微服务通用部署启动脚本

2019独角兽企业重金招聘Python工程师标准>>> 通用springboot微服务启动、停止脚本。 #!/bin/bash # # chkconfig: - 20 80 # description: Starts and stops the App. # author:vakingeENVdev RUNNING_USERvakinge ADATEdate %Y%m%d%H%M%S APP_NAMEpassport-serve…

day10 多媒体(文字 图片 音频 视频)

1计算机表示图形的几种方式bmp:以高质量保存 用于计算机jpg:以良好的质量保存 用于计算机或者网络png:以高质量保存图片大小的计算公式&#xff1a;图片的总像素*每个像素的大小 (多出的一点是图片的信息)单色&#xff1a;每个像素最多可以表示2种颜色 要么是黑要么是…

VB实现6大排序算法---动态过程展示(建议收藏)

VB实现6大排序算法&#xff1a;插入排序、基数排序、快速排序、希尔排序、选择排序、归并排序。可以随机生成指定个数的数据&#xff0c;显示排序过程&#xff0c;给出排序结果&#xff0c;计算排序算法消耗的时间。 生成随机数&#xff1a; 排序结果&#xff1a; 插入排序&…

C# 实现 Actor并发模型 (案例版)

啥是Actor模型Actor (英语翻译 演员) 这个概念要回溯到面向对象程序设计的本身上来&#xff0c;更偏向于现实世界&#xff0c;现实世界就是由单个个体&#xff08;人&#xff09;与其他个体或(人&#xff09;通讯&#xff08;消息&#xff09;组成的现实世界&#xff0c;所以&a…

oracle--number

1. oracle的number类型是oracle的内置类型之一&#xff0c;是oracle的最基础数值数据类型。在9iR2及其以前的版本中只支持一种适合存储数值数据的固有数据类型&#xff0c;在10g以后&#xff0c;才出现了两种新的数值类型&#xff0c;即推出本地浮点数据类型(Native Floating-P…

超详细C语言版数据结构:图的深度优先遍历(推荐收藏)

文章目录一、邻接矩阵存储图的深度优先遍历过程分析二、结果分析三、C语言编程实现图的深度优先遍历四、图的遍历及其应用一、邻接矩阵存储图的深度优先遍历过程分析 对图1这样的无向图&#xff0c;要写成邻接矩阵&#xff0c;则就是下面的式子&#xff1a; 一般要计算这样的问…

Navicat Premium 64 bit 12.1.25

Navicat Premium可让你以单一程序同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库&#xff0c;是一个可多重连接的数据库管理工具&#xff0c;它让管理不同类型的数据库更加方便。 官方下载地址&#xff1a;https://www.navicat.com.cn/download/…

C语言试题166之整数逆序输出

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:将一个从…

[JMX一步步来] 7、用JDK5.0的JConsole来连接MBean

前面所有看效果都是通过Html网页来看的。JDK5.0自带了一个jmx客户端&#xff0c;叫jconsole&#xff0c;位于c:\jdk\bin\jconsole.exe。我们来用用这个客户端来连接Mbean Server。一、vm参数方式1、还是用第一篇的那个HelloAgent&#xff0c;修改HelloAgent&#xff0c;将第一句…

记一次 .NET 某新能源系统 线程疯涨 分析

一&#xff1a;背景 1. 讲故事前段时间收到一个朋友的求助&#xff0c;说他的程序线程数疯涨&#xff0c;寻求如何解决。等我分析完之后&#xff0c;我觉得这个问题很有代表性&#xff0c;所以拿出来和大家分享下&#xff0c;还是上老工具 WinDbg。二&#xff1a;WinDbg 分析 1…

【原创】请避免GO语言中的携程空跑(CPU突然激增)

其实GO语言从1.6版本开始非常不错了&#xff0c;GC性能优化非常到位&#xff0c;并且各种并行设计比从新实现一套C版本的确是方便不少。 语言包也很多&#xff0c;库也相对稳定&#xff0c;完全可以适用于生产环境。 本文主要是给刚刚入门新手注意一个携程空跑的问题&#xff0…

在Linux上启动oracle 11g OEM

[rootfmw ~]# su - oracle[oraclefmw ~]$ emctl start dbconsole转载于:https://blog.51cto.com/weichanglong/1762783

[转]ES7、ES8、ES9、ES10新特性大盘点

ES7、ES8、ES9、ES10新特性大盘点 本文转自&#xff1a;https://mp.weixin.qq.com/s/8bov6788ivV0sHzmwrn5lw 以下文章来源于前端工匠 &#xff0c;作者浪里行舟君 前端工匠 我是浪里行舟&#xff0c;Github博客4000star作者&#xff0c;致力于打造一系列能够帮助初中级工程师…