Xamarin发布支持64位的iOS/Mac统一API

jopen 9年前

Xamarin上周 公布 了其iOS SDK(Xamarin.iO) 8.6版本,这是包含了该公司iOS和Mac统一API(Unified API)的第一个非Beta版本。统一API替代了原有的32位MonoTouch和MonoMac API,让跨平台的代码重用成为可能并且增加了64位支持。这一版本的发布比苹果要求的新应用提交必须兼容64位的最后期限(2月1日)只早了两周。

Xamarin的移动开发平台让使用C#开发可以跨平台的原生移动应用成为可能。该公司已经利用开源的Mono工具链创建了能够同时兼容iOS 和安卓的运行时环境。在iOS平台上,预编译器(Ahead-of-Time Compiler)将C#代码编译成原生的ARM汇编代码。在安卓平台上,C#代码则被编译成为一种中间代码,之后会在设备上完成即时(Just-in- Time)编译。这样,开发者就可以只编写一次应用,然后可以同时在iOS,安卓和Windows Phone上执行。

新的统一API与经典的MonoTouch API并非差异很大,不过Xamarin做出了两个重大的改变以帮助跨平台的代码重用和64位兼容性。

  1. 被移除的命名空间 - iOS和Mac特有的命名空间已经被移除并折叠成为一个命名空间。例如,Foundation之前在iOS上位于 MonoTouch.Foundation命名空间,在Mac上位于MonoMac.Foundation命名空间,现在在两个平台上都可以在 Foundation命名空间中找到。
  2. 新的原生类型 - 在经典的MonoTouch和MonoMac API中,与架构无关的类型,如NSInteger(在32位平台被解析成为int类型,在64位平台被解析成为long类型)总是被映射成为它们相对应 的32位.NET类型。为了修正这一限制,Xamarin引入了三种原生类型——System.nint,System.nuint和 System.nfloat,这三种类型会被隐式的映射到当前设备架构相应的支持类型。统一API支持用这些新的原生类型替代.NET的原始类型。

为了使用统一API而想要更新应用的开发者可以手动完成这项工作,也可以利用Xamarin的迁移工具。作为其中一部分与Xamarin Studio 5.7一同分发的迁移工具可以自动更新所需要的项目设置和API引用。或者开发者也可以选择根据 更新已有iOS应用 指南中的步骤手动迁移应用。在上周早些时候的一个网络研讨会上,针对两种方法Xamarin都提供了额外的信息,在Xamarin的博客上可以找到这次研讨会的 录音

InfoQ在2014年12月曾经报道过,Xamarin已经分发了若干个统一API的Beta版本给第三方库和组件的开发者,鼓励他们更新项目。不过, 并不是所有的第三方组件都将会被更新。为了应对这一问题,开发者也许不得不将这些组件的代码作为其项目构建的一部分迁移并编译。

使用新的统一API,开发者将首次实现64位兼容的iOS和Mac应用的编译。这对于正在进行新的iOS应用开发的开发者来说相当有意义,根据 苹果在10月份的公告,在2015年2月1日,所有新的iOS应用必须要做到64位兼容。对于已经发布到应用商店的应用开发者来说,时间会更加宽松一些, 只要在2015年6月1日之前完成更新兼容64位即可。

查看英文原文: Xamarin Releases Unified iOS/Mac API with 64-Bit Support

</div> 来自:http://www.infoq.com/cn/news/2015/01/xamarin-unified-api-64