Chapter 1. Introduction to iOS Build and Release

Welcome to Essential iOS Build and Release. If you’re reading this, chances are you are in the process of building (or supporting the build process of) an app for Apple’s mobile operating system, iOS. Regardless of whether you are beginning a new project or maintaining an existing app, you probably have a good understanding of the complexity surrounding the build and distribution of an iOS app. The goal of this book is to be a guide through all the build and release processes that surround the development of an iOS app, which typically can be very time-consuming and distracting from the actual development of an app.

The goal of this chapter is to give you an overview of the online interface through which you’ll carry out build and release activities, the iOS Dev Center website. Additionally, we’ll cover how to provision a device using Xcode Organizer, which can be used as a quick way to set up an iOS device for development. We won’t spend a lot of time on terminology here; that will come later.

The iOS Dev Center

The iOS Dev Center website (Figure 1-1) is the main portal of iOS development. It offers a wealth of information about iOS development (documentation, videos, sample code, etc.). Additionally, the iOS Dev Center is where you go to download developer preview (beta) versions of Xcode, iOS, and iTunes. For the purposes of this book, we’ll cover the iOS Provisioning Portal, iTunes Connect, and the Member Center sections of the iOS Dev Center.

The iOS Dev Center website

Figure 1-1. The iOS Dev Center website

iOS Provisioning Portal

The primary interface you’ll use within the iOS Dev Center throughout the entire development cycle. It is here that you will create your App IDs, Pass Type IDs, generate signing certificates, manage Provisioning Profiles, and register iOS devices for testing. Subsequent chapters throughout this book dive deep into using each section of this interface.

Member Center

Located within the iOS Provisioning Portal, the Member Center is used for the management of your iOS Developer Program account. Within the Member Center, you can renew your account, file technical support incidents, and review all current legal agreements. At the time of the this writing, annual enrollment in the iOS Developer Program includes two technical support incidents, which you can use to get assistance with iOS from engineers at Apple (if needed, additional incidents can be purchased from the same interface). The Member Center is also where you will find the ID number to your account; make a note of your account’s ID number, as you will be asked to provide it if you ever need to call Apple for support.

Enrollment in the iOS Developer Program can be done either as an “Individual” or as a “Company/Organization.” Enrollment in the program as a Company/Organization gives you the ability to build a development team by creating additional accounts for other members of your organization. As the initial enrollee account is designated as the Team Agent account, developer accounts created within the Member Center can be of security type Admin or Member. Table 1-1 details tasks done within the iOS Provisioning Portal and whether they can be performed based on the user’s security level. Once a developer account is created (Team Member or Admin), an “invitation” is sent to the designated email address, which will give the developer an opportunity to create a username and password for the iOS Dev Center.

iTunes Connect

The portal you will use to manage your app on the App Store. It is here that you will prepare your app for submission by defining criteria such as the name of the app in the App Store, description, keywords, license agreement, and so on. Updates to existing apps are also done through the iTunes Connect interface (see App Store Build Distribution).

Table 1-1. iOS Provisioning Portal management tasks based on account type

TaskTeam AgentTeam AdminTeam Member
Create App IDs✓✓No
Configure App IDs (enable APNs, iCloud, etc.)✓✓No
Create Pass Type IDs✓✓No
Configure Pass Type IDs✓✓No
Submit a Development Certificate Signing Request✓✓✓
Approve Development Certificate Signing Requests✓✓No
Create / Manage Development Provisioning Profiles✓✓No
Download Development Provisioning Profiles✓✓✓
Submit a Distribution Certificate Signing Request✓✓No
Create a Distribution Certificate✓✓No
Revoke a Distribution Certificate✓✓No
Create Distribution Provisioning Profiles✓✓No
Download Distribution Provisioning Profiles✓✓No
Manage iOS Devices✓✓No
Distribute apps to the App Store (iTunes Connect)✓NoNo
Accept updated Development Agreements✓NoNo


