So Xcode 8 is out, and it simplifies some aspects of code signing, but complicates the process of packaging an app.
Currently, cordova-ios will use the "iPhone Developer" certificate when building a debug build, and the "iPhone Distribution" certificate when making a release build. It uses xcrun with the (deprecated) PackageApplication option to bundle up the build into an IPA file. Xcode 8 has automatic provisioning, which means instead of dealing with specifying a bunch of certificate files, you can pretty much just give it a team identifier and it will figure things out. With one catch: you need to use the "iPhone Developer" certificate. Support for the team identifier in build.json has already been added to cordova-ios master. However, in order to make a build in Xcode 8 with automatic provisioning and a distribution certificate, you need to run the xcodebuild archive step, and then an exportArchive step to generate the IPA. This workflow has been supported since Xcode 7. Currently, since Cordova uses xcrun PackageApplication, it is packaging up a release build with the development certificate. This build cannot be submitted to the App Store. My proposal is for cordova-ios to drop support for Xcode 6 with the xcrun packaging, and start using xcodebuild for archiving and generating the IPA. I suppose that would have to wait for a major version bump of cordova-ios, unless we detected the Xcode version and kept the old code around conditionally. As part of packaging, we would need to generate a exportOptions.plist file, indicating what type of build to package (development, enterprise, ad-hoc, or app-store). I'd suggest we add a "packageType" or "buildType" field to build.json for specifying this value (with a default of development). I'm happy to start prototyping this on a branch if it sounds like the right approach going forward. Related info: https://pewpewthespells.com/blog/migrating_code_signing.html#building-for-distribution-xcode-8 https://dpogue.ca/articles/cordova-xcode8.html