iphone - 是否可以在Snow Leopard上获得Xcode 4.2的iOS 6.1 SDK?

标签 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上工作,但是现在看来这是不可能的。有谁知道解决方法,还是我应该升级?

最佳答案

仍然可能。事实上,您可以使用SDK 6.1在Snow Leopard上使用XCode 4.2进行所有开发并将应用程序提交到Appstore。但是,您无法运行模拟器6.1(因此请使用真实设备)。

方法如下(几步缩写):

  • 您将需要找到一个包含Lion / Mountain Lion和XCode 4.5的系统,您将使用它们作为数据源(VMWare中有一个)。重要信息:您需要将运行ios 6.1的iOS设备连接到该系统,并在XCode 4.5组织器中打开它,以便XCode可以下载适当的符号。
  • 从具有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设备匹配的版本。
  • 您将需要使用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已经存在的事实:)

    方法如下:
  • 存档您的应用程序。在finder中打开存档目录(在该行上右键单击“在finder中显示”),打开Terminal,键入“cd”,将目录拖放到Terminal,然后按“Enter”。现在您位于该目录中,并且可以在其中使用文件。
  • cd产品/应用程序/yourapp.app
  • 将有一个名为Info.plist的文件-它是二进制格式。像这样将其转换为XML:
    plutil-转换xml1 Info.plist
  • 在您喜欢的编辑器中打开Info.plist。在以下条目中找到对sdk 5.0的引用(或SDK的二进制值),并替换为对6.1的引用:
    DTPlatformVersion:6.1
    DTP平台版本:10B141
    DTSDK内部版本:10B141
    DTSDK名称:iphoneos6.1

  • 如果您喜欢冒险,请替换XCode版本并建立值。我没有。
  • plutil -convert binary1 Info.plist
  • 现在您需要重新签名应用程序。应用程序二进制文件位于同一文件夹中,应命名为“yourapp”

  • 为此,您首先需要在签名期间要使用的嵌入式权利文件的副本。
  • 您可以从在XCode 4.5下创建的应用程序归档文件中复制该文件:查找文件名:archived-expanded-entitlements.xcent,复制到应用程序目录中(以防万一,不确定是否需要)
  • 从当前应用程序中提取它,如下所示:
    codesign -d --entitlements /tmp/entitlements.xml“yourapp”

  • 在文本编辑器中打开文件/tmp/entitlements.txt,并清除<?xml版本标签之前的所有奇怪内容,保存。
  • 现在找到分发证书的确切名称。您可以从许多地方复制它,但最好的方法是打开“钥匙串访问”应用程序,选择分发证书,双击以打开属性并复制“通用名”。它应该类似于“iPhone发行版:您的公司”
  • 仍在存档目录中,运行codesign,如下所示:
    首先删除当前签名文件,以防万一:

    rm -rf _CodeSignature

    然后运行:

    codesign -f -s“iPhone发行版:您的公司” --entitlements /tmp/entitlements.xml yourapp

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

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

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

    注意:那为什么要跳过这些箍呢?好吧,原因如下:
  • 因为我应该能够在所需的任何环境中进行开发,该死。
  • OSX 10.6上的
  • XCode 4.2是支持PowerPC和OSX 10.4 SDK的XCode的最新版本。如果像我一样,您必须支持必须在该平台上运行的旧台式机产品-您别无选择,只能坚持使用直到最后一个PowerPC用户放下设备。这些家伙老又顽强。对我来说,使用两台机器进行开发不是一个有吸引力的选择。
  • 关于iphone - 是否可以在Snow Leopard上获得Xcode 4.2的iOS 6.1 SDK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993504/

    相关文章:

    ios - 将许多图像添加到 xcode Assets 目录 - 如何管理每个图像的命名和 1x、2x、3x?

    ios - 当新版本的 pod 可用时, `pod update` 会覆盖我的代码更改吗?

    iphone - 非导出 iPhone 应用程序需要 CCATS 吗?

    ios - 为 iOS 设置 Frank 时出现问题

    iphone - Objective C 中的 int 问题

    ios - 使用 Firebase 存储下载检测网络中断

    Objective-C 中 Java 的 TreeMap 替代品?

    iphone - iPhone应用程序:如何使用MPMoviePlayerController在应用程序中播放Youtube视频

    iphone - 为什么检测触摸的速度越来越慢?

    iphone - 获取 UIView 当前的倾斜角度