3

我已经提交了一个 iPhone 应用程序 6 次,并且在最后/当前版本的要求中,不再支持 iPhone 3G。

我的问题:为什么我会失去这个模型?

我有几点意见:

  1. 现在,应用程序不再支持 iPhone 3G。我做了一些搜索,但我没有找到任何关于它的消息。

  2. 在提交此版本之前,我将我的 XCode 从版本 4.0.2 (iOS SDK 4.3) 更新到版本 4.2 (iOS SDK 5)。
    也许在提交过程中,“Apple”检查了二进制文件以检查我的工具版本(我用它构建了我的应用程序)。由于 iOS 5 无法安装在 iPhone 3G 上,我失去了这种支持。

  3. 我拥有一部 iPhone 3G 以便进行兼容性测试。
    在 XCode 4.2 中,我无法用我的 iPhone 3G 调试我的应用程序。但是,我找到了解决方案:添加架构 armv6 是不够的,我需要放置一些薄弱环节。

    如果我使用这些选项“特殊 3G”提交我的应用程序,是否会考虑这些选项并恢复支持?

    (见编辑)

  4. “最新消息”是我更改了我的 Apple 帐户:我使用另一个帐户提交了我的应用程序。也许有一些我没有看到的选项。


编辑:我忘记了一个可能很重要的部分:iOS 的版本。

运行我的应用程序的最低 iOS 版本是 iOS 3.1。我的 iPhone 3G 在 iOS 3.X 上运行

我在使用 XCode 4.2 和我的 iPhone 3G 时遇到的所有问题似乎都是 iOS (3.X) 的版本。

也许我的应用程序失去了对 iPhone 3G 的支持,以确保 iOS SDK 5 和 iOS 3.X 没有问题

但是,有些用户的 iPhone 3GS 在 iOS 3.X 上运行。

我用一台运行 iOS 4.0 的 iPhone 3GS 进行了一些测试:我没有任何问题,也没有选项可以添加到我的项目设置中。


感谢您的回答。问题可能是我的 XCode 版本。

就像我说的,我已经添加了架构 armv6。但对于我的 iPhone 3G iOS 3.X,这还不够。

您是否仅在一台 iPhone 3G 上成功测试了此设置?

我应该做:

  1. 添加架构 arm6
  2. 使用“最新 iOS”(iOS 5.0)设置基本 SDK
  3. 将 iOS 部署目标设置为最小值

---这是你的建议---

  1. 将参数“所需设备功能”(armv6 和 armv7)删除到 info.plist
  2. 将 SystemConfiguration.framework 添加为可选(以建立薄弱环节)

使用此设置,我的应用程序崩溃:“dyld: Symbol not found: __NSConcreteGlobalBlock”
所以我还应该添加标志“Other Linker Flags”,-weak_library /usr/lib/libSystem.B.dylib

这是我的问题之一:
如果我提交带有“特殊 3G”这些选项的应用程序,是否会考虑这些选项并恢复支持?

4

1 回答 1

2

默认情况下,Xcode 4.2 不包括对 iPhone 3G 的支持,但您可以将其添加回来。只需选择您的应用目标并选择“构建设置”。在顶部,将列出的体系结构从“标准 (armv7)”更改为“其他”。在弹出框中,选择现有选项并单击减号按钮,然后单击加号按钮并添加“armv7”,然后再次单击加号并添加“armv6”。armv7 将支持较新的芯片,而 armv6 将重新添加对 iPhone 3G 的支持……前提是您将 iOS 部署目标设置为 iOS 4.2 或更早版本……您在 3.x 的设置应该没问题——这只是限制你显然不要使用 iOS 的新功能。

您可能还需要在“构建设置”的“其他 C 标志”下添加“-mno-thumb”,但如果我没记错的话,那可能只有在您想在旧架构上使用自动引用计数时才需要 - 和即使那样只是因为这是一个已知错误的解决方法。

于 2011-11-11T06:58:37.053 回答