说明:Xamarin.iOS工程由Calssic API升级为Unified API操作步骤,以解决编译arm64位支持问题,但目前为Beta版本。
原文:http://developer.xamarin.com/guides/cross-platform/macios/updating_ios_apps/
按照这些步骤来升级现有的Xamarin.iOS程序到Unifiled API程序。
更新到Unifiled API程序需要变更项目文件中的命名空间以及APIs代码.
注意:使用Unifiled API的iOS程序目前还不能引用大部分的组件或者Nuget库。因此在你重新编译的时候,应该除去那些不支持的应用组件或者其它库引用,以便你能成功编译Unifiled API。
迁移工具的指南
当前我们正在为Xamarin Studio和Visual Studio开发能够自动由Classic API迁移到Unifiled API的工具。如何你现在有需要,你可以尝试我们的自动化工具(测试版)升级到Unified。
手动更新
按照这些步骤来更新Xamarin.ios应用程序使用新的Unified API:
1.更新项目类型和 Build Target
更改项目中的CSPROJ文件从6bc8ed88-2882-458c-8e55-dfd12b67127b到feacfbd2-3405-455c-9665-78fe426c6842。使用文本编辑器编辑csproj文件,替换第一项中的< projecttypeguids >元素如:
替换包含引入类型Xamarin.MonoTouch.CSharp.targets为Xamarin.iOS.CSharp.targets,如图:
2.更新项目引用
点开iOS程序项目文件引用节点,它将显示出monotouch引用失败(只需要替换这个错误的类型),如截图:
右键单击iOS程序编辑项目引用,然后单击monotouch引用并且点击红色“X”按钮移除它。
现在滚动到引用列表最底部,点击选择Xamarin.iOS引用。
按下“OK”,保存引用。
3.移除monotouch命名空间
在项目文件中完成移除饮食monotouch前缀的命名空间(如Monotouch.UIKit为UIKit).
4.映射类型
原生类型(Native Types)已取代以前使用的一些类型,如System.Drawing.RectangleF和CoreGraphics.CGRect(举例)。各种类型的完整列表可以在原生类型(Native Types)页找到。
5.修正重写方法
一些UIKit的方法已经由原来的写法替换成了新的写法(如int~>nint)。之前重写方法里面的一些数据类型已经与现在不匹配会出现错误,把它们改成现有的新原生类型就可以修复。
例如 public override int NumberOfSections (UITableView tableView)和public override int RowsInSection (UITableView tableView, int section)里的int类型需要替换为nint。
自动更新
Xamarin Studio (Beta)
如果你需要使用Xamarin Studio测试版本工具,选中当前iOS项目,并在项目菜单中选择迁移到Xamarin.iOS Unified API。
你需要同意自动迁移时的警告提示操作(当然在你进行自动操作时应该做好源码备份):
自动化工具基本包括了“手动更新”的操作步骤。
编译器呈现的错误,需要你手动搜索去解决它们。我们也计划升级自动化工具来帮助完成迁移。你可以参考这个新API的例子。
Shell脚本
如果你现在就想进行更新工作,我们提供了一个简单的shell脚本,它可以完成90%的工作。像使用命令一样调用,如:
sh convert.sh YourProject.csproj
这个命令将强制升级你当前的iOS应用到Unified API。如果你感觉这样做不太保险,你可以使用—bold选项,它将做一些基本的UITableview 64位API的升级:
sh convert.sh --bold YourProject.csproj
组件库
不幸的是,现有的Xamarin.iOS组件需要重新编译使用Unified API,社区正在更新组件库,因此你还无法使用这些组件在你的程序中。当然如果是开源项目里的组件,可以使用Unified API进行重新编译来进行使用。
NuGet支持
当前我们正在对NuGet库进行Unified API支持工作,现在还未有新的NuGet正式版本。