The absence of
PROVISIONING_PROFILE is the equivalent of Automatic -- having this value set to anything but empty (the value would be a UUID) indicates you intend to use the specific provisioning profile who's UUID matches the value of
In most cases, you want to use the Automatic setting which would manifest as either the empty
PROVISIONING_PROFILE line or not having that line present. Automatic allows you to update, download, and install newer versions of your provisioning profile without having to update your build configuration each time you add a new test device, enable a new entitlement-based service, or simply reissue the existing profile.
Provisioning profiles are stored on-disk as .mobileprovision, the default sort order is alphabetic. When using Automatic, the following rules are used to select profile to sign with -- the first profile that matches wins:
- Profiles with an explicit AppId (com.mycompany.mydivision.myapp) precisely matching the current project's AppID
- Profiles with a wildcard (com.mycompany.mydivision.*) AppId matching the longest component of the reverse-DNS styled project AppID
- Profiles that are pure wildcard (*)
If you must use a specific profile, do keep in mind that each time you edit a provisioning profile on the Certificates, Identities, and Profiles tool you will download a new version of the provisioning profile -- this profile's UUID will be different and as such you will need to update your build settings each time you make a change. If you work with a development team, simply adding a new developer's certificate to the provisioning profile will cause a new UUID to get generated and may cause code signing errors for one or more members of your team.