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 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 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.
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.
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).
|Task||Team Agent||Team Admin||Team 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)||✓||No||No|
|Accept updated Development Agreements||✓||No||No|
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
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
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.
|Task||Team Agent||Team Admin||Team 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 Profile||No||No||No|
|Create an App Store Distribution Provisioning Profile||No||No||No|
Follow theses steps to set up an iOS device using Xcode Organizer:
Launch Organizer via the Xcode Window menu → Organizer.
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.
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.
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).
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.
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.
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).
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
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 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:
Log in to the iOS Dev Center and go to the iOS Provisioning Portal.
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).
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).
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).
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.