App版本升级导致应用打不开(崩溃)

思考:

由于升级导致的应用崩溃可能的原因:

 1. 老版App沙盒中的数据文件被新版App直接取用,可能会因为版本更新修改的一些业务逻辑或者实现方式不同,从而出现数组越界,字典取空值等问题导致程序崩溃。
 2. 很容易忽视的一个问题是:苹果自带的 iClound 会自动备份沙盒中“Documents”文件夹。

忘记应用沙盒结构的猿们请看下边文字:

* Documents:保存应⽤运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录

* tmp:保存应⽤运行时所需的临时数据,使⽤完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时 不会备份该目录

* Library/Caches:保存应用运行时⽣成的需要持久化的数据,iTunes同步设备时不会备份该目录。⼀一般存储体积大、不需要备份的非重要数据

* Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置) 应⽤会在该目录录中查找应⽤的设置信息。iTunes同步设备时会备份该目录 

解决方案:

#首先理清楚的是:App用户可能开启了 iColound 对我们的孩子(App)进行了备份,而备份的只是 “Documents” 文件夹。
因此我们在开发过程中,对于可能会因为升级造成数据错乱数据文件尽量不要存放在 “Documents” 文件下,可以考虑放在 “Library/Caches” 文件中。
如果之前版本已经按照最坏的情况做了(将升级可能会导致程序崩溃的文件放在了 “Documents” 文件中,用户也刚好备份了我们的应用),那么。。。我们在版本更新中只能将存取这个文件的代码改变,比如:修改文件名称,重新存放新版本的文件,抛弃了之前版本的文件;在更新应用的时候对造成崩溃的文件进行清理。方法很多,猿们一定有更好的方法。

后记:

不得不提的是,小猿已经提交App Store并且通过审核,客户反馈过来了上边讨论的问题。小猿才意识到问题的严重性,好歹app的客户还不庞大。。。不然后果不堪设想。最后想到一个没办法的办法,猿们不要嘲笑(委屈脸):
5C13FE91-0B5E-4B21-9806-D49FBE81FB2F.png
B5C81127-21B0-473F-881E-9C8D0ECADF6F.png
EA0A45DD-4209-43BE-A952-81D6DE7F4C81.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,637评论 25 708
  • 猫 不知怎么的又喵了一下 何时开启的状态 饿时会忧愁喵一下 开心时的自得喵一下 百无聊赖不自觉也喵一下 ........
    乐大头阅读 181评论 0 0
  • 生命中无论做什么事情,第一次和最后一次总是那么重要!像第一次来到世界上,最后一次活在世界上预示着开始和结束! ...
    缪隐阅读 259评论 0 1
  • 对于“飞机上不能使用手机”这项禁令的合理性 不少人深表怀疑其实不仅是公众这也是民航领域最有争议的问题之一 在航空业...
    SmartNews阅读 511评论 0 1
  • 从小,我就特别爱看电视剧,什么金庸的就不必说了。最近时间,心情不是很好,为了生活,着实有些伤身。每天拿着手机,唱了...
    荏可阅读 273评论 1 0