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

lra*_*135 131 ios

我有一个应用程序,我最近更换了启动图像和应用程序图标,我删除了项目中任何地方的所有旧资产.只需在xcode中构建,将应用程序从旧版本升级到新版本,一切都很好.但是,如果我安装了旧版本的应用程序,那么从testflight升级它,每次我杀死应用程序然后重新启动它,旧的启动图像会在显示新的启动图像之前短暂出现.同样,当我关闭应用程序时,旧应用程序图标会短暂闪烁,然后再切换回新应用程序.

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

有没有人以前经历过这个并有任何建议?

Bri*_*pek 266

通过这样做,我已经能够可靠地清除跳板缓存以测试启动映像更改:

  1. 从设备中删除您的应用
  2. 关闭设备电源
  3. 启动设备,安装和启动应用程序.

每次图像都会正确更新.惭愧我需要关闭设备才能让它继续运行 - 但至少我已经能够以这种方式取得进展.我希望这可以帮助别人.

  • Apple,你必须开玩笑吧,对吧? (38认同)
  • 这是唯一一个对我有用的解决方案.非常感谢你! (16认同)
  • 这有效.跳过第1步,它也有效! (5认同)
  • 也适用于模拟器. (5认同)
  • 这可能是我见过的最愚蠢的错误 (3认同)
  • 这也是 TestFlight 的修复吗?从 TestFlight 更新应用程序还会缓存启动图像。您确定与 testflight 不同的应用程序版本不会发生这种情况吗? (2认同)
  • 我同意@EFE。这种情况在 2020 年仍然会发生。这解决了这个问题,但如果所有其他图标都可以在不这样做的情况下更新,那么启动图标也可以!苹果什么鬼? (2认同)

Ink*_*lem 36

Springboard使用这些缓存来快速切换应用程序.这不是一个会影响您的生产用户的问题,理论上应该在下次Springboard决定对您的应用进行快照时消失.

话虽这么说,这不是你可以解决的问题.这是Apple的代码中的错误,而不是你的代码.

  • 不幸的是,我可以确认这个问题甚至会影响生产用户(因此从App Store升级应用程序后). (10认同)
  • 您能否链接到确认您的声明的文档"这不是一个会影响您的生产用户的问题"?我有完全相同的问题,如果这只是开发人员,我很好,但如果没有明确说明你所说的官方文件我就不会抓住机会. (5认同)
  • 对于一些人我也得到这个App Store更新:(. (4认同)

Mur*_*gal 25

对于模拟器而言 Reset Contents and Settings...


chi*_*atp 16

@InkGolem

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

是真的.

当我更改Launch Screen,SplashScreen和App Icon时,我遇到了这个问题.我尝试了每种方法,但它没有用.最后,我刚刚发布了我的应用程序并使用我没有用于开发设备从App Store下载了我的应用程序.SplashScreen和App Icon正常工作!

  • 这个问题在我的Appstore版本中也很讨厌,而且@Brian Trzupek提示也有效. (5认同)

Yu-*_*Han 11

如果您真的想解决这个问题,我找到了解决方案解决方案.Apple有一些机制来缓存按图像文件名索引的启动画面图像.

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

再次运行,您将看到新的更改.


小智 8

卸载您的应用程序,重新启动手机并再次安装您的应用程序...这实际上已修复我的情况.


A.G*_*A.G 5

我也面临同样的问题。发生这种情况是因为模拟器/ iOS设备在您首次启动应用程序时会缓存启动映像。我对Brian Trzupek的答案进行了一些修改:

  1. 从Xcode资产中删除图像集(例如launch_image)
  2. 添加一个新的图像集并向其中添加图像。
  3. Switch off and switch on the iOS Device. (Reset Contents and Settings for simulator).
  4. Clean the Xcode build folder (Press command + option + shift + K).
  5. Delete the app from the device/simulator (if available).
  6. Run again.


JER*_*ERC 5

这对我有用http : //arsenkin.com/launch_screen_image_cache.html

同样,由于我在上面引用了线程,因此我找到了一种解决此问题的方法-为新图像命名与以前不同的名称,以防新图像与旧图像具有相同的名称并将其从*中排除.xcassets文件夹到项目目录,并在UIImageView中引用它。就是这样。听起来很愚蠢,但哦,吓了一跳,我有多愤怒。

  • 这里的*关键*是将这些图像保留在资产目录之外。谢谢! (3认同)
  • 如果您关心生产用户的良好用户体验并希望避免新旧图像之间的丑陋过渡,那么此解决方案确实很有帮助。 (3认同)
  • 最后,一个真正有效的解决方案!这里的关键是将图像从资产文件夹中取出。 (3认同)
  • 诡异的。但是我从资产目录中移出的背景图像有时无法加载,并且我得到黑色背景。现在我需要再次调试它,但不幸的是我不知道如何重现。 (2认同)

Dan*_*ger 5

什么对我有用:

  • 删除 LaunchScreen 的场景和视图控制器并创建一个新的(确保在属性检查器中将其设置为“初始视图控制器”)。

什么都没有为我工作:

  • 删除应用程序
  • 重启 iPhone、Mac 或 Xcode
  • 删除派生数据
  • 删除设备的容器
  • 打扫
  • 燃烧 3 个史蒂夫乔布斯巫毒娃娃

笔记:

有时也需要擦除(模拟器)

  • 我不相信。我需要史蒂夫乔布斯巫毒娃娃的来源位置来确认。 (5认同)

M M*_*eza 5

解决方案为我工作

  1. 从设备中删除您的应用程序
  2. 关闭设备
  3. 打开设备
  4. 清理构建文件夹
  5. 再次构建并安装并启动应用程序。

    享受