更新现有的iOS应用程序

来源:互联网 发布:删除卷会删除数据吗 编辑:程序博客网 时间:2024/05/21 22:37

说明: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正式版本。






0 0
原创粉丝点击