An Xcode 'Free Provisioning' Tutorial - How to run your app, on your device, without a paid Developer Program Account
This post is for those individuals that haven't taken the leap to obtain a paid Apple Developer Program account, but would still like to sample the tools and test an iOS, watchOS or tvOS app or two, with Xcode, on their own device. To do that, we need to take advantage of Xcode's 'Free Provisioning', which, while being an authorized process, is not well documented by Apple.
- Mac capable of running Xcode v8.x or higher (as of this writing, the latest release version Xcode is v9.2)
- An Xcode project with an app that is ready to run
- An Apple ID*
- An iOS, watchOS or tvOS device
- Sufficient free space on your hard drive for the tools and your apps
The latest Xcode can be installed from the Mac App Store for free. Once you've installed Xcode, you can proceed by following the process outlined below. Please read thru the entire process before starting.
• From within Xcode, navigate to “Xcode—->Preferences—->Accounts.” Hit the '+' icon below left to add your Apple ID*. After you add and select your account, it will show within the main account window on the right under ’Team' as YourName (Personal Team)’ w/role ‘User’.
• Connect your device to your computer and select it as the build destination via the 'active scheme' dropdown to the right of the play and stop icons.
• In that project's target's 'General' tab/settings:
a.) Unless Xcode did this for you, set the app identifier/bundle ID you want for your free profile - note this string must be unique, meaning if it is already in use, you can expect an alert warning you to enter a different string. If you expect to make this app for store distribution later, you will either need to change again, then, or make a plan now that includes a naming scheme that can evolve later as you create more apps, or simply use a throwaway bundle ID you won't care about not being able to use later. Use lower case, no spaces or special characters. Keep it simple, but again, make it unique so you don't try to use something that is already taken.
b.) Set Team id as 'Personal Team' ...the Apple ID used w/free provisioning.
c.) If you see a provisioning profile warning at this point, use the 'Fix Issue' button in the Signing section.
- You may have to ‘Fix Issue' more than once - keep at it so Xcode can step thru them as needed.
• With your device selected, you can now build and run your app.**
Be patient while the process completes. If all goes well, your app should eventually be installed and opened on your device, waiting for you to put it thru it's paces. Good job!
Please be aware that developing apps using Apple's IDE (integrated development environment) is non-trivial. To be able to submit apps to the App Store requires purchasing a Developer Program account which costs USD$99 per year, in the name of someone at least 21 years old. Details here: https://developer.apple.com/programs/.
To learn more about enrolling in the Apple's Developer Program, see Managing Accounts in the App Distribution Guide:
Apple Developer support begins here: https://developer.apple.com
Free provisioning secrets/things you’ll want to know:
Using Xcode's free provisioning doesn’t mean you also have a ‘developer' account…it only means you have an Apple ID tied to an Xcode account.
An app's profile will be valid for 1 week, after which time the app will fail to launch on your device you will need to start over...delete the account from Xcode and repeat the process.
There is a limit to how many apps you can build and test to your device. If you hit this error, delete old versions and try again.
Maximum number of devices limit is reported as 3. And unlike a paid Developer Program account, there is no Member Center/Certificates, IDs & Profiles/Devices access~management. Use caution if you look for help on the internet. Do not be confused if you attempt to follow directions that only apply to a paid Developer Account!
What you can/can't do w/free provisioning is listed here:
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/SupportedCapabilities/SupportedCapabilities.html#//apple_ref/doc/uid/TP40012582-CH38-SW1 - In App Purchase, as an example, is one of the features not avaliable w/free provisioning.
If you see an error that says "change your Bundle Identifier to a unique one”, that means don’t use the same string (and/or the string is malformed; no special characters, hyphens, underscores, spaces etc.) such as: com.sample.app …add your last name or some string to the end such as com.sample.lastname, then click on ’Try Again’. Note: You may need to change it again if your app goes to the store. Don’t use a string here that you intend to be in the store later. Use something non—important. If you make this change, follow it up by using the ‘Product’ menu while holding down on the option key, then choosing to ‘clean build folder’.
If this is about creating an .ipa to manually hand off, select Build For Archiving under the project menu, not ‘Run’.
*If you have, had or plan to have, a paid Developer Program account, be sure to use a unique/different Apple ID for each account.
**Free Xcode accounts may experience issues launching apps on the watch for the first time.
Workaround: Launch the app manually on the device and click “Trust” when the security sheet appears. You should then be able to launch the app from Xcode.