【问题标题】:How do I speed up app launch in iPhone Simulator?如何加快 iPhone Simulator 中的应用程序启动速度?
【发布时间】:2010-10-30 19:41:45
【问题描述】:

问题是我的应用程序将数百兆字节保存到他们 iPhone 上的用户文档目录中。在测试期间,iPhone 模拟器需要很长时间才能在每次构建时启动应用程序,因为每次构建时它都会将所有这些数据复制到新的文档目录中。是否有任何解决方案可以每次将目录留在同一位置或以某种方式加速启动?例如,具有 HEX 值的导向器会在 iPhone 模拟器上每次重新构建/重新启动都会更改,这可能非常耗时:

./Library/Application Support/iPhone Simulator/User/Applications/B32A0BA1-5843-4FDE-B5FB-4E40460BD8CC/Documents/

谢谢,

马特

【问题讨论】:

  • 设备上的速度相对于模拟器如何?
  • 随着更多文档文件的添加,设备上的启动速度不会改变,但在模拟器中,我得到一个旋转的苹果色轮 10 秒,其中包含 250 MB 的照片(我的应用程序不使用这些照片)发射期间)。似乎 XCode 或模拟器正在以某种方式“处理”这些文件,因为没有它们,启动是即时的。随着我在文档目录中积累更多数据,时间似乎增加了。

标签: iphone xcode ios-simulator


【解决方案1】:

模拟器(与设备本身不同)不必保留在沙盒位置。

所以当从模拟器中保存文件时,你可以试试:

#if TARGET_IPHONE_SIMULATOR

// save your files to a fixed location on your hard-disk
// (like /Users/yourusername/MyIPhoneAppDebugStorage)

#else

// Save files normally
// (to [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
//     NSUserDomainMask, YES) objectAtIndex:0])

#endif

这样,当从模拟器运行时,您的大文件始终位于硬盘上的固定位置。

【讨论】:

  • 谢谢——这完美!当我在 NSDocumentDirectory 中有 1.5 GB 数据时,我的模拟器需要将近 10 分钟来加载应用程序,但现在通过上述修复几乎可以立即加载。
【解决方案2】:

在第一次运行后让模拟器保持打开状态。只需在 XCode 中停止程序而不关闭模拟器。因此,在下一次测试启动中,它只需要加载应用程序而无需再次加载模拟器。

这对我来说确实加快了速度。

【讨论】:

    【解决方案3】:

    为了缩短构建时间,最简单的方法可能是创建一个包含合理数据子集的新 XCode 目标。假设这些数据文件是 XCode 项目中的“资源”文件,您可以复制您的应用程序目标,将其重命名为“app lite”或类似名称,然后编辑“复制资源”构建阶段以不包含所有文件(或单个较小的文件,或其他)。

    【讨论】:

    • 对不起,如果我不是更清楚,但这些文件不是 XCode 项目中的“资源”文件,而是我的应用程序在运行时保存到文档目录的文件([NSSearchPathForDirectoriesInDomains( NSDocumentDirectory,NSUserDomainMask,是)objectAtIndex:0])。感谢您的回复。
    【解决方案4】:

    XCode 不会在每次构建和运行时创建新目录,它只是重命名旧目录。

    我有数据存储在文档目录中,除非我在运行我的应用程序之前明确删除它,否则每次启动时都存储在其中。

    我很好奇启动模拟器时所花费的时间。你可以通过应用程序调试吗? (是你的代码花时间吗?)

    克里斯。

    【讨论】:

    • 嗨 PyjamaSam。您可能是正确的,它重命名了目录(我刚刚观看了启动应用程序时发生的事情),但模拟器似乎在启动阶段对文档进行了处理。例如,我的应用在 Documents 目录中有一个 3MB 的 sqlite 文件和 250 MB 的照片。在启动时,我的代码对这些照片文件没有任何作用,但对 SQL 文件却做了很多。但是,如果我从 Documents 目录中删除照片文件,它会立即启动。将它们放回原处会在应用程序开始启动之前导致 10 秒的延迟(只是旋转的色轮)
    猜你喜欢
    • 2018-12-15
    • 1970-01-01
    • 2013-07-28
    • 2014-01-29
    • 2018-03-03
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2016-11-02
    相关资源
    最近更新 更多