是否可以使用较旧版本的 Xcode 或 Xamarin.iOS?
Xamarin 文档假定使用建议使用最新的 Xamarin.iOS 和 Xcode。 但是,一些客户更愿意使用较旧的 Xamarin.iOS 和/或 Xcode,并且希望了解有关后果的详细信息。
发行说明包含以下警告:
更多信息
Microsoft 强烈建议在开发和提交应用程序时使用最新的 Xcode 和最新的 Xamarin.iOS 版本。 Apple 在提交应用程序时需要使用最新的 Xcode。
请注意,使用最新的 Xcode 不会阻止应用程序面向较旧的 iOS 版本。 支持的 iOS 版本基于 Info.plist 条目和应用程序使用的 API。
可以并行安装多个版本的 Xcode,名称不同,例如 Xcode101.app 和 Xcode102.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,则会导致
MT0091
或MT4109
错误。- 在大多数情况下,启用托管链接器有助于 (,方法是删除新 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 版本。 这可以工作一段时间,但在某些时候,苹果将坚持更新的工具,所以相应地计划。