xcode-install 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 692e7a2d0f5405ba8f1f5d8aed39cc36be68cd91
4
- data.tar.gz: af0d1cf4e618a42dc06c540c8c050340757cbcb4
3
+ metadata.gz: 3a3da9083e24c5efff45fe7e5af3bdb3a21b2d4a
4
+ data.tar.gz: 4832329bfd097831a4158324adeffef44fcd38a0
5
5
  SHA512:
6
- metadata.gz: 490d574a7dbfcec4e9c2d7193deb91ed3fe3b29a3497b1b364fe33824c8d75e41cd6e90ff210f5d4f203819b46f760a353c72b618113356351f0d19c7eb572b2
7
- data.tar.gz: cf9dcb687e61e0387ccae70536259371fcd6018b2b1c2d61083310fb6e9a89165e156a418915366627597cc16784d2b151b38572cb4637f7f98c94ce49b41131
6
+ metadata.gz: 5ad3d7d6ff95a844628b3ddd2663fc23f1eb6fc797e9b320ea999b1146ee46bf133969db84f49aba5c25b5fe89590ec37511fd73974d0c99ca033dadb7ceebab
7
+ data.tar.gz: 66ebd9925cced0aacdf88839bb20c389471a187be4d0b51913b7c5d8065e1eea3e67ab28f25041a6466f8bd82f2028977e73e3c72ef918a1d9282aa7cb506e37
data/README.md CHANGED
@@ -1,9 +1,6 @@
1
1
  # Xcode::Install
2
2
 
