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

Lan*_*don 1 iphone xcode osx-snow-leopard ios

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

Han*_*Han 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 <<目录的名称>>

    注意:特定版本的设备支持目录可能不同(即"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具有保留时间戳,符号链接等的优点,如果有的话.

    复制后,删除Device Support目录中的"Latest"链接并重新链接到"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 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

如果您有冒险精神,请替换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发行版:你的公司"

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

    rm -rf _CodeSignature

    然后运行:

    codesign -f -s"iPhone发行版:贵公司"--entitlements /tmp/entitlements.xml yourapp

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

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

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

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

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

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