更新至iOS 14和Xcode 12后,应用程序启动时间变慢。

94

我发现自从将设备升级到 iOS 14 并使用 Xcode 12 后,我的应用程序启动时间显著增加(现在需要一整分钟,而之前只需几秒钟)。我尝试了多个 Xcode 12 beta 版本,并在模拟器中运行该应用程序,没有遇到任何问题,但是公共版本似乎存在这个问题。

我测试了几个应用程序,它们都面临这个问题。再次运行应用程序(不使用 Xcode)是即时的,即使重新启动设备。

明确一点,我不是在谈论构建时间,我指的是应用程序在闪屏界面显示后启动所需的时间,在 Xcode 的状态显示为“正在 iPhone 上运行”时。

有其他人遇到过这个问题吗,还是与我的机器有关?


14
我有同样的问题,我必须等大约两分钟才能完成启动! - 蘇哲聖
1
是的,启动需要很长时间。我实际上无法想象苹果的测试人员如何通过这个Xcode版本。 - wzso
我升级到Xcode 12.1,然后升级到最新的Big sur beta版,这解决了我的问题,但是我的同事也做了同样的操作,但它并没有解决他的问题。非常令人沮丧。 - Cloud9999Strife
你更新到14.1了吗?也许你的同事还没有这样做,这对我解决了问题,而且没有使用测试版。 - user2330482
1
在 Xcode 12.5(带有 iOS 15 支持文件)和 iOS 15 开发者测试版上出现了相同的问题。 - liudasbar
10个回答

44

我有同样的问题,但通过以下方法解决:

对于运行iOS 14的模拟器,请删除~/Library/Developer/Xcode/iOS DeviceSupport/文件夹内的文件夹(文件夹名称以“14”开头)。

对于运行iOS 14的设备,请选择Xcode window选项卡,单击Devices and Simulators,找到您的设备,右键单击并选择unpair the device

完成这些操作后,重新运行您的应用程序,一切都应该正常。

参考资料:


1
谢谢@manman,我不得不在取消配对设备后也删除整个Xcode文件夹(如您分享的线程中建议的那样),但最终解决了问题。 - CristianMoisei
2
对我来说,我的应用程序在等待1分钟后就会崩溃... - Kai Zheng
6
是的,取消配对设备将会导致Xcode 12崩溃。经过多次尝试后,我找到了一个不会在取消配对时崩溃的方法: 如果您的设备和计算机已经配对,请确保在打开Xcode之前不连接您的设备。启动Xcode项目,进入“设备和模拟器”,然后连接您的设备,如果看到设备,则取消配对。希望这能有所帮助。@KaneCheshire - manman
7
同样对我也不起作用......第二次尝试后Xcode崩溃了。 - MosTwanTedT
1
我卸载了所有模拟器并重新安装,但问题仍然存在。因此,这个解决方案没有帮助。 - Lorenzo
显示剩余5条评论

35

我也遇到了这个问题,我的Xcode版本是12.1(12A7403)。

在Xcode的“设备与模拟器”中 “取消配对” 这个设备的方案对我(以及很多人)都没有用。尝试这样做时Xcode会崩溃。

重置设备也没有解决问题。

对我有用的方法是删除~/Library/Developer/Xcode/iOS DeviceSupport下的iOS 14.1文件夹,然后重新打开Xcode。

Xcode需要一段时间从iPhone上 “复制缓存文件” ,但一旦完成,正常的调试构建和运行行为就恢复了,不再有长时间的延迟。


4
我试了“解除配对”的方法,但没有成功,最后“重置网络设置”才解决了问题。因此有可能两个步骤都是必需的。 - Herr der Töne
1
在Xcode 12.1中工作,并支持iOS 14.1、14.0、12.4.5等版本。 - 刘俊利

30

删除 ~/Library/Developer/Xcode/iOS DeviceSupport/ 并取消/重新配对设备对我无效。

点击项目目标的 Edit Scheme,选择 Run 阶段行,然后在 Info 标签下取消选中 Debug executable ,这解决了我的问题。


1
太好了,这就解决了!非常感谢! - Charlie Pico
14
这并不是一个好的解决方案,因为它停止了调试的能力。 - Dom Bryan
1
@DomBryan 当然,这只是一个解决方法,未来版本的Xcode肯定会修复这个bug。 - tomisacat
@刘俊利 是的,它禁用了调试功能,这只是当前Xcode版本的一种解决方法。 - tomisacat
你是大神!这个问题困扰我一个月了,即使格式化我的Mac也没有帮助。谢谢你! - Asi Givati
显示剩余3条评论

