iOS 10.1模拟器显示“应用程序可能会减慢你的iPhone”

iOS 10.1模拟器上从Xamarin Studio第一次运行应用程序时,我收到以下消息:

应用程序名称可能会减慢您的iPhone

这个应用程序的开发人员需要更新它来提高兼容性。

在这里输入图像说明

该应用程序运行正常,并且当我第二次运行它时,消息不会出现。 我怎样才能摆脱这个信息?

事实certificate,该应用程序只是为i386架构,而不是为较新的x86_64之一。 在构build设置(更改为“i386&x86_64”,虽然我认为“x86_64”也会有所帮助),但它不再发生。

在这里输入图像说明

参考: https : //releases.xamarin.com/stable-release-cycle-8-service-release-0-w-xcode8-1-support/

保持较高的知名度与Xcode 8.1相关的已知问题

[Xamarin工作室] – 45861 – “可能会减慢你的iPhone …这个应用程序的开发人员需要更新它,以提高其兼容性”,因为iPhoneSimulatorconfiguration中的默认“i386”支持架构设置新项目

修复:为iPhoneSimulatorconfiguration更改项目选项> iOS生成>支持的体系结构为x86_64(而不是默认的i386)。

为什么会出现此警告

苹果在iOS 10.1中添加了这个警告。 这篇文章简洁地定义了警告 :

“为了促使开发者更新他们的应用程序到64位的框架,苹果已经引入了一个新的iOS 10.1的警告信息,信息是:”[App Name]可能会减慢你的iPhone“此应用程序的开发人员需要更新它以提高其兼容性。“此消息仅在您运行32位应用程序时才会显示。

这不会影响绝大多数iOS用户,因为苹果在2015年6月停止接受对32位应用的更新。“

更新 :在周期8服务版本2之前,iOS模拟器构buildconfiguration的默认构build架构不包括64位架构。

如何解决/防止此警告

对于在C8SR2之前创build的Xamarin应用程序,可以通过手动更改iOS构build体系结构来防止出现此错误消息。

构build造成警告的体系结构

这个iOS构build体系结构包括64位体系结构 在这里输入图像说明

构build解决/防止警告的体系结构

这个iOS构build体系结构确实包含了64位体系结构 在这里输入图像说明

更新:新的Xamarin.iOS应用程序

在Xamarin的最新稳定版本Cycle 8 Service Release 2中 ,新版Xamarin.iOS应用程序的默认构build架构是针对iOS Simulator构build的x86_64。 即,当您创build一个新的应用程序(文件 – >新build)时,iOS Simulator版本的默认构build架构是x86_64。

编译为x86_64

无论您使用Xcode还是Xamarin,您都需要为x86_64架构构build应用程序。 特别是在使用xcodebuild从命令行构build时,请设置ONLY_ACTIVE_ARCH=NO并确保不要使用-arch i386来约束目标体系结构,因为您还需要允许编译器针对x86_64进行构build。

validation你的应用程序

要validation您的应用程序是为x86_64构build的,请解压缩IPA文件并查找二进制文件。 <filename><app>分别是您的IPA和应用程序的名称:

 unzip <filename>.ipa -d $TMPDIR/app file $TMPDIR/app/Payload/<app>.app/<app> 

如果您看到Mach-O 64-bit executable x86_64 ,则您的应用程序是为x86_64构build的。 你也可能会看到你的应用程序是一个通用的二进制文件,只要它包含一个x86_64 slice就可以了:

 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