构建以用新应用程序版本替换旧版本应用程序导致应用程序崩溃!原因?
Posted
技术标签:
【中文标题】构建以用新应用程序版本替换旧版本应用程序导致应用程序崩溃!原因?【英文标题】:Building to Replace old version of app with new app version causes app to crash!! reason? 【发布时间】:2010-08-24 05:16:38 【问题描述】:我有一个游戏项目,它在 debug 和 release 模式下都在设备上运行良好。我有它的两个版本。具有更多(后来我添加)功能的旧版本和新版本,以及捆绑ID,两者的版本相同。当我构建旧版本时,以前没有安装 "myGame" 应用程序。如果我先构建新的,它构建良好并且运行良好,反之亦然。
但是,当我在 ipod touch 中已安装旧应用程序构建新版本 1 时,应用程序崩溃,反之亦然,如果我在已安装新应用程序的情况下构建旧版本。控制台消息如下所示:
/* Old version installed first and build new version */
跑步…
gdb-arm-apple-darwin(3441) malloc: *** 对象 0x4601e0 的错误:已释放对象的校验和不正确 - 对象可能在被释放后被修改。
*** 在 malloc_error_break 中设置断点进行调试
启动远程程序时出错:无法获取进程 6791 的任务。
启动远程程序时出错:无法获取进程 6791 的任务。
正在调试的程序没有运行。
正在调试的程序没有运行。
gdb-arm-apple-darwin(3441) malloc: *** 对象 0x42a7d0 错误:已释放对象的校验和不正确 - 对象可能在被释放后被修改。
*** 在 malloc_error_break 中设置断点进行调试
/* New version installed first in device then build old version */
跑步…
gdb-arm-apple-darwin(4195) malloc: *** 对象 0x45e710 错误:释放对象的校验和不正确 - 对象在释放后可能被修改。
*** 在 malloc_error_break 中设置断点进行调试
启动远程程序时出错:无法获取进程 7079 的任务。
启动远程程序时出错:无法获取进程 7079 的任务。
正在调试的程序没有运行。
正在调试的程序没有运行。
我也可以通过从设备中删除之前安装的应用程序来解决此问题。但是我想知道这次崩溃的根本原因,我也担心如果我的新版本应用程序在appStore中,要求用户先删除旧版本才能使用新版本会很不方便。
所以,请帮助我度过这种情况。感谢任何类型的信息。
神秘男孩59
PS:我使用了相同的旧版本应用程序并添加了新版本的功能。新的不是应该很容易取代旧的吗?随着我们继续添加功能并构建和测试!
【问题讨论】:
【参考方案1】:既然我找到了解决问题的方法,我就稍微解释一下。通常,当我们搜索“正在调试的程序没有运行”的解决方案时,我们只是简单地删除设备中的旧(现有)应用程序并进行似乎工作正常的新构建。
但是崩溃,是的,当然其中有一些我首先忽略的问题。实际的问题是在构建设置-> 打包中有轻微的产品名称更改。 不得不提的是,这个游戏项目是我和我朋友做的,他在做这个编程部分时,产品名称(包括空格)几乎没有变化(我猜是偶然的) .
这会导致新旧应用版本中的产品名称冲突导致崩溃。现在它工作正常。所以你们中的任何人都遇到过它,你需要先检查这些。因为大多数游戏都是大项目,并且有很多开发者参与其中。因此,有时会导致这些动作。
感谢所有阅读它的人。去吧... :)
【讨论】:
谢谢 - 这为我节省了数小时试图弄清楚......(新手 - 不能投票给你)无论如何,有谁知道是否有办法解决它?我不得不更改产品名称(大写、空格) - 这是否意味着我的用户将无法更新? 嘿,丹,当我看到它对你有帮助时感觉很好。我想要更新 iTunes 中的现有应用程序,您需要具有与以前版本相同的产品名称。如果您将产品名称更改为不同的(空格、大写),它将无法更新现有应用并将您的应用安装为新应用(无需替换旧版本的应用)。您需要非常小心这些,因为您不能说您的客户在更新到新应用之前删除以前的应用。祝你好运。【参考方案2】:我会说首先检查您保存到设备的数据。可能是旧版本正在向新版本正在读取的手机内存中写入某些内容并导致其崩溃。
【讨论】:
感谢您的建议,无论如何,当我仔细查看我的应用程序设置时,我找到了我的解决方案。它有帮助:)以上是关于构建以用新应用程序版本替换旧版本应用程序导致应用程序崩溃!原因?的主要内容,如果未能解决你的问题,请参考以下文章
如何在新的 iOS 7 和 Xcode 5 上使用旧 ios 版本构建我的应用程序