If you try to submit an app to iTunes Connect which has built with the Mac App Store's Xcode 6.4, which is currently not in beta, using the iOS 8 SDK, also not in beta, you can add the build but you can't submit the app for review. The following error message is shown:
Apps and app updates submitted to the App Store must be built with Xcode 6.4 or later, and iOS 8 SDK.
Now that the GM build is out, there's a new error message:
Invalid Toolchain. New apps and app updates must be built with the public (GM) versions of Xcode 6 or later, and iOS 8 SDK or later. Don't submit apps built with beta software including beta OS X builds.
This is because even though the app has been built with the compatible version of Xcode and the correct iOS SDK, the app contains the build version of the OS that built the app.
<key>BuildMachineOSBuild</key>
<string>15A204h</string>
Code language: HTML, XML (xml)
It is this build number that causes the problem. iTunes Connect reads this value and determines that the app was built using a pre-release version of OS X, thus rejecting the build. Unfortunately, you can't simply modify the plist because this invalidates the codesigning—you'll be allowed to submit the app to iTunes Connect but it will fail review because the app can't be installed on any device (except jailbroken devices with AppSync).
Fortunately, there is a solution without having to downgrade to OS X 10.10 Yosemite: change the build number of the OS, temporarily.
Note: This solution requires you to disable System Integrity Protection to make changes to system files.
- Open
/System/Library/CoreServices/SystemVersion.plist
with your favourite editor.For this example, I will open it with TextMate.mate /System/Library/CoreServices/SystemVersion.plist
- Edit line 6 to change the ProductBuildVersion to one that is for an older version of OS X. Replace
15A263e
or your respective build version with an older build version such as14C109
(Yosemite 10.10.2) which is not a pre-release build. - Relaunch Xcode, re-archive your app and submit it to the App Store as normal. The build should be accepted by iTunes Connect for review!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ProductBuildVersion</key>
<string>14C109</string>
<key>ProductCopyright</key>
<string>1983-2015 Apple Inc.</string>
<key>ProductName</key>
<string>Mac OS X</string>
<key>ProductUserVisibleVersion</key>
<string>10.11</string>
<key>ProductVersion</key>
<string>10.11</string>
</dict>
</plist>
Code language: HTML, XML (xml)
AMAZING! Thank you SO MUCH for this, totally made my day! I was trying to submit an update with Xcode 7 final running on El Capitan beta (the newest, 10.11.1) and iTunes Connect was giving me a hard time (as always). Nice find!
Either apple got smart or I'm doing this wrong. I followed the tut to the T and confirmed the plist of the app has the older OS build version in it in the archive but Apple is still rejecting. Guess I'll wait for the GM OSX of El Capitan 10.11.4 to do my release.
A link to this article was posted on Apple Developer Forums a few times a while ago so it's not impossible that Apple patched this, but I did use this for my latest app update about a week ago and it worked fine. The only thing I can suggest is to make sure you're not using a beta version of Xcode on your beta OS—I haven't found a way around this yet but the public build of Xcode works fine on beta OS with this workaround for me.
Great solution!! But how do we change this file as this file is read-only?
It's not read-only, it just requires permission to edit. If you have TextMate, it'll handle it for you, as shown in the example. If not, use
sudo
to open it in an editor such asnano
. Does this help?It's read-only in my computer. I tried sudo to overwrite,but it does not work. I also use chmod to change the file mode but said: operation not permitted.
I use "ls -l" to list files under CoreServices folder, the systemVersion.plist is read-only in any situation.
Ah, you have System Integrity Protection enabled. You have to disable it to edit system files like this one. Apologies for not noting it in the post—I've edited the post to point it out and describe how to disable System Integrity Protection.
I finally fix my issue by disabling System Integrity Protection.
I just follow 3 steps that apple provide to disable SIP.
1. reboot to recovery OS.
2. open the terminal and type: "csrutil disable"
3. reboot
After that I am able to change SystemVerison.plist file and submit my app for review.
Thank you for grgarside's help!
i am unable to edit SystemVersion.plist please help me
As mentioned in the post, make sure you've disabled System Integrity Protection, then open it with an editor such as TextMate. You'll need administrator privileges to make changes to the file.
i am getting same error Invalid Toolchain. New apps and app updates must be built with the public (GM) versions of Xcode 6 or later, and iOS 8 SDK or later. iOS 9 apps for internal TestFlight testers must be built with the latest seed of the iOS SDK and uploaded with the latest seed of Xcode.
I edited SystemVersion.plist as you mentioned
I have X Code 7.2 Version
When i am Upload to store now i am getting error error sun.net.PortConfig : unknown OS
please help me
thank you
Make sure that the build number that you're using in the plist is a real build number that is from a real OS release, preferably Yosemite 10.10.4 which is
14C109
. The build number is case-sensitive—make sure you're entering it exactly and restarting Xcode after. By the way, if you're replying to a comment, use the reply button under the comment that you're replying to.Xcode 7.2 beta was not opening in this version
Yes, that's why you open it in the latest version of El Capitan and change the build number in SystemVersion.plist to be that of 10.10.4, thus Xcode thinks it's building on this version. You don't actually build the app on Yosemite.
i already chnged as 10.10.4 Now my Xcode was not opening sir i am using Xcode 7.2 beta
Required OS X 10.10.5 or later
You can use the 10.10.5 build number if you wish:
14F27
what should i use Deployment Target its 9.2 or 9.1 or 8.4
I am using XCode beta 7.2 please telme the Deployment Target _______
I'm not sure what you're asking—feel free to ask a fully-detailed question with what you're trying to do and what's not working.