I have an app where I recently replaced the launch images and app icons, I removed all of the old assets from everywhere in the project. When I upgrade the app from the old version to the new version by just building in Xcode, everything is fine. However, if I have the old version of my app installed then upgrade it from TestFlight, every time I kill the app then restart it the old launch image briefly appears before showing the new launch image. Similarly when I then close the app, the old app icon briefly flashes before switching back to my new one.

我使用iExplorer打开应用,并注意到/Library/Caches/Shapshots目录中保存了旧的启动屏幕图像(我不知道它是如何或为什么会出现在那里)。当我通过iExplorer手动删除它时,它就不再出现了。但是,当我尝试使用NSFileManager方法用代码删除它时,我得到错误,说我被禁止删除这个目录中的文件。

有人有过这样的经历吗?有什么建议吗?


当前回答

好吧,我找到问题所在了。在我之前的应用版本中,我们使用的是启动屏幕XIB。在这个新版本的开发过程中,xib被删除了,取而代之的是静态启动图像。

解决方案是使用启动屏幕XIB。我注意到,当我第一次使用启动屏幕xib时,存储在快照目录中的文件被xib的快照所取代。

其他回答

我已经能够通过这样做可靠地获得跳板缓存清除测试发射图像更改:

从设备中删除应用程序 设备下电 电源设备,安装和启动应用程序。

图像每次都能正确更新。很遗憾,我需要关掉设备才能让它运行,但至少我已经能够通过这种方式取得进展。

在模拟器的情况下,只是重新启动模拟器应该工作。

也有这个问题。作为一个新手,我很天真地改变了启动屏幕。故事板到LaunchScreen.xib。运行失败了(呸),所以我把它改回。storyboard重新运行了应用程序,只是为了测试我没有搞砸任何其他事情——旧的屏幕没有首先出现。所以不管我做了什么,它一定把旧缓存冲出来了。

卸载你的应用程序,重启你的手机,重新安装你的应用程序…这在我的例子中是固定的。

确保你完成了所有这些步骤

在build中搜索ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME键 然后在整个应用程序中设置和搜索其资产值 删除它。 从构建设置中删除ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME。 创建新的启动屏幕Xcode ->文件->新建->文件->启动 屏幕 Goto应用程序主目标->一般->应用程序图标和启动图像-> 选择新的启动屏幕文件。 如果你只是改变旧的启动屏幕,试着命名新的资产 名字不同。

这是我发现的解决这个问题的最快方法,尽管听起来很愚蠢:

右键单击LaunchScreen。xibor在你的启动屏幕文件,并选择删除文件,然后选择删除垃圾。这将从项目中删除对该文件及其过去更新的所有引用。 进入你的垃圾和拖放文件回到你的xCode项目(在yourProjectName)。 清理和重建。