是否有可能在Snow Leopard上获得适用于Xcode 4.2的iOS 6.1 SDK?

时间:2013-02-21 02:17:31

标签: iphone ios xcode osx-snow-leopard

我知道这可以按照这些步骤Is it possible to get the iOS 5.1 SDK for Xcode 4.2 on Snow Leopard?使用ios 6.0,但现在看来这是不可能的。有没有人知道解决方法或我应该升级?

1 个答案:

答案 0 :(得分: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<&lt;您的目录名称&gt;&gt;

    注意:特定版本的设备支持目录可能不同(即&#34; 6.1.2(10B146)&#34;或更高版本),请在以下所有说明中使用与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具有保留时间戳,符号链接等的优点,如果有的话。

    复制后,删除链接&#34;最新&#34;在设备支持目录中并重新链接到&#34; 6.1(10B141)&#34;像这样:ln -s&#34; 6.1(10B141)&#34;最新

  4. ============================================== < / p>

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

    • 在组织者中添加6.1设备,并在其上运行和调试代码

    • 选择6.1 SDK作为&#34;最新&#34;为您的项目和建立反对它。

    ============================================== < / p>

    但是,如果你想支持4&#34; iPhone 5屏幕(通过添加Default-568h@2x.png启动映像)您仍然无法提交以此方式构建到Appstore的应用程序。 XCode 4.2将SDK 5.0嵌入到应用程序归档中的一些元数据中,因此看起来就像应用程序是针对5.0 sdk构建的。 Appstore积极拒绝包含4&#34;屏幕支持,不是针对6.0或更高版本的SDK构建的。

    所以,你必须采取一些手工工作来告诉Appstore已经存在的事情:)

    以下是:

    1. 归档您的申请。在Finder中打开存档目录(右键单击该行,&#34;在finder&#34中显示;),打开终端,键入&#34; cd&#34;,将目录拖放到终端并按&#34 ;输入&#34 ;.现在您在该目录中,可以使用那里的文件。

    2. cd Products / Applications / 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

    5. 如果您有冒险精神,请替换XCode版本和构建值。我没有。

      1. plutil -convert binary1 Info.plist

      2. 现在您需要重新签名该应用程序。应用程序二进制文件位于同一文件夹中,应命名为&#34; yourapp&#34;

      3. 为此,您首先需要在签名期间使用的嵌入式授权文件的副本。

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

        • 从当前应用程序中提取它,如下所示: codesign -d --entitlements /tmp/entitlements.xml" yourapp&#34;

        在文本编辑器中打开文件/tmp/entitlements.txt并清理之前发生的任何奇怪的事情&lt; ?xml版本标签,保存。

        1. 现在找到您的分发证书的确切名称。您可以从多个地方复制它,但最好是打开Keychain Access应用程序,选择分发证书,双击以打开属性并复制&#34;常用名称&#34;。它应该类似于&#34; iPhone发行版:您的公司&#34;

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

          rm -rf _CodeSignature

          然后运行:

          codesign -f -s&#34; iPhone发行版:贵公司&#34; --entitlements /tmp/entitlements.xml yourapp

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

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

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

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

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

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