How do I submit an iOS app WITHOUT Xcode?
Build your App into an .app file with a "Release" schema:
xcodebuild -target "${PROJECT_NAME}" -sdk "${TARGET_SDK}" -configuration Release
Package your App as an .ipa:
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}”
Then, run Application Loader
(Download/Install Application Loader 2.9
if necessary):
open -a /Developer/Applications/Utilities/Application\ Loader.app
-
After it opens select "Next"
-
Enter your iTunes Connect Apple ID and Password and select "Next"
-
After your authenticated select "Next"
-
Select your App and click "Next"
-
Confirm App compatability
-
"Choose" the binary file to upload
-
Select and click "Next"
-
Start the upload by clicking "Send"
-
It will will take a few moments to authenticate through the iTunes Store
-
Once complete, your app package has been uploaded to the iTunes Store. Click "Next"
-
You are "Done"!
-
Your App will show a Status of "Upload Received"
Links:
Apple Doc - Using Application Loader
automating-over-the-air-deployment-for-iphone
How To Upload Your App To iTunes Connect Using Application Loader
Nowadays, Application Loader is deprecated in favor of Apple's Transporter.
-
Package your App as an .ipa:
xcodebuild -target "${PROJECT_NAME}" -sdk "${TARGET_SDK}" -configuration Release /usr/bin/xcrun -sdk iphoneos PackageApplication -v "${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app" -o "${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}”
Send the .ipa to client.
- Use Apple's Transporter to upload the .ipa to App Store Connect without Xcode.
I have accepted chown's answer as the correct one since it is very detailed and led me to the eventual solution, but I wanted to add this bullet-list answer for any future viewers who might want to see things cheat-sheet style.
Building the binary
- Edit schemes.
- Set archive scheme to use RELEASE configuration.
- Make sure code-sign for RELEASE uses client's App-Store profile.
- Get this the same way you did in Xcode 3.2, you need his profile, certificate and private key.
- Build ARCHIVE.
- SHARE archive.
- DO NOT RE-SIGN!
Send binary to client
(Email or whatever.)
Client uses ApplicationLoader to upload.
Watch out for this Xcode/Newsstand problem
(Go up-vote that Q&A if you ran into the problem and it saved your bacon! :)