是否可以使用较旧版本的 Xcode 或 Xamarin.iOS?

Xamarin 文档假定使用建议使用最新的 Xamarin.iOS 和 Xcode。 但是,一些客户更愿意使用较旧的 Xamarin.iOS 和/或 Xcode,并且希望了解有关后果的详细信息。

发行说明包含以下警告:

警告

使用较旧的 Xcode 版本

通常可以使用比上述 要求 中提到的版本 (较旧的 Xcode 版本) ,但某些功能可能不可用。 此外,某些限制可能需要解决方法,例如:

  • 静态 registrar 需要 Xcode 头文件来生成应用程序,如果缺少 API,则会导致 MT0091MT4109 错误。 在大多数情况下,启用托管链接器会通过删除 API) 来帮助 (。
  • 除非使用 Xcode 9.0+ 工具链,否则 tvOS 和 watchOS) 的 Bitcode 生成 (可能无法提交到App Store。

更多信息

Microsoft 强烈建议在开发和提交应用程序时使用最新的 Xcode 和最新的 Xamarin.iOS 版本。 Apple 在提交应用程序时需要使用最新的 Xcode。

请注意,使用最新的 Xcode 不会阻止应用程序面向较旧的 iOS 版本。 支持的 iOS 版本基于 Info.plist 条目和应用程序使用的 API。

可以并行安装多个版本的 Xcode,名称不同,例如 Xcode101.appXcode102.app。 如果使用多个版本,请确保在“Visual Studio for Mac设置”xcode-select命令行工具中设置活动的 Xcode。

但是,在极少数情况下,可能需要使用较旧的组件。 本文档介绍使用早于最新版本时可能遇到的一般挑战。

不过,Apple 的每个版本都是独一无二的,你可能会遇到此处未记录的其他陷阱。

这些挑战有时并非易事,因此请尽可能坚持最新 Xcode 和最新 Xamarin.iOS 的支持配置。

将旧的 Xamarin.iOS 与旧 Xcode 配合使用

至少在一段时间内不更新 Xamarin.iOS 和 Xcode 是可能的。 限制是,在某些时候,Apple 将需要最低版本的 Xcode 才能提交应用程序。 此时,应 (macOS、Xcode 和 Xamarin.iOS) 的所有组件更新为最新版本 (或 Apple 所需的新版 Xcode 和匹配的 Xamarin.iOS 版本) 。

通常,逐渐更新和跟上小更改会更容易。 对于更新可能难以跟上的大型项目,保留已知工作集可能是一个很好的折衷方案。

将新的 Xamarin.iOS 与较旧的 Xcode 配合使用

在合理可能的情况下,Xamarin.iOS 通常支持较旧的 Xcode 版本。 一些潜在的挑战包括:

  • 较新的 Xamarin.iOS 可能支持所选 Xcode 中不存在的某些功能和 API。
  • 静态registrar需要 Xcode 头文件来生成应用程序,如果缺少 API,则会导致 MT0091MT4109 错误。
    • 在大多数情况下,启用托管链接器有助于 (,方法是删除新 API) 的托管绑定(如果未使用)。
  • 除非使用 Xcode 9.0+ 工具链,否则 tvOS 和 watchOS) 的 Bitcode 生成 (可能无法提交到App Store。

将新的 Xcode 与较旧的 Xamarin.iOS 配合使用

此用例要困难得多,因为 Xamarin.iOS 无法预测新 Xcode 不断变化的要求。 macOS 的汇报也可能会导致问题,如果没有兼容性修补程序,Xamarin.iOS 的许多部分都可能会受到影响。

有许多潜在的方面可能会出错,包括:

  • mlaunch不兼容:
    • 模拟器支持可能无法正常工作 (或根本无法)
    • 设备支持可能无法正常工作 (或根本无法)
  • 未知的支持 mtouch
    • 不支持新框架
    • 不支持新权利
    • 不支持新的或更新的工具
      • 这也可能会影响代码签名

新的 AppStore 提交规则

Apple 保留随时更新 AppStore 提交规则的权利。 这些规则更改有时只会提前宣布。 其中一些更改需要工具更改才能支持,这需要更新的 Xamarin.iOS 组件。

除了规则更改之外,Apple 还经常向提交的应用添加其他验证,或收紧现有验证。 其中一些要求更改我们的工具 (例如,) 新的阻止列表符号。 提交时,客户首先会遇到其中的许多问题,因为没有规则 (或列出规则) 公告。

总结

只要有可能,按照苹果的指导,使用App Store上发布的最新 Xcode 进行开发和提交,从而安全地播放它。

反过来,使用最新发布的 Xamarin.iOS。 这将跟踪可能影响已提交应用程序的最新修补程序,并符合最新的规则更改。

如果这不可行,请考虑使用匹配的旧版 Xcode 和 Xamarin.iOS 版本。 这可以工作一段时间,但在某些时候,苹果将坚持更新的工具,所以相应地计划。