Xamarin發布支持64位的iOS/Mac統一API
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位兼容性。
- 被移除的命名空間 - iOS和Mac特有的命名空間已經被移除并折疊成為一個命名空間。例如,Foundation之前在iOS上位于 MonoTouch.Foundation命名空間,在Mac上位于MonoMac.Foundation命名空間,現在在兩個平臺上都可以在 Foundation命名空間中找到。
- 新的原生類型 - 在經典的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