1

我知道这适用于 ios 6.0 遵循这些步骤是否有可能在 Snow Leopard 上获得适用于 Xcode 4.2 的 iOS 5.1 SDK?但现在看来这是不可能的。有谁知道解决方法还是我应该升级?

4

1 回答 1

8

还是可以的。事实上,您可以使用 SDK 6.1 在 Snow Leopard 上使用 XCode 4.2 完成所有开发并将应用程序提交到 Appstore。但是,您不能运行模拟器 6.1(所以请使用真实设备)。

以下是方法(简化了几个步骤):

  1. 您将需要找到一个带有 Lion/Mountain Lion 和 XCode 4.5 的系统,您将使用它作为数据源(我在 VMWare 中有一个)。重要提示:您需要将运行 ios 6.1 的 iOS 设备连接到该系统并在 XCode 4.5 管理器中打开它,以便 XCode 可以下载适当的符号。

  2. 从带有 XCode 4.5 的系统复制以下源目录:

    设备支持:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/6.1 (10B141)

    SDK:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

    使用 tar 归档每个目录可能最方便,如下所示: tar cvf /tmp/archive.tar << name of your directory >>

    注意:设备支持目录的特定版本可能不同(即“6.1.2 (10B146)”或更高版本),请在以下所有说明中使用与您的 ios 设备匹配的版本。

  3. 您需要将这些目录复制到带有 XCode 4.2 的 Snow Leopard 系统到以下目录中(假设您的 XCode 安装在 /Developer 中。如果像我的一样,它在其他地方,请根据需要替换路径的第一个组件):

    设备支持:/Developer/Platforms/iPhoneOS.platform/DeviceSupport/

    SDK:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

    如果使用 tar,请切换到每个目录并解压缩其各自的 tar 存档,如下所示: tar xvf /tmp/archive.tar 。使用 tar 具有保留时间戳、符号链接等(如果有的话)的优点。

    复制后,删除设备支持目录中的链接“最新”并重新链接到“6.1(10B141)”,如下所示:ln -s“6.1(10B141)”最新

===============================================

此时您可以重新启动 XCode 4.2,您应该能够:

  • 在管理器中添加您的 6.1 设备,并在其上运行和调试代码

  • 为您的项目选择 6.1 SDK 作为“最新”并根据它进行构建。

===============================================

但是,如果您尝试支持 4 英寸 iPhone 5 屏幕(通过添加 Default-568h@2x.png 启动图像),您仍然不能完全提交以这种方式构建的应用程序到 Appstore。XCode 4.2 将 SDK 5.0 嵌入到一些应用程序存档中的元数据,因此看起来应用程序是针对 5.0 sdk 构建的。Appstore 积极拒绝包含 4" 屏幕支持且不是针对 6.0 或更高版本 SDK 构建的二进制文件。

所以,你必须求助于一些手工工作来告诉 Appstore 什么是真实的 :)

方法如下:

  1. 归档您的申请。在finder中打开存档目录(右键单击“在finder中显示”行),打开终端,键入“cd”,将目录拖放到终端并按“Enter”。现在您在该目录中并且可以在那里处理文件。

  2. cd 产品/应用程序/yourapp.app

  3. 将有一个名为 Info.plist 的文件 - 它是二进制形式。像这样将其转换为 XML:plutil -convert xml1 Info.plist

  4. 在您喜欢的编辑器中打开 Info.plist。在以下条目中找到对 sdk 5.0(或 SDK 的二进制值)的引用并替换为对 6.1 的引用: DTPlatformVersion: 6.1 DTPlatformBuild: 10B141 DTSDKBuild: 10B141 DTSDKName: iphoneos6.1

如果您喜欢冒险,请更换 XCode 版本并建立价值观。我没有。

  1. plutil -convert binary1 Info.plist

  2. 现在您需要重新签署应用程序。应用程序二进制文件位于同一文件夹中,应命名为“yourapp”

为此,您首先需要一份嵌入授权文件的副本,该文件将在签名期间使用。

  • 您可以从 XCode 4.5 下创建的应用程序存档中复制该文件:查找文件名:archived-expanded-entitlements.xcent,复制到应用程序目录(以防万一,不确定是否需要)

  • 像这样从当前应用程序中提取它: codesign -d --entitlements /tmp/entitlements.xml "yourapp"

在文本编辑器中打开文件 /tmp/entitlements.txt 并清除 <?xml 版本标记之前的任何奇怪的东西,保存。

  1. 现在找到您的分发证书的确切名称。您可以从多个地方复制它,但最好是打开 Keychain Access 应用程序,选择分发证书,双击打开属性并复制“通用名称”。它应该类似于“iPhone Distribution: your company”

  2. 仍然在存档目录中,按如下方式运行 codesign: 首先删除当前签名文件以防万一:

    rm -rf _CodeSignature

    然后运行:

    codesign -f -s "iPhone Distribution: your company" --entitlements /tmp/entitlements.xml yourapp

就是这个。您的应用程序现在是针对 6.1 SDK 构建的,并显示为这样。您应该能够从 Organizer 验证并将其提交到应用商店。

==============================

免责声明:我以这种方式提交的应用仍然是“等待审核”。如果它因此被接受/拒绝,将在此处发布。

注意:那为什么要跳过这些箍呢?好吧,有几个原因:

  1. 因为我应该能够在我想要的任何环境中发展,该死的。

  2. OSX 10.6 上的 XCode 4.2 是支持 PowerPC 和 OSX 10.4 SDK 的最后一个 XCode 版本。如果像我一样,您必须支持必须在该平台上运行的旧桌面产品 - 您别无选择,只能坚持使用它,直到最后一个 PowerPC 用户放弃他的设备。这些人老而顽强。使用两台机器进行开发对我来说不是一个有吸引力的选择。

于 2013-03-07T16:32:17.573 回答