Ios 在testflight上从旧版本更新到新版本时应用程序崩溃

Ios 在testflight上从旧版本更新到新版本时应用程序崩溃,ios,objective-c,crash,testflight,Ios,Objective C,Crash,Testflight,我创建了一个应用程序,当在testflight上尝试从构建54升级到55时,它会崩溃。但是如果我先删除应用程序,然后安装build 55,它就会运行得很顺利。所以我构建了另一个,里面有一些修复,并在试飞中进行了尝试,所以现在构建55-56更新。它运行平稳 所以问题是,当从54岁更新到55岁时,这里有没有人有过同样的问题 通常情况下,如果您在更新时而不是在新安装时发生崩溃,这意味着您有一些与已更新应用程序的状态不兼容的持久数据 最常见的情况是: 数据库数据未正确迁移(或根本未迁移);可能在两次更

我创建了一个应用程序,当在testflight上尝试从构建54升级到55时,它会崩溃。但是如果我先删除应用程序,然后安装build 55,它就会运行得很顺利。所以我构建了另一个,里面有一些修复,并在试飞中进行了尝试,所以现在构建55-56更新。它运行平稳


所以问题是,当从54岁更新到55岁时,这里有没有人有过同样的问题

通常情况下,如果您在更新时而不是在新安装时发生崩溃,这意味着您有一些与已更新应用程序的状态不兼容的持久数据

最常见的情况是:

  • 数据库数据未正确迁移(或根本未迁移);可能在两次更新之间,某些字段在代码中发生了更改,并且与较旧的数据库版本不兼容
  • keychain和/或userdefaults中的键和值。与数据库相同,您的代码需要一些值,但以前版本的文件不知道这些值
  • 档案。您可能正在编写/期望某些文件以特定方式格式化,或包含特定数据。但是早期版本的用户可能没有这些文件,因此会导致崩溃
基本上,当更新到新版本时,任何持续存在的问题都可能导致崩溃或错误。但是,因为您是从新安装进行测试,所以在测试过程中,您总能获得正确的格式

如果发生崩溃,应该有一个非常明确的异常,告诉您发生了什么,这可以帮助您定位问题,以及为什么会发生。从那里隔离需要迁移的文件应该非常简单

避免这种情况的好办法是使用以前安装的版本进行测试,并跟踪您所做的所有持久性修改。一旦你决定要坚持下去,一旦你决定改变它,你就必须考虑它。在访问文件之前,您可能需要编写一些代码来更新文件并检查其版本。因此,如果数据库版本1有两个表和三个字段,您必须了解它,如果您对此不满意,您必须编写代码来更新数据库及其所有内容,然后只有您可以期望每个人都拥有新数据库

这也是另一个好主意:在应用程序中使用版本控制。如果您的应用程序是版本40,但您的文件仍然是版本34格式,则必须使用特定于该更新的代码将其更新到版本40


迁移并非易事。需要大量的测试和数据处理。我强烈建议您在投入生产之前使用单元测试来完成这类工作。

崩溃说明了什么?您使用的是数据库吗?迁移呼叫!userdefaults值或与之相关的任何内容的更改。。。最合适的解决方案是,如果您在54之前提交代码,然后在54之后尝试安装54,那么您就会知道问题出在哪里related@dreamBegin你是说54然后55然后56?我明天会试试这个,希望可以在模拟器中模拟。我是这个项目的一个新开发人员,所以明天我会跟踪它。是的,我上次让它工作是因为NSUserDefault。谢谢你,吉尔!