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