10
  1. 在Xcode菜单中,转到“Product(产品)”>“Scheme(方案)”>“Edit Scheme(编辑方案)”
  2. 打开“Info(信息)”选项卡
  3. 取消“Debug executables(调试可执行文件)”复选框的选择

Xcode scheme editor screenshot

  1. 关闭窗口。
  2. 运行应用程序并查看差异。

24
App现在的启动速度与以前一样快,但是调试已经不再可能了。而这正是在设备上运行应用程序的关键所在。 - The Lone Coder
6
这并不是一个好的解决方案,因为它会阻止调试的能力。 - Dom Bryan
这对我起作用,甚至删除并清空 ~/Library/Developer/Xcode/iOS DeviceSupport 文件夹。然后重新打开 Xcode 即可。 没有起作用。 - Abhishek Thapliyal
如何在AppCode中实现? - Artem

5

从昨天开始我也遇到了同样的问题...

我试过了这里的所有解决方案,但都没有成功。

对我起作用的方法是将 Xcode 11.7 中的 debugserver 复制到 Xcode 12.5 中,然后我就可以 (几乎) 立即启动了。 当然,这破坏了交互式调试器,但有助于隔离问题 (LLDB)。

经过大量测试,将 macOS 版本降级到 11.2.3 可以修复启动问题 (启动时间从 30+ 秒降至 3 秒)

降级很容易: 在控制台中,输入:

softwareupdate --fetch-full-installer --full-installer-version 11.2.3

你会在 /Applications 中找到安装程序。

在两台 MBP 上进行了测试,没有问题。

编辑:刚刚发布的 11.3.1 仍存在问题。

编辑 2:Xcode 13 b1 修复了这个问题(即使在 MacOS 11.4 上也是如此)。我不知道为什么苹果没有发布一个具有 LLDB 修复的新版 Xcode 12!

编辑 3:Xcode 12.5.1 对我来说解决了这个问题。


1
对我来说,Xcode 13 b1 在最初的尝试中似乎解决了这个问题。然而,我现在也在 Xcode 13 上看到这个问题再次出现。 - fisher
我升级到了Xcode 13.2 beta,但我也遇到了这个问题(macOS 11.5)。尝试了所有方法都没有成功。 - multitudes

3

我遇到了同样的问题,我是这样解决的:

删除以下文件夹:

~/Library/Developer/Xcode/iOS DeviceSupport/

然后重新运行Xcode并再次启动应用程序,问题得到解决。


2

只需更新iOS和/或Xcode,问题即可解决。上面给出的解决方案只是权宜之计,而且并非总是有效。对我来说,以上任何一种解决方案都没有起作用。我只是更新了iOS,问题就得到了解决。


同意!我升级到了Xcode 12.4和iPadOS14.4,这也为我解决了这个问题。 - L33MUR

2
  1. 取消与Xcode的手机配对

    不插入手机的情况下启动Xcode

  • 将手机插入

    在Xcode中的设备选项中,取消与手机的配对

  1. 停止Xcode
  2. 运行以下命令
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport
rm -rf ~/Library/Developer/Xcode/iOS\ Device\ Logs
rm -rf ~/Library/Developer/Xcode/DerivedData
  1. 启动 Xcode
  2. 插入手机

0
在我的情况下,无论是解除配对设备还是删除DeviceSupport文件都没有起作用。但是在我升级到iOS 14.1和Xcode 12.1之后,它就可以正常工作了。

很高兴知道@Benjamin Wen,很高兴听到他们在最新版本中修复了它。 - CristianMoisei
我在Xcode 12.1中遇到了同样的问题,在更新到Xcode 12.2后仍然存在。 - NaveedUlHassan5
@NaveedUlHassan5 以及iOS版本呢?我的Xcode现在是12.2,可以顺利运行iOS 14.1。我还没有尝试过iOS 14.2。 - wzso
iOS 版本 14.2,我在苹果论坛上找到了解决方案。Cabeaulac 的评论很有帮助。https://developer.apple.com/forums/thread/651012 - NaveedUlHassan5

-1

删除~/Library/Developer/Xcode/iOS DeviceSupport/并取消配对/重新配对设备对我也没有用,禁用Debug executable会导致我无法调试程序。

我不知道该怎么办,但是当我将iPhone从iOS14升级到iOS14.1时,问题消失了。因此,我认为这应该是一个iOS的bug。


1
在我升级设备到iOS14.2之后发生了这种情况。奇怪的是我的iPad工作正常... - DeveloperSammy
@GakkieNL 或许只是在 iOS 上出现的问题,而在 iPadOS 上没有出现。 - frank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接