iOS App Provisioning For Development
I’ve always treated the entire iOS app provisioning process as a confusing black box. Every time I need to provision an app I spent a lot of time looking for my notes and the various links I’ve accrued to try and piece together just enough to get the process done. When it works, it works well. When it doesn’t it’s a royal pain.
As part of my current project converting one of my Solar2d/LUA apps to Unity/C# I was finding the development build/test process to again be a pain. So, I finally decided to break down, put in the time and peer inside the black box and see if I could make sense of Apple’s process.
Below is my current understanding of the process and the steps to provision an iOS app for development.
0. Assumption: you already have a Apple Developer account
1. Generating a certificate signing request
Use the Keychain Access application to create the signing request. See Apple’s instructions. These are actually really useful and easy to follow.
2. Create a developer certificate for a specific developer and upload the certificate signing request when prompted. iOS certificates should be replaced by general development or distribution certificates after Xcode 11 and above. So, use “Apple Development” and not “iOS App Development” when creating the certificate.
3. Download the certificate and double-click it to install it into the Keychain Access application. Think of these first three steps as the “getting to know each other” steps (the account and local development environments).
4. Name your app id. I usually use the app’s name. Use a reverse domain name for the bundle ID (ie. “com.companyname.appname”). You can use a wildcard here, but I haven’t found that useful. The app id prefix is just your team id.
5. Any devices on which you want to install your app for testing need to be added to the developer account. You need to find and enter the device’s UUID to register it. Apparently this can be done through Xcode also. Full details here.
-
-
- Using Finder on a Mac: Connect the device to the computer, open a Finder window, and select the device in the left sidebar. Click the device information section (text under the device’s name) until the UDID appears.
- Using XCode: Open XCode, connect the device via USB, and go to Menu > Window > Devices and Simulators. Locate the device’s details in the window, and the UDID will be in the Identify field.
-
6. The info from all these previous steps allow you to create a development provisioning profile. When creating the profile you will select the certificate, the app id, and the devices on which the app can be installed and tested. Save it.
7. Download it and double-click it to install it. In previous Xcode releases, profiles were installed under the path: ~/Library/MobileDevice/Provisioning Profiles. Starting with Xcode 16, they are now installed under: ~/Library/Developer/Xcode/UserData/Provisioning Profiles.
8. Using Xcode you can now build and install the development version of your app on your device. This is a good Youtube video explaining how to build a Unity app. Think of this final step as the “if we all know each other – account and local environment and we’re talking to a blessed device and app (id) – then we will all get along!”