写点什么

跨平台移动应用开发迎来“大杀器”,Xamarin.Essentials 正式版发布

2019 年 1 月 07 日

跨平台移动应用开发迎来“大杀器”,Xamarin.Essentials正式版发布

近日,跨平台移动应用开发迎来了“大杀器”——Xamarin.Essentials 正式版。Xamarin.Essentials 是可以将移动原生特性抽象成跨平台的 API,经过了长达数个月的预览之后,正式版终于和大家见面了。据悉,此版本中不仅包含了 30 多个原生特性,还包含了众多由社区贡献的增强特性。


Xamarin.Essentials 可以将移动原生特性抽象成一组跨平台的 API,旨在简化针对多种平台的移动应用开发。经过了长达数个月的预览之后,正式版终于和大家见面了。


Xamarin 提供了一种使用宿主平台原生特性的方式,开发者通过原生 C# API 使用公开的绑定。例如,开发者可以通过使用 Xamarin.iOS 框架获得 iOS 功能,如 ARKit、加速计,甚至是 Objective-C 运行时。开发人员可以通过 C#来使用基于 iOS、Android 或 macOS API 的原生特性。


而 Xamarin.Essentials 采用了另外一个不同的方法,其提供了可支持所有平台的单个 API。这样做的好处是大部分业务逻辑可以保持通用。微软 Xamarin 工程师 James Montemagno 表示,Xamarin.Essentials 经过高度优化,Xamarin 链接器只链接开发者实际使用的特性,其他部分均会移除。


目前,Xamarin.Essentials 包含了 30 多个原生特性,包括连接性、地理位置、设备信息以及安全存储等等。


Xamarin.Essentials 的很多 API 都尝试使用了类似设计。例如,磁力计、陀螺仪、指南针等都要求使用 start 和 stop 方法来启动或停止监听相应的传感器,并通过 ReadingChanged 事件将传感器的变更信息传回。其他 Essentials API 遵循更为命令式的风格。例如,如果要打开或关闭闪光、安全地存储一系列字节,或在主线程上执行一段代码,只需要调用相应的方法即可。


跨平台的主要差异在于每个平台的权限系统以及应用程序必须满足的不同要求。而这些信息都与每个 API 一起列在了文档中。


Xamarin.Essentials 可应用在 Android 4.4 或更高版本、iOS 10.0 或更高版本、UWP 10.0.16299.0 或更高版本。开发者可以使用 NuGet 将 Xamarin.Essentials 添加到项目中,并在源文件中通过 using Xamarin.Essentials;引用它。如果开发者想要从 Xamarin 应用程序迁移到 Xamarin.Essentials,那么可参考 Montemagno 编写的迁移指南或者官方的 Xamarin GeoContacts 应用程序。


查看英文原文:https://www.infoq.com/news/2019/01/xamarin-essentials-native-apis


2019 年 1 月 07 日 13:096761
用户头像

发布了 731 篇内容, 共 363.7 次阅读, 收获喜欢 1845 次。

关注

评论

发布
暂无评论
发现更多内容

一种消息消费失败的处理方案

redis kafka

为什么很多技术都觉得前端很简单?

极客时间

前端 前端开发 前端工程

这样理解Java中的函数式编程就对了

jerry

java8 函数编程

Redis学习笔记(散列类型)

编程随想曲

redis

小米手机广告在日本「炸」了,背后的教训是什么?

葛仲君

产品 本地化 小米 日本 文化

算法篇之数组右移

月夜

算法 数组右移

iTerm2使用小技巧-密码管理器

小菜与老鸟

iTerm

开源一个自研的基于Netty的高性能网络通信框架

Geek_373e87

TCP dubbo Netty

hive 建表语句迁移

杨飞

央行:取消境外机构投资者额度限制,推动金融市场进一步开放

kimmking

Ubuntu 20.04 装机手册

小柒

Linux #Ubuntu #geek

我为什么不买Mac

Winann

效率 效率工具 Mac apple

测试驱动开发英制单位转换

escray

学习 CSD 认证实战营

关于 DeepL 机器翻译能力

梁帅

产品 互联网 机器翻译 谷歌Google DeepL

讨论:应不应该用存储过程?

kimmking

深入理解Java中的Lambda表达式和函数式编程的关系

jerry

Lambda java8 函数编程

在 TypeScript 处理空值异常

寇云

typescript 前端开发

第一篇InfoQ的博客

程序员小岑

写作 体验

jenkins集成maven获取远程项目

kcnf

牛排等级之美国篇

地藏@易果18916037281

Java并发编程基础--Synchronized

Java收录阁

线程

没有业务规则的技术实现

wd

吐槽

关于架构的几件小事:架构是什么

北风

架构 企业架构

性能优化第一课:性能指标

kimmking

性能优化

最好的汇报是不需要汇报

伯薇

团队管理 领导力 沟通 汇报 可视化

写文章的目的是什么?

小天同学

思考 写作 感悟 表达

自助设备系列——自助设备的春天

孙苏勇

产品

MyBatis 3 解析Mapper映射配置

杨家昌

mybatis 配置 Mapper XMLMapperBuilder

spring boot 集成 elasticsearch 7.x (一)

wd

elasticsearch high level client

地址收录

gogogo

回"疫"录(9):守住我们自己的净土

小天同学

疫情 回忆录 现实纪录 纪实

跨平台移动应用开发迎来“大杀器”,Xamarin.Essentials正式版发布-InfoQ