iOS更新后保持旧的启动屏幕和应用程序图标

我有一个应用程序,我最近取代了启动图像和应用程序图标,我从项目中的所有地方删除了所有的旧资产。 当我通过在xcode构build应用程序从旧版本升级到新版本时,一切都很好。 但是,如果我安装了旧版本的应用程序,然后从testflight升级它,每次我杀了应用程序,然后重新启动它,旧的启动图像短暂出现之前显示新的启动图像。 同样,当我closures应用程序时,旧的应用程序图标会短暂闪烁,然后切换回新的应用程序。

我用iExplorer打开了应用程序,注意到有一个保存在/ Library / Caches / Shapshots目录中的旧启animation面的图像(我不知道如何或为什么到达那里)。 当我通过iExplorer手动删除它时,它会停止显示。 但是,当我尝试使用NSFileManager方法使用代码删除它时,我收到错误说我被禁止删除此目录中的文件。

有没有人经历过,有任何意见?

我已经能够可靠地得到跳板caching清除testing发射图像的变化,做到这一点:

  1. 从设备上删除您的应用程序
  2. closures设备
  3. 启动设备,安装并启动应用程序。

图像每次都会正确更新。 耻辱,我需要closures设备,让它去 – 但至less我已经能够取得这样的进展。 我希望这可以帮助别人。

Springboard使用这些caching来快速切换应用程序。 这不是一个会影响你的生产用户的问题,下次Springboard决定快照你的应用程序时,理论上应该会消失。

这就是说,这不是一个问题,你可以修复。 这是苹果代码中的一个错误,不是你的。

对于模拟器,只需Reset Contents and Settings...

@InkGolem

这不会影响您的生产用户的问题

是真实的。

当我更改启动屏幕,SplashScreen和应用程序图标时,我遇到了这个问题。 我尝试了每种方法,但没有奏效。 最后,我刚刚发布了我的应用程序,并使用我未用于开发设备从App Store下载了我的应用程序。 SplashScreen和应用程序图标正常工作!

卸载你的应用程序,重新启动你的手机,并再次安装您的应用程序…这实际上固定在我的情况。

我发现了解决方法,如果你真的想解决这个问题。 苹果有一些机制来caching启animation面的图像,这些图像通过图像文件名称进行索引。

当您在启动屏幕上更改任何图像,并且希望立即在下次运行中看到这些更改。 请使用您更改的图像的新图像名称,并链接到故事板或xib中的新图像文件。

再次运行,您会看到新的更改。

只需连接你的设备,进入Xcode的>窗口>设备>您的设备,现在在已安装的应用程序,select您的应用程序,右键单击并下载容器,到生成的文件,右键单击,显示包内容,AppData,库,并删除文件。 现在转到Xcode>窗口>设备>您的设备>您的应用程序,然后右键单击以replace容器。

好的,所以我想清楚了这个问题。 在我的应用程序的以前版本中,我们使用了启动屏幕XIB。 在这个新版本的开发中,xib已经被删除,只能用静态的启动镜像来replace。

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

也有这个问题。 作为一个总新手,我天真地将LaunchScreen.storyboard改为LaunchScreen.xib。 运行失败(duh),所以我把它改回.storyboard重新运行应用程序只是为了testing我不会搞砸其他任何东西 – 而旧屏幕并没有出现在第一。 所以无论我做什么,都必须刷新旧的caching。

我也面临同样的问题。 它发生是因为模拟器/ iOS设备caching启动图像,当我们第一次启动应用程序。 我正在对Brian Trzupek的回答进行一些修改。

  1. 从Xcode资产中删除图像集(例如launch_image)
  2. 添加一个新的图像集,并添加图像。
  3. closures并打开iOS设备。 (重置模拟器的内容和设置)。
  4. 清理Xcode生成文件夹(按Command + Option + Shift + K)。
  5. 从设备/模拟器中删除应用程序(如果可用)。
  6. 再次运行。

@Chino

@InkGolem

这不是一个会影响你的生产用户的问题是真实的。

当我更改启动屏幕,SplashScreen和应用程序图标时,我遇到了这个问题。 我尝试了每种方法,但没有奏效。 最后,我刚刚发布了我的应用程序,并使用我未用于开发的设备从App Store下载了我的应用程序。 SplashScreen和应用程序图标正常工作!

在这个设备上,你是否安装了以前的版本? 我相信这是一样的上述答案说删除并重新安装或删除,重新启动和重新安装。

我有同样的问题,它与开发和生产设备,模拟器和从appstore。 我也可以使用模拟器重新创build问题。 我首先用我的代码的以前版本运行模拟器,然后运行与更高版本的模拟器。 在这两种情况下,旧的发射屏幕都关心了。 在模拟器内删除快照不能正常工作,因为它只是重新创build。 当您通过点击主页buttonclosures应用程序时,将拍摄具有较旧启animation面的新快照。 现在…如果我删除手机或模拟器的旧版本的应用程序,然后安装使用Xcode或应用程序商店启动屏幕更新正常。 然而,这不是最终用户的理想解决scheme。

有没有人想出一个解决scheme,不涉及从手机中删除以前的应用程序?

我已经尝试了:重命名LaunchScreen xib文件重命名LaunchScreen使用的图像在applicationDidEnterBackground的screen.window上添加一个空白图像以隐藏快照前的屏幕

在[application didFinishLaunchingWithOptions]上添加一个中断我可以看到,在调用didFinishLaunchingWithOptions之前,旧的LaunchScreen出现了。