3
- [![Build Status](http://img.shields.io/travis/neonichu/xcode-install/master.svg?style=flat)](https://travis-ci.org/neonichu/xcode-install)
4
- [![Coverage Status](https://coveralls.io/repos/neonichu/xcode-install/badge.svg)](https://coveralls.io/r/neonichu/xcode-install)
5
3
  [![Gem Version](http://img.shields.io/gem/v/xcode-install.svg?style=flat)](http://badge.fury.io/rb/xcode-install)
6
- [![Code Climate](http://img.shields.io/codeclimate/github/neonichu/xcode-install.svg?style=flat)](https://codeclimate.com/github/neonichu/xcode-install)
7
4
 
8
5
  Install and update your Xcodes automatically.
9
6
 
@@ -30,7 +27,7 @@ $ rm -f domain_name-0.5.99999999.gem
30
27
  ## Usage
31
28
 
32
29
  XcodeInstall needs environment variables with your credentials to access the Apple Developer
33
- Center, they are stored using the [CredentialsManager][1] of [fastlane][2]:
30
+ Center, they are stored using the [credentials_manager][1] of [fastlane][2]:
34
31
 
35
32
  ```
36
33
  XCODE_INSTALL_USER
@@ -50,15 +47,20 @@ $ xcversion list
50
47
 
51
48
  Installed versions will be omitted and by default, only the latest major version is listed.
52
49
 
50
+ To list all available versions run
51
+ ```
52
+ $ xcversion list --all
53
+ ```
54
+
53
55
  To install a certain version, simply:
54
56
 
55
57
  ```
56
- $ xcversion install 6.3
58
+ $ xcversion install 8
57
59
  ########################################################### 82.1%
58
60
  ######################################################################## 100.0%
59
61
  Please authenticate for Xcode installation...
60
62
 
61
- Xcode 6.3
63
+ Xcode 8
62
64
  Build version 6D570
63
65
  ```
64
66
 
@@ -131,15 +133,17 @@ project, especially [@henrikhodne][6] and [@lacostej][7] for making XcodeInstall
131
133
 
132
134
  ## Contributing
133
135
 
134
- 1. Fork it ( https://github.com/neonichu/xcode-install/fork )
136
+ 1. Fork it ( https://github.com/KrauseFx/xcode-install/fork )
135
137
  2. Create your feature branch (`git checkout -b my-new-feature`)
136
138
  3. Commit your changes (`git commit -am 'Add some feature'`)
137
139
  4. Push to the branch (`git push origin my-new-feature`)
138
140
  5. Create a new Pull Request
139
141
 
140
- ## Help needed
142
+ ## License
143
+
144
+ This project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file.
141
145
 
142
- Follow [@NeoNacho](https://twitter.com/NeoNacho) to help me beat [@orta](https://twitter.com/orta) in followers count.
146
+ > This project and all fastlane tools are in no way affiliated with Apple Inc or Google. This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs. All fastlane tools run on your own computer or server, so your credentials or other sensitive information will never leave your own computer. You are responsible for how you use fastlane tools.
143
147
 
144
148
  [1]: https://github.com/fastlane/credentials_manager#using-environment-variables
145
149
  [2]: http://fastlane.tools
@@ -0,0 +1 @@
1
+ bin/xcversion
@@ -19,7 +19,7 @@ module XcodeInstall
19
19
  FileUtils.touch(cli_placeholder_file)
20
20
  # find the CLI Tools update
21
21
  product = `softwareupdate -l | grep "\*.*Command Line" | head -n 1 | awk -F"*" '{print $2}' | sed -e 's/^ *//' | tr -d '\n'`
22
- `softwareupdate -i "#{product}" -v`
22
+ `softwareupdate --verbose -i "#{product}"`
23
23
  FileUtils.rm(cli_placeholder_file)
24
24
  end
25
25
  end
@@ -1,3 +1,3 @@
1
1
  module XcodeInstall
2
- VERSION = '2.0.0'.freeze
2
+ VERSION = '2.1.0'.freeze
3
3
  end
data/lib/xcode/install.rb CHANGED
@@ -72,14 +72,28 @@ module XcodeInstall
72
72
  end
73
73
 
74
74
  def install_dmg(dmg_path, suffix = '', switch = true, clean = true)
75
+ archive_util = '/System/Library/CoreServices/Applications/Archive Utility.app/Contents/MacOS/Archive Utility'
75
76
  prompt = "Please authenticate for Xcode installation.\nPassword: "
76
77
  xcode_path = "/Applications/Xcode#{suffix}.app"
77
78
 
78
79
  if dmg_path.extname == '.xip'
79
- `xar -x -f #{dmg_path} --exclude 'Metadata'`
80
- `sudo -p "#{prompt}" ditto -x Content /Applications`
81
- `sudo -p "#{prompt}" mv /Applications/Xcode-beta.app "#{xcode_path}"`
82
- FileUtils.rm_f('Content')
80
+ `'#{archive_util}' #{dmg_path}`
81
+ xcode_orig_path = dmg_path.dirname + 'Xcode.app'
82
+ xcode_beta_path = dmg_path.dirname + 'Xcode-beta.app'
83
+ if Pathname.new(xcode_orig_path).exist?
84
+ `sudo -p "#{prompt}" mv "#{xcode_orig_path}" "#{xcode_path}"`
85
+ elsif Pathname.new(xcode_beta_path).exist?
86
+ `sudo -p "#{prompt}" mv "#{xcode_beta_path}" "#{xcode_path}"`
87
+ else
88
+ out = <<-HELP
89
+ No `Xcode.app(or Xcode-beta.app)` found in XIP. Please remove #{dmg_path} if you
90
+ suspect a corrupted download or run `xcversion update` to see if the version
91
+ you tried to install has been pulled by Apple. If none of this is true,
92
+ please open a new GH issue.
93
+ HELP
94
+ $stderr.puts out.tr("\n", ' ')
95
+ return
96
+ end
83
97
  else
84
98
  mount_dir = mount(dmg_path)
85
99
  source = Dir.glob(File.join(mount_dir, 'Xcode*.app')).first
@@ -123,7 +137,11 @@ HELP
123
137
  dmg_path = get_dmg(version, progress, url)
124
138
  fail Informative, "Failed to download Xcode #{version}." if dmg_path.nil?
125
139
 
126
- install_dmg(dmg_path, "-#{version.split(' ')[0]}", switch, clean) if install
140
+ if install
141
+ install_dmg(dmg_path, "-#{version.split(' ')[0]}", switch, clean)
142
+ else
143
+ puts "Downloaded Xcode #{version} to '#{dmg_path}'"
144
+ end
127
145
 
128
146
  open_release_notes_url(version) unless url
129
147
  end
@@ -257,7 +275,7 @@ HELP
257
275
  a.date_modified <=> b.date_modified
258
276
  end
259
277
 
260
- xcodes.select { |x| x.url.end_with?('.dmg') }
278
+ xcodes.select { |x| x.url.end_with?('.dmg') || x.url.end_with?('.xip') }
261
279
  end
262
280
 
263
281
  def list_versions
@@ -267,7 +285,7 @@ HELP
267
285
  def prereleases
268
286
  body = spaceship.send(:request, :get, '/download/').body
269
287
 
270
- links = body.scan(%r{<a.+?href="(.+?.dmg)".*>(.*)</a>})
288
+ links = body.scan(%r{<a.+?href="(.+?\.(dmg|xip))".*>(.*)</a>})
271
289
  links = links.map do |link|
272
290
  parent = link[0].scan(%r{path=(/.*/.*/)}).first.first
273
291
  match = body.scan(/#{Regexp.quote(parent)}(.+?.pdf)/).first
@@ -277,10 +295,20 @@ HELP
277
295
  link + [nil]
278
296
  end
279
297
  end
280
- links = links.map { |pre| Xcode.new_prerelease(pre[1].strip.gsub(/.*Xcode /, ''), pre[0], pre[2]) }
298
+ links = links.map { |pre| Xcode.new_prerelease(pre[2].strip.gsub(/.*Xcode /, ''), pre[0], pre[3]) }
281
299
 
282
300
  if links.count == 0
283
- version = body.scan(/Xcode.* beta/).last.sub(/<.*?>/, '').gsub(/.*Xcode /, '')
301
+ rg = %r{platform-title.*Xcode.* beta.*<\/p>}
302
+ scan = body.scan(rg)
303
+
304
+ if scan.count == 0
305
+ rg = %r{Xcode.* GM.*<\/p>}
306
+ scan = body.scan(rg)
307
+ end
308
+
309
+ return [] if scan.empty?
310
+
311
+ version = scan.first.gsub(/<.*?>/, '').gsub(/.*Xcode /, '')
284
312
  link = body.scan(%r{<button .*"(.+?.xip)".*</button>}).first.first
285
313
  notes = body.scan(%r{<a.+?href="(/go/\?id=xcode-.+?)".*>(.*)</a>}).first.first
286
314
  links << Xcode.new(version, link, notes)
@@ -440,12 +468,18 @@ HELP
440
468
  end
441
469
 
442
470
  def downloadable_index_url
443
- @downloadable_index_url ||= "https://devimages.apple.com.edgekey.net/downloads/xcode/simulators/index-#{bundle_version}-#{uuid}.dvtdownloadableindex"
471
+ @downloadable_index_url ||= begin
472
+ if Gem::Version.new(version) >= Gem::Version.new('8.1')
473
+ "https://devimages-cdn.apple.com/downloads/xcode/simulators/index-#{bundle_version}-#{uuid}.dvtdownloadableindex"
474
+ else
475
+ "https://devimages.apple.com.edgekey.net/downloads/xcode/simulators/index-#{bundle_version}-#{uuid}.dvtdownloadableindex"
476
+ end
477
+ end
444
478
  end
445
479
 
446
480
  def approve_license
447
481
  license_path = "#{@path}/Contents/Resources/English.lproj/License.rtf"
448
- license_id = IO.read(license_path).match(/^EA\d{4}/)
482
+ license_id = IO.read(license_path).match(/\bEA\d{4}\b/)
449
483
  license_plist_path = '/Library/Preferences/com.apple.dt.Xcode.plist'
450
484
  `sudo rm -rf #{license_plist_path}`
451
485
  `sudo /usr/libexec/PlistBuddy -c "add :IDELastGMLicenseAgreedTo string #{license_id}" #{license_plist_path}`
@@ -0,0 +1,317 @@
1
+
2
+
3
+
4
+ <!DOCTYPE html>
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
8
+ <meta name="Author" content="Apple Inc." />
9
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
10
+ <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, IE=9">
11
+ <link rel="shortcut icon" href="/favicon.ico" />
12
+ <link rel="icon" href="/favicon.ico" />
13
+ <link rel="mask-icon" href="/apple-logo.svg" color="#333333">
14
+
15
+ <link rel="stylesheet" href="/assets/styles/globalnav.css" type="text/css" />
16
+ <link rel="stylesheet" href="/assets/styles/global.css" type="text/css" />
17
+
18
+ <script src="https://devimages.apple.com.edgekey.net/assets/scripts/lib/jquery/jquery-1.11.0.min.js"></script>
19
+ <script src="https://devimages.apple.com.edgekey.net/assets/scripts/lib/jquery/jquery.retinate.js" type="text/javascript" charset="utf-8"></script>
20
+ <!--[if lt IE 9]>
21
+ <link rel="stylesheet" href="/assets/styles/oldie.css" type="text/css" />
22
+ <script src="/assets/scripts/html5.js"></script>
23
+ <![endif]-->
24
+ <script src="/assets/scripts/lg-search.js"></script>
25
+ <script src="/assets/scripts/global.js"></script>
26
+
27
+ <link rel="stylesheet" href="https://www.apple.com/wss/fonts?family=Myriad+Set+Pro&v=2" type="text/css" />
28
+
29
+ <title>Download - Apple Developer</title>
30
+ <meta name="omni_page" content="Download - Apple Developer">
31
+ <link rel="stylesheet" href="/download/styles/download.css" type="text/css" />
32
+
33
+
34
+ </head>
35
+ <body>
36
+ <input type="checkbox" id="ac-gn-menustate" class="ac-gn-menustate">
37
+ <nav id="ac-globalnav" class="no-js" role="navigation" aria-label="Global Navigation" data-hires="false" data-analytics-region="global nav" lang="en-US">
38
+ <div class="ac-gn-content">
39
+ <ul class="ac-gn-header">
40
+ <li class="ac-gn-item ac-gn-menuicon"> <label class="ac-gn-menuicon-label" for="ac-gn-menustate" aria-hidden="true">
41
+ <span class="ac-gn-menuicon-bread ac-gn-menuicon-bread-top">
42
+ <span class="ac-gn-menuicon-bread-crust ac-gn-menuicon-bread-crust-top"></span>
43
+ </span>
44
+ <span class="ac-gn-menuicon-bread ac-gn-menuicon-bread-bottom">
45
+ <span class="ac-gn-menuicon-bread-crust ac-gn-menuicon-bread-crust-bottom"></span>
46
+ </span>
47
+ </label>
48
+ <a href="#ac-gn-menustate" class="ac-gn-menuanchor ac-gn-menuanchor-open" id="ac-gn-menuanchor-open"> <span class="ac-gn-menuanchor-label">Open Menu</span> </a>
49
+ <a href="#" class="ac-gn-menuanchor ac-gn-menuanchor-close" id="ac-gn-menuanchor-close"> <span class="ac-gn-menuanchor-label">Close Menu</span> </a>
50
+ </li>
51
+ <li class="ac-gn-item ac-gn-apple">
52
+ <a class="ac-gn-link ac-gn-link-apple" href="/" id="ac-gn-firstfocus-small"> <span class="ac-gn-link-text">Apple Developer</span> </a>
53
+ </li>
54
+ <li class="ac-gn-item ac-gn-bag ac-gn-bag-small" id="ac-gn-bag-small">
55
+ <a class="ac-gn-link ac-gn-link-bag" href="/account/"> <span class="ac-gn-link-text">Account</span> <span class="ac-gn-bag-badge"></span> </a> <span class="ac-gn-bagview-caret ac-gn-bagview-caret-large"></span> </li>
56
+ </ul>
57
+ <ul class="ac-gn-list">
58
+ <li class="ac-gn-item ac-gn-apple">
59
+ <a class="ac-gn-link ac-gn-link-apple" href="/" id="ac-gn-firstfocus"> <span class="ac-gn-link-text">Apple Developer</span> </a>
60
+ </li>
61
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-discover">
62
+ <a class="ac-gn-link" href="/discover/"> <span>Discover</span> </a>
63
+ </li>
64
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-design">
65
+ <a class="ac-gn-link" href="/design/"> <span>Design</span> </a>
66
+ </li>
67
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-develop">
68
+ <a class="ac-gn-link" href="/develop/"> <span>Develop</span> </a>
69
+ </li>
70
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-distribute">
71
+ <a class="ac-gn-link" href="/distribute/"> <span>Distribute</span> </a>
72
+ </li>
73
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-support">
74
+ <a class="ac-gn-link" href="/support/"> <span>Support</span> </a>
75
+ </li>
76
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-account">
77
+ <a class="ac-gn-link" href="/account/"> <span>Account</span> </a>
78
+ </li>
79
+ <li class="ac-gn-item ac-gn-item-menu ac-gn-search" role="search">
80
+ <a id="ac-gn-search-button" class="ac-gn-link ac-gn-link-search" href="/search/" aria-label="Search developer.apple.com"> <span class="ac-gn-search-placeholder" aria-hidden="true">Search</span> </a>
81
+ </li>
82
+ </ul>
83
+ <aside id="ac-gn-searchview" class="ac-gn-searchview" role="search" data-analytics-region="search">
84
+ <div class="ac-gn-searchview-content">
85
+ <form id="ac-gn-searchform" class="ac-gn-searchform" action="/search/" method="get">
86
+ <div class="ac-gn-searchform-wrapper"> <input id="ac-gn-searchform-input" class="ac-gn-searchform-input" type="text" name="q" placeholder="Search" data-placeholder-long="Search for documentation, videos, and more" autocorrect="off" autocapitalize="off" autocomplete="off" spellcheck="false" /> <button id="ac-gn-searchform-submit" class="ac-gn-searchform-submit" type="submit" disabled aria-label="Submit"></button> <button id="ac-gn-searchform-reset" class="ac-gn-searchform-reset" type="reset" disabled aria-label="Clear Search"></button> </div>
87
+ </form>
88
+ <aside id="ac-gn-searchresults" class="ac-gn-searchresults" data-string-quicklinks="Quick Links" data-string-suggestions="Suggested Searches" data-string-noresults="Hit enter to search.">
89
+
90
+ </aside>
91
+ </div> <button id="ac-gn-searchview-close" class="ac-gn-searchview-close" aria-label="Close Search">
92
+ <span class="ac-gn-searchview-close-wrapper">
93
+ <span class="ac-gn-searchview-close-left"></span>
94
+ <span class="ac-gn-searchview-close-right"></span>
95
+ </span>
96
+ </button> </aside>
97
+ </div>
98
+ </nav>
99
+ <div id="ac-gn-curtain" class="ac-gn-curtain"></div>
100
+ <div id="ac-gn-placeholder" class="ac-nav-placeholder"></div>
101
+ <script type="text/javascript" src="/assets/scripts/ac-globalnav.built.js"></script>
102
+
103
+ <div id="top">
104
+ <!-- SiteCatalyst code version: H.8. Copyright 1997-2006 Omniture, Inc. -->
105
+ <script type="text/javascript">
106
+ /* RSID: */
107
+ var s_account="appleglobal,appleusdeveloper"
108
+ </script>
109
+
110
+ <script type="text/javascript" src="https://www.apple.com/metrics/scripts/s_code_h.js"></script>
111
+ <script type="text/javascript">
112
+ s.pageName= AC && AC.Tracking && AC.Tracking.pageName();
113
+ s.channel="www.us.developer"
114
+
115
+ /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
116
+ var s_code=s.t();if(s_code)document.write(s_code)</script>
117
+ <!-- End SiteCatalyst code version: H.8. -->
118
+ </div>
119
+
120
+ <main id="main" class="main" role="main">
121
+
122
+ <section class="grid">
123
+ <section class="row">
124
+ <section class="col-100">
125
+ <nav class="logout-bar">
126
+ <ul>
127
+ <li>Nicholas Cobb</li>
128
+ <li> | </li>
129
+ <li><a href="/logout/?return=%2Fios%2Fdownload%2Fwwdc%2F" class="sign-out">Sign out</a></li>
130
+ </ul>
131
+ </nav>
132
+ <h1 class="text-center">Downloads</h1>
133
+ <p class=" text-center center width-75 intro">Get the latest beta releases of Xcode, iOS, macOS, watchOS, tvOS, and more.</p>
134
+ </section>
135
+ </section>
136
+ </section>
137
+
138
+ <!--END PAY WALL -->
139
+ <div class="grid">
140
+ <div class="row compact">
141
+ <section class="col-20 padding-top">
142
+ <img class="center" src="/assets/elements/icons/128x128/xcode6-beta.png" width="128" height="128" alt="" />
143
+ </section>
144
+ <section class="col-60 padding-top">
145
+ <h4>Xcode 8 beta 2</h4>
146
+ <p>
147
+ </p>
148
+ <ul class="links small">
149
+ <li class="download"><a href="/services-account/download?path=/Developer_Tools/Xcode_8_beta_2/Xcode_8_beta_2.xip">Download Xcode 8 beta 2</a></li>
150
+ </ul>
151
+ <ul class="links small">
152
+ <li class="document"><a href="/go/?id=xcode-8-beta-rn">Release Notes</a></li>
153
+ </ul>
154
+ </section>
155
+ <section class="col-20 text-right">
156
+ <p class="sosumi no-margin-bottom margin-top-small">Build</p>
157
+ <p class="smaller lighter">8S162m</p>
158
+ <p class="sosumi no-margin-bottom margin-top-small">Posted Date</p>
159
+ <p class="smaller lighter no-margin">Jul 5, 2016</p>
160
+ <p class="sosumi no-margin-bottom margin-top-small">SDKs</p>
161
+ <p class="smaller lighter no-margin">iOS 10</p>
162
+ <p class="smaller lighter no-margin">macOS 10.12</p>
163
+ <p class="smaller lighter no-margin">watchOS 3</p>
164
+ <p class="smaller lighter no-margin">tvOS 10</p>
165
+ </section>
166
+ </div>
167
+
168
+ <div class="row divider-top compact">
169
+ <section class="col-20 padding-top">
170
+ <img class="center" src="/assets/elements/icons/128x128/xcode6.png" width="128" height="128" alt="" />
171
+ </section>
172
+ <section class="col-60 padding-top">
173
+ <h4>Xcode 7.3.1</h4>
174
+ <p>This release includes the Xcode IDE, Swift 2 compiler, Instruments, Simulator, and latest SDKs for OS&nbsp;X, iOS, tvOS and watchOS.</p>
175
+ <p><a class="more" href="https://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12">View in the Mac App Store</a></p>
176
+ <ul class="links small">
177
+ <li class="document"><a href="/go/?id=xcode-7.3.1-rn">Xcode 7.3.1 Release Notes</a></li>
178
+ </ul>
179
+ </section>
180
+ <section class="col-20 text-right">
181
+ <p class="sosumi no-margin-bottom margin-top-small">Build</p>
182
+ <p class="smaller lighter">7D1014</p>
183
+ <p class="sosumi no-margin-bottom margin-top-small">Posted Date</p>
184
+ <p class="smaller lighter no-margin">May 3, 2016</p>
185
+ <p class="sosumi no-margin-bottom margin-top-small">SDK</p>
186
+ <p class="smaller lighter no-margin">iOS 9.3</p>
187
+ <p class="smaller lighter no-margin">OS X 10.11.4</p>
188
+ <p class="smaller lighter no-margin">watchOS 2.2</p>
189
+ <p class="smaller lighter no-margin">tvOS 9.2</p>
190
+ </section>
191
+ </div>
192
+ </div>
193
+
194
+ <div class="bg-grad-down">
195
+ <div class="grid">
196
+ <div class="row compact">
197
+ <section class="col-100 padding-top padding-bottom margin-top margin-bottom">
198
+ <p class="intro width-80 center text-center">Your Apple ID must be associated with a paid Apple Developer Program or Apple Developer Enterprise Program to access certain software downloads. You can download Xcode below or sign in with a different account.</p>
199
+
200
+ <p class="text-center">Are you signed in with the wrong account? <a href="/logout/?return=%2Fios%2Fdownload%2Fwwdc%2F" class="sign-out">Sign out</a> and sign back in.</p>
201
+ </section>
202
+ </div>
203
+ </div>
204
+ </div>
205
+
206
+
207
+
208
+
209
+
210
+ </main>
211
+
212
+ <div class="bg-light">
213
+ <aside class="grid">
214
+ <section id="router" class="router">
215
+ <a href="/download/more/" class="block row">
216
+ <span class="col-100 text-center">
217
+ <span class="two-lines">
218
+ <h4>
219
+ <small>Don't see what you're looking for?</small>
220
+ See more downloads
221
+ </h4>
222
+ </span>
223
+ </span>
224
+ </a>
225
+ </section>
226
+ </aside>
227
+ </div>
228
+
229
+
230
+ <section id="globalfooter-wrapper">
231
+ <footer id="globalfooter" role="contentinfo">
232
+ <nav class="footer-breadory">
233
+ <a href="/" class="home breadcrumbs-home"><span aria-hidden="true"></span><span class="breadcrumbs-home-label">Developer</span></a>
234
+ <section class="breadcrumbs">
235
+ <ol class="breadcrumbs-list">
236
+ <li>Download</li>
237
+ </ol>
238
+ </section>
239
+ <div id="directorynav" class="directorynav">
240
+ <div id="dn-cola" class="column">
241
+ <h3><a href="/discover/">Discover</a></h3>
242
+ <ul>
243
+ <li><a href="/macos/">macOS</a></li>
244
+ <li><a href="/ios/">iOS</a></li>
245
+ <li><a href="/watchos/">watchOS</a></li>
246
+ <li><a href="/tvos/">tvOS</a></li>
247
+ <li><a href="/programs/">Developer Program</a></li>
248
+ <li><a href="/enterprise/">Enterprise</a></li>
249
+ <li><a href="/education/">Education</a></li>
250
+ </ul>
251
+
252
+ </div>
253
+ <div id="dn-colb" class="column">
254
+ <h3><a href="/design/">Design</a></h3>
255
+ <ul>
256
+ <li><a href="/accessibility/">Accessibility</a></li>
257
+ <li><a href="/cases/">Accessories</a></li>
258
+ <li><a href="/design/adaptivity/">Adaptivity</a></li>
259
+ <li><a href="/design/awards/">Apple Design Awards</a></li>
260
+ <li><a href="/fonts/">Fonts</a></li>
261
+ <li><a href="/videos/design/">Design Videos</a></li>
262
+ <li><a href="/app-store/marketing/guidelines/">Marketing Guidelines</a></li>
263
+ </ul>
264
+ </div>
265
+ <div id="dn-colc" class="column">
266
+ <h3><a href="/develop/">Develop</a></h3>
267
+ <ul>
268
+ <li><a href="/xcode/">Xcode</a></li>
269
+ <li><a href="/swift/">Swift</a></li>
270
+ <li><a href="/download/">Downloads</a></li>
271
+ <li><a href="/reference/">API Reference</a></li>
272
+ <li><a href="/library/prerelease/content/navigation/">Guides</a></li>
273
+ <li><a href="/library/prerelease/content/navigation/#section=Resource%20Types&topic=Sample%20Code">Sample Code</a></li>
274
+ <li><a href="/videos/">Videos</a></li>
275
+ </ul>
276
+
277
+ </div>
278
+ <div id="dn-cold" class="column">
279
+ <h3><a href="/distribute/">Distribute</a></h3>
280
+ <ul>
281
+ <li><a href="/app-store/">App Store</a></li>
282
+ <li><a href="/app-store/review/">App Review</a></li>
283
+ <li><a href="https://itunesconnect.apple.com/">iTunes Connect</a></li>
284
+ <li><a href="/testflight/">TestFlight</a></li>
285
+ <li><a href="/enterprise/">Enterprise</a></li>
286
+ <li><a href="/safari/extensions/">Safari Extensions</a></li>
287
+ </ul>
288
+ </div>
289
+ <div id="dn-cole" class="column">
290
+ <h3><a href="/support/">Support</a></h3>
291
+ <ul>
292
+ <li><a href="https://forums.developer.apple.com">Developer Forums</a></li>
293
+ <li><a href="/contact/">Contact Us</a></li>
294
+ <li><a href="/bug-reporting/">Bug Reporting</a></li>
295
+ <li><a href="/terms/">License Agreements</a></li>
296
+ <li><a href="/system-status/">System Status</a></li>
297
+ </ul>
298
+ </div>
299
+ </div>
300
+
301
+ </nav>
302
+ <div class="ac-gf-footer-legal">
303
+ <div class="ac-gf-footer-news"> To receive the latest developer news, visit and subscribe to our <a href="/news/">News and Updates</a>. </div>
304
+ <div class="ac-gf-footer-legal-copyright">Copyright © 2016 Apple Inc. All rights reserved.</div>
305
+ <div class="ac-gf-footer-legal-links">
306
+ <a href="https://www.apple.com/legal/internet-services/terms/site.html" class="first">Terms of Use</a>
307
+ <a href="https://www.apple.com/privacy/privacy-policy/">Privacy Policy</a>
308
+ <a href="/bug-reporting/">Report Bugs</a>
309
+ <a href="/contact/submit/">Feedback</a>
310
+ </div>
311
+ </div>
312
+
313
+ </footer>
314
+ </section>
315
+
316
+ </body>
317
+ </html>