参考: https://releases.xamarin.com/stable-release-cycle-8-service-release-0-w-xcode8-1-support/
[Xamarin Studio] – 45861 – “可能会减缓您的iPhone ...此应用程序的开发人员需要更新以改善其兼容性”,因为在新项目中iPhoneSimulator配置中默认支持"i386"架构设置。
修复方法:将项目选项 > iOS Build > 支持的架构更改为x86_64(而不是默认的i386)以适用于iPhoneSimulator配置。
苹果在iOS 10.1中添加了此警告,本文简洁地定义了该警告:
“苹果为了推动开发者将其应用更新为64位框架,已经在iOS 10.1中引入了一条新的警告消息。这个消息的内容是:‘[应用名称]可能会拖慢您的iPhone’,而应用程序的开发人员需要更新才能改善其兼容性。”如果您正在运行32位应用程序,则会出现此消息。
这不会影响绝大多数iOS用户,因为苹果于2015年6月停止接受32位应用程序的更新。”
更新:在C8SR2之前,iOS模拟器构建配置的默认构建体系结构不包括64位体系结构。
对于在C8SR2之前创建的Xamarin应用程序,您可以通过手动更改iOS构建体系结构来防止此错误消息。
在最新的Xamarin稳定版本,C8SR2中,新的Xamarin.iOS应用程序的默认构建体系结构为x86_64,适用于iOS模拟器构建。 即,当您创建一个新的应用程序(文件 -> 新建),默认的构建体系结构是x86_64,适用于iOS模拟器构建。
无论您是使用Xcode还是Xamarin,都需要为x86_64架构构建应用程序。特别是在使用xcodebuild
命令行构建时,设置ONLY_ACTIVE_ARCH=NO
,并确保不使用-arch i386
限制目标架构,因为您需要允许编译器也为x86_64构建。
要验证您的应用程序是否已构建为x86_64,请解压缩IPA文件并查找二进制文件。<filename>
和<app>
分别是IPA和应用程序的名称:
unzip <filename>.ipa -d $TMPDIR/app
file $TMPDIR/app/Payload/<app>.app/<app>
如果您看到Mach-O 64位可执行文件 x86_64
,则表示您的应用程序是为x86_64构建的。您可能还会看到您的应用程序是通用二进制文件,只要它包含一个x86_64切片,这也是可以的:
Mach-O universal binary with 2 architectures
(for architecture x86_64): Mach-O 64-bit executable x86_64
(for architecture i386): Mach-O executable i386