开发者

How to update iPhone SDK without having to re-download Xcode?

Silly question - Is there a way to download t开发者_如何学Gohe iPhone SDK without Xcode when Apple releases an update?


As far as I understand you cannot download the SDK separately - and even if you could, I wouldn't recommend it. Using the bundled SDK+Xcode release is the best idea in my opinion, as it will be working for you out of the box. I know it's annoying having to download such a large amount of data for an SDK (not all of us have 100mbps pipes to play with!) but for ease of development, it's the way I'd recommend you go.


For those who have installed Xcode but do not have the iOS SDK, here is the way to download it without re-downloading Xcode: Got to

Xcode > Preferences > Downloads

and select whatever you want to install.


Yes, contrary to what others say this is somewhat possible.

Method One

With this method you can download any iOS or OSX SDK and install it to XCode. Download the desired SDK, bundled with XCode, from developer.apple.com/downloads

How to update iPhone SDK without having to re-download Xcode?

Once the package is done downloading mount the disk image. Right on the XCode application in the image and click on Show Package Contents. Navigate to:

/Contents/Developer/Platforms/

the iOS SDKs are in:

iPhoneOS.platform/Developer/SDKs/

How to update iPhone SDK without having to re-download Xcode?

the OSX SDKs are in:

MacOSX.platform/Developer/SDKs/

and the iOS simulator SDKs are in:

iPhoneSimulator.platform/Developer/SDKs/

To install one of the SDKs simply find XCode.app and place the SDK in the appropriate folder of the XCode.app package.

Method Two

With this method you can only dowload iOS simulators and iOS simulator SDKs.

Open XCode and in the menu bar click on XCode > Preferences. In the preferences dialog select the downloads tab and select the simulators you would like to dowload.

How to update iPhone SDK without having to re-download Xcode?


Unfortunately, no. Apple only provides the SDK as a bundled package.


They quite often include fixes and updates in the bundled version of xcode. I guess this is a good way for them to "force" people to use the latest point release of xcode.


The answer to the question being asked is, I think, that it is not possible. However, there is a highly related question (with a more interesting answer), how to use different/nonresident iOS SDKs with a particular version of Xcode? This does require downloading some other Xcode (to gain access to some other iOS SDK).

This issue has been a passion of mine for approximately the last 10 years, since I enjoy the stability of (or, at least, predictability of known misbehaviors in) a familiar IDE (i.e. Xcode) version. I last investigated the solution to this issue 3 years ago, and it was slightly more involved than the solution from 5 or so years before that. Here are my notes, from 2017:

SDK

  • What the development environment treats as the target device, e.g. compilation, IDE behaviors like displaying interface definitions/headers and code completion).
  • The "Base SDK" (in the "Build Settings" of a target in a project, which is possibly contained by a workspace) setting defaults to "Latest iOS", which resolves to a specific iOS version based on the contents of the Xcode app package directory
    • <app-package>/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
    • A version of the Xcode application will ship (via Mac App Store or a disk image from developer.apple.com) with only one SDK. The above path will contain a directory named iPhoneOS.sdk and an alias (symbolic link) targeting this directory that is named according to the SDK version (iPhoneOS10.0.sdk -> iPhoneOS.sdk)
  • No application-provided means (i.e. preference of other UI affordance) for altering this characteristic.
    • While the plural form of the directory name (SDKs) seems like a vexing/mocking choice, you can modify the contents of this intra-app-package directory to include symbolic links to SDKs contained in other versions of Xcode.
    • This appears to only work in the forward direction, i.e. using a newer SDK in an older Xcode (e.g. iOS 10 SDK in Xcode 7). This direction has always met my historical needs. Only recently have I attempted to go backwards (make a newer Xcode use an older SDK, e.g. iOS 8.4 SDK in Xcode 7), and I discovered that recent Xcode installs (versions 8.0 and 7.3.1 on a 10.11.6 system) ignore symbolic links to older SDKs (i.e. they do not appear in a target's Base SDK popup menu – screen shot of Xcode 7.3.1 ignoring the iOS 8.4 SDK symlink).
      • UPDATE (new details): I double-checked my home machine (which I had used for additional multi-SDK experiments) and found that older SDKs do appear in the Base SDK popup. Mysterious! This is a 10.10.5 system, running Xcode 7.2.1 (which ships with iOS 9.2 SDK), editing a different (non-iovation) Xcode project, and the iOS 8.2 SDK (from Xcode 6.2) will display in the popup. Obviously, there are numerous differences between the setup, and I have no idea which variables cause the difference in behavior.
        • MYSTERY SOLVED: Recent Xcode installs (the aforementioned versions 8.0 and 7.3.1) include a MinimumSDKVersion key in the …/iPhoneOS.platform/Info.plist file. This key appears to be set to the SDK that ships with Xcode (i.e. inside the app package), and, consequently, blocks Xcode from recognizing older SDKs. I was first keyed onto this minimum-version mechanism from the xcodebuild command-line tool, which was printing out, "Skipped SDK <sdk-path>; its version (8.4) is below required minimum (10.0) for the iphoneos platform."
        • Editing MinimumSDKVersion plist key (e.g. making it 8.0) allows for the display and selection of older SDKs!
  • The fact that Apple rigidly binds SDK version to Xcode version has always bothered me. Oftentimes, I would prefer to add an SDK to an existing Xcode install, rather than updating the entire Xcode environment simply to gain support for a new version of iOS. Admittedly, bringing everything along in lock-step fashion (app, tools, device and OS support) does seem like it should simplify support issues for Apple, and, perhaps, they believe this conjoined progression also simplifies things for 3rd party devs (no options to fret over, just update the app).
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