2

我已经使用基本 SDK ios 5.0 创建了一个针对 ios 4.1 的应用程序,并使用 3G(ios 4.3.3) 3GS(5.1) 3GS(5.0) iPad(5.1) 对其进行了测试。我的应用在所有这些设备上都表现良好。但是,当苹果最终接受该应用程序并且我将其下载到相同的设备上时,行为发生了变化。问题是显示的页面过大,但如果我移动它们,它们会正确开始适合屏幕。当应用发布后改变其行为时,你们中是否有人遇到过类似的情况?

而最重要的。当在真实设备上从 mac 运行的同一个应用程序表现出色时,我该如何重现此错误?我可能会补充说,基本 SDK 设置为最新(5.0),但应用程序使用不支持 ios 5.1 的 XCode 4.2 存档。

对我好一点,这是我的第一个问题:)

编辑:在 hotpaw 的有用提示之后,我检查了问题是发布版本。在运行配置中更改目标后,我可以在设备上重现该错误。从调试到发布。

有趣的是,令人沮丧的是,我无法解决这个问题,但是,我已经在 xcode 4.3 上以发布模式测试了我的应用程序,它运行良好。我没有改变任何东西,但它有效。它无法打包构建(请参阅问题Xcode 4.3.1 - 打包操作失败),所以我坚持使用 xcode 4.2

有一段时间我怀疑该错误是由编译器在为 thumb 编译时引起的,解决方案是将 -mno-thumb 添加到其他 c 标志。但是我没有强制使用该标志。请参阅:iOS5 Xcode4.2 浮点字节对齐错误?

当我比较编译日志时,我可以看到 xcode 4.3 使用 -arch armv6 编译,而 xcode 4.2 使用 -arch armv6 编译。但它与我连接到计算机的设备相同。我没有发现其他差异,但它们可能存在。如果有帮助,我可以粘贴示例文件的编译日志。

4

2 回答 2

4

如果您只测试 Debug Builds,然后将 Release Build 提交到 App Store,就会发生这种情况。对于最终测试,您需要强制 Xcode 使用 Release 构建进行测试(可能通过编辑默认方案),然后提交此构建,除了代码签名之外,绝对不更改构建设置。

您可能还希望通过 iTunes 在新重置的设备上通过 Ad Hoc 安装最终测试您的 Release 构建,该设备的所有先前构建都已从中删除。请参阅Apple 的说明

于 2012-04-07T20:49:03.303 回答
1

问题出在错误的编译器上!

将 -mno-thumb 应用于我的项目后,我没有注意到差异,因为我使用的库(Three20)设置为仅针对导致问题的 armv6 而不是我的项目进行编译。将 -mno-thumb 添加到 Three20 的所有项目后,该错误消失了!

我将就这个问题通知 Three20 团队。

于 2012-04-11T09:12:42.573 回答