Released in 2003, Xcode is Apple’s integrated development environment (IDE) used to develop iOS apps. Xcode can be downloaded and installed onto your computer from Mac App Store or from the iOS Provisioning Portal. If you’re reading this, you’re probably already familiar with installing and running Xcode, however here are a few pointers on upgrading an existing installation of Xcode that could save you a bit of time:

  • After installing a newer version of Xcode, open Xcode to agree to the license and install any additional required components. This is especially important for an installation of Xcode on a build server used for automated builds of your iOS app, as you will not be able to use the xcodebuild command line tool to compile your app without first agreeing to the license.

  • Older versions of Xcode can be downloaded from Downloads for Apple Developers.

  • The Xcode Command Line Tools can be downloaded by going to Xcode → Preferences → Downloads tab → Components.


If you attempt use the xcodebuild command line tool to build your app without first agreeing to the licence of a newly installed version of Xcode, you will get the following error message: You have not agreed to the Xcode license agreements, please run 'xcodebuild -license' (for user-level acceptance) or 'sudo xcodebuild -license' (for system-wide acceptance) from within a Terminal window to review and agree to the Xcode license agreements.

Device Provisioning Using Xcode Organizer

Whether you are building apps independently or managing the iOS build and release process for a large organization, setting up devices, generating signing certificates, and configuring Provisioning Profiles are essential components of iOS development. Regardless of the scope of your iOS development organization, Xcode Organizer (located within Xcode) provides a way for you to get an iOS device set up quickly in order to use it for development.

It is important to understand which setup processes Xcode Organizer will do for you, and which ones it will not. Much of the functionality of provisioning a device through Xcode is based on the security access level of your account in the Member Center. Table 1-2 shows common setup tasks and whether they can be performed based the account’s security role.

Table 1-2. Xcode Organizer Device Provisioning setup tasks based on account type

TaskTeam AgentTeam AdminTeam Member
Add your device to the Devices list✓✓No
Create a generic App ID✓✓✓
Create Development public/private keys locally✓✓✓
Create and install a Development Certificate✓✓No; can only submit a request, which requires approval
Create a generic Development Provisioning Profile✓✓Only if the device has already been added to the Devices list
Install a Development Provisioning Profile to your device✓✓Only if the device has already been added to the Devices list
Create Distribution public/private keys locally✓✓No
Create and install the Distribution Certificate✓✓No
Create an Ad Hoc Distribution Provisioning ProfileNoNoNo
Create an App Store Distribution Provisioning ProfileNoNoNo

Follow theses steps to set up an iOS device using Xcode Organizer:

  1. Open Xcode.

  2. Launch Organizer via the Xcode Window menu → Organizer.

  3. Connect your iOS device to your computer via the USB cable. Xcode will automatically recognize the device and add it to the DEVICES category of the Devices tab. If your device has not yet been set up for development, you will see the “Use for Development” button in the main panel (see Figure 1-2). To begin the process of setting up your device so that it can install and run your iOS apps, press the “Use for Development” button; you will be prompted for your login credentials to the iOS Dev Center (see Figure 1-3). If you do not see the “Use for Development” button and the main panel looks more like Figure 1-8, your device has already been set up for development with Xcode.

    Setting up a device for development

    Figure 1-2. Setting up a device for development

    Logging into the iOS Dev Center to Setup a Device

    Figure 1-3. Logging into the iOS Dev Center to Setup a Device

  4. Xcode Organizer attempts to add your iOS device to the Devices list within the iOS Provisioning Portal. If your Team account on the iOS Dev Center is not Team Admin or Agent security level access, your device is not automatically added to the Devices list; you will have to copy your device’s Unique Device Identifier (UDID) and send it to a user with Team Admin or Agent level access in order for your device to be added manually (see Figure 1-4). For more details on obtaining a device’s UDID in order to get the device set up for development and testing, see Using iOS Devices for Testing.

    A device’s Unique Device Identifier (UDID)

    Figure 1-4. A device’s Unique Device Identifier (UDID)

  5. If your Development Certificate does not yet exist within the Development tab of the Certificates section on the iOS Provisioning Portal, you will be prompted with a “Submit Request” dialog box to create one (see Figure 1-5). Team Member level accounts will have to wait for a Team Admin or Agent to approve their Development Certificate request. Team Agent or Admin level accounts will have their Development Certificate created and (if it doesn’t already exist) will be prompted with a “Submit Request” dialog box to additionally create the Distribution Certificate (see Figure 1-6).

    Creating a Development Certificate

    Figure 1-5. Creating a Development Certificate

    Creating a Distribution Certificate

    Figure 1-6. Creating a Distribution Certificate

  6. You will next be asked if you would like to export your Developer Profile (which contains your newly created Developer Certificate and private key) so that it can be transferred to other computers for development (see Figure 1-7). It is not necessary to do this now, so you can safely choose “Don’t export.” For more information on exporting your Developer Profile, see Transferring Your Developer Profile to Another Computer.

    Exporting a Developer Profile

    Figure 1-7. Exporting a Developer Profile

  7. Xcode Organizer will set up the following within the iOS Provisioning Portal:

    • Your device will be added to the Devices list (Team Agent or Admin accounts only).

    • A generic App ID will be created in the “App IDs” section based on your iOS Developer Program account ID. For example, if your account ID is 4B587C2146, an App ID of 4B587C2146.* will be created. See App IDs for further explanation of App IDs and how they are used.

    • Development and Distribution Certificates will be created in the Certificates section (Team Agent or Admin accounts only).

    • An “iOS Team Provisioning Profile” will be created within the Development tab of the Provisioning section.

  8. Provided that your device has been added to the Devices list, the “iOS Team Provisioning Profile” will be downloaded and installed onto your device (see Figure 1-8).

The “iOS Team Provisioning Profile” installed onto the device

Figure 1-8. The “iOS Team Provisioning Profile” installed onto the device

Adding the Apple WWDR Certificate

Now that your iOS device has been added to the Devices list, and the Development Provisioning Profile has been installed onto it, one last step is to download and install the Apple WWDR (Worldwide Developer Relations) intermediate certificate into your Keychain Access. The WWDR certificate is not installed for you by Xcode Organizer.


Without the WWDR intermediate certificate loaded, you will receive a CSSMERR_TP_NOT_TRUSTED error message at build time.

Open Keychain Access (located in the Utilities folder of Applications), and go to the Certificates category of your default (login) keychain; you will see a “This certificate was signed by an unknown authority” error message in red (see Figure 1-9). This is because your login keychain is missing the WWDR intermediate certificate.

The default keychain without the “WWDR intermediate certificate” installed

Figure 1-9. The default keychain without the “WWDR intermediate certificate” installed

The WWDR intermediate certificate can be downloaded from the Apple Root Certification Authority website, or follow these steps to download & install the certificate from the iOS Provisioning Portal:

  1. Log in to the iOS Dev Center and go to the iOS Provisioning Portal.

  2. Go to the Certificates section and select the Development tab (you can also go to the Distribution tab, the download link is the same on both tabs).

  3. Use the “click here to download now” link to download the WWDR intermediate certificate to your computer from the same page (see Figure 1-10).

    Downloading the “WWDR intermediate certificate”

    Figure 1-10. Downloading the “WWDR intermediate certificate”

  4. Once downloaded, double-click the AppleWWDRCA.cer file to install the certificate into your login keychain. The previous error message will be changed to “This certificate is valid” (see Figure 1-11).

After installing the “WWDR intermediate certificate,” the development certificate is shown as valid

Figure 1-11. After installing the “WWDR intermediate certificate,” the development certificate is shown as valid

Now that your iOS device has been set up, you are ready to deploy your app to it from Xcode (see Building and Deploying to an iOS Device Using Xcode). Using your device, you can verify that the Development Provisioning Profile is installed by going to Settings → General → Profile(s). However, you still need to set up an “Ad Hoc Distribution Provisioning Profile” if you wish to distribute your app to other users so they can install your app onto their devices. Additionally, you’ll have to create an “App Store Distribution Provisioning Profile” to submit your app to the App Store. Prior to creating these Distribution Provisioning Profiles, you first have to create a Distribution Certificate. The creation of the Distribution Certificate and Provisioning Profiles is covered in Chapters 2 and 3.

Get Essential iOS Build and Release now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.