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
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! :)
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.