在Mountain Lion上将模拟器SDK 4.3安装到Xcode 4.4

58

我想在Mountain Lion (OS X 10.8)上的Xcode 4.4中安装SDK 4.3,但当我从Xcode 4.1安装了4.3 SDK包并从Xcode 4.4启动模拟器时,模拟器告诉我它无法找到SDK。

SDK可能需要重新安装,这意味着它无法运行!Xcode 4.4 GM出了什么问题?

有没有关于如何解决这种问题的想法?


我只能使用 iPhone 模拟器 5.1 来运行由 SDK 4.3 编译的应用程序...这太荒谬了,为什么 Mountain Lion GM 不能运行 Xcode 4.3?~!!!!!!!! - Samblg
Nop,Xcode 4.4 删除了iOS 4.3模拟器,仅保留对4.0-4.1设备的调试支持。 - Jack Gao
请检查我的答案 <br> http://stackoverflow.com/questions/16353099/run-app-using-xcode-4-6-in-ios-4-3-simulator/16353379#16353379 - Piyush Dubey
5个回答

21

我已经查过了,这是苹果故意的行为。

以下是 Xcode 下载位置的缓存文件(已编辑):

~/Library/Caches/com.apple.dt.Xcode/Downloads/eded78df8bfabaf6560841d10cf8e53766f74f28.dvtdownloadableindex

<dict>
    <key>source</key>
    <string>http://adcdownload.apple.com/ios/ios_simulator__resigned/ios_43_simulator.dmg</string>
    <key>identifier</key>
    <string>Xcode.SDK.iPhoneSimulator.4.3</string>
    <key>name</key>
    <string>iOS 4.3 Simulator</string>
    <key>userInfo</key>
    <dict>
        <key>InstalledIfAllPathsArePresent</key>
        <array>
            <string>$(DEVELOPER)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk</string>
        </array>
        <key>ActivationPredicate</key>
        <string>$MAC_OS_X_VERSION < "10.8.0"</string>
    </dict>
</dict>
请注意 "ActivationPredicate: $MAC_OS_X_VERSION < 10.8.0" 的明确设置,这个设置在其他模拟器软件包中不存在。
我试图编辑该文件,但只要Xcode打开,它就被另一个版本替换了。而且我无法手动下载4.3模拟器DMG:ADG网站会抛出"会话已过期"错误。
看起来苹果公司在4.3模拟器上存在问题,并决定禁用它。这对于需要支持此版本的人来说很糟糕。

2
你可以通过执行“chgflags -vv uchg *.dvtdownloadableindex”来防止Xcode启动时替换文件(将uchg更改为nouchg以使文件可编辑,-vv只是设置详细模式以便您查看更改)。然而,Xcode似乎仍然忽略4.3模拟器... - Dave Wood
对我来说,这在 BBEdit 中打开了,但无法在 Vim 中打开。 - Nick

16
我向苹果提出了一份DTS,并确认他们不支持在Mountain Lion上使用iOS4模拟器。他们建议在真实设备上进行测试。

谢谢。我的测试设备也没有成功,因为Xcode(4.5)找不到它。我想我会在备份分区或虚拟机上进行测试。 - brainray
备份分区要小心。通过Appstore更新Xcode(4.4)时,更新的是Lion备份分区上的Xcode,而不是Mountain Lion分区上的Xcode。在更新期间,我最终设置了chmod 000 /Aplication/xcode.app来解决问题。 - Olaf
1
@brainray Xcode 4.5已经完全废弃了iOS 4.2.1及更早版本的操作系统,以及使用armv6架构的任何设备(iPhone 2G、iPhone 3G和前两代iPod Touch)。这与对iPhone模拟器的支持无关。因此,请保留Xcode 4.4。 - Ivan Vučica
@Olaf:谢谢,是的,我知道这个。我会将备份断开连接,但还是感谢你的提醒。 - brainray
他们不支持Mountain Lion上的4.3版本,也不让我将iPod从4.2升级到4.3。在这种情况下,我该如何在真实设备上测试它? - Ilker Baltaci

10

看起来这是一个关于Lion和Mountain Lion的问题。
我今天将几台机器升级到Xcode 4.4。两个旧的Lion系统在xcode|preferences|downloads中提供安装iOS 4.3和5.0模拟器的选项。而更新的Mountain Lion系统只提供iOS 5.0模拟器。


3
我也看到了这个情况——刚刚在Lion上更新到XCode 4.4,iOS 4.3模拟器仍然可以在偏好设置->下载中下载。 - jtomson

9
我也遇到了这种令人烦恼的情况。最近,我设法添加了一个编译时检查,以检查API是否与旧版本的SDK兼容。不幸的是,你不能通过模拟器测试旧版本,但这仍然是一件好事。
所以这是我做的:
首先,我需要获取我想要的旧模拟器SDK。我可以通过下载包含所需SDK的旧Xcode 3版本轻松获得。Xcode 3.2.6带有iOS SDK 4.3,链接在这里
我接下来需要安装SDK。这并不太难,所以我在这里不会解释太多。但是SDK存储在“Packages”文件夹中。在早期的Xcode 3版本中,这个文件夹是清晰可见的,但在后来的版本中(如Xcode 3.2.6),它被隐藏起来了。您可以通过终端轻松打开它。记得安装模拟器SDK,而不是常规SDK。此外,在Xcode 4.3中发生的更改中,开发者文件夹移到了Xcode.app内部,因此我需要将SDK安装到tmp文件夹中,并自己将SDK移动到Xcode.app中。如果我已经打开了Xcode,则需要重新启动Xcode。
之后,我在我的项目中复制了“debug”配置,并将其命名为“iOS 4.3 API Check”或类似的名称 - 并不重要。然后,我将这个新配置的Base SDK更改为我安装的旧SDK。虽然我安装的SDK没有列出来,但我必须选择“other”,然后输入“iphonesimulator4.3”。
最后,当我需要检查旧版本的SDK时,我将项目方案中的Run <appname>.app配置更改为我的iOS 4.3 API Check配置。这样就可以进行iOS 4.3的编译时检查了。

3
要轻松进入“Packages”文件夹,请在Finder窗口中按Command-Shift-G,然后输入“/Volumes/Xcode and iOS SDK/Packages”。 - Pedro
1
新安装的SDK移动到的目标位置是... /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/De‌​veloper/SDKs。 - Pedro

1
升级到ML后,我有一个下载iOS 4.3模拟器的选项。但是它没有起作用!在调试时出现了错误。当我尝试手动切换模拟器版本时,它卡住了。
如果我知道的话,我可能会等待解决方案而不是升级。

2
我在升级到ML之前也升级到了Xcode 4.4。我肯定有iOS 4.3模拟器。但现在,我在ML上找不到它可以下载了。然而,我仍然可以尝试在4.3模拟器中模拟应用程序。当我说“尝试”时,我的意思是它不会运行。SimulatorBridge进程将会噎住并占用所有CPU时间,其后就会出现一个错误信息:“iOS模拟器找不到SDK。SDK可能需要重新安装。” - XCool
苹果公司有关于这个问题的官方声明吗? - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接