Custom iOS Provisioning Profiles for Multiple Targets¶
Capawesome Cloud automatically detects and applies provisioning profiles to all iOS targets based on their bundle identifiers. However, when working with multiple targets that use non-standard bundle ID patterns, you can manually configure the mapping between bundle IDs and target names.
Automatic Provisioning Profile Detection¶
By default, Capawesome Cloud automatically:
- Scans all provisioning profiles uploaded to your build
- Matches profiles to targets based on bundle identifiers
- Configures code signing for each target
- Generates export options with the correct profile mappings
This automatic detection works seamlessly when your app extensions follow the standard iOS naming pattern where extension bundle IDs are prefixed with the main app bundle ID (e.g., com.example.app for the main app and com.example.app.widget for a widget extension).
Configure Custom Mapping¶
To override the automatic detection for non-standard bundle ID patterns, set the CI_IOS_PROVISIONING_PROFILE_MAP environment variable:
- Navigate to the Environments page
- Select your environment or create a new one
- Add a variable named
CI_IOS_PROVISIONING_PROFILE_MAP - Set its value to a JSON object mapping bundle IDs to target names
JSON Format
The value must be a valid JSON object with bundle IDs as keys and target names as values. Ensure the target names match exactly as they appear in your Xcode project.
Example¶
Consider a VPN app with the following targets:
- Main app:
com.example.vpnapp(target:App) - WireGuard extension:
com.example.wireguard(target:WireGuardExtension) - Packet tunnel:
com.example.tunnelprovider(target:PacketTunnel)
To configure provisioning profiles for these targets:
- Add an environment variable named
CI_IOS_PROVISIONING_PROFILE_MAP - Set its value to:
- Select this environment when triggering your build
The specified mappings will be used in addition to the automatic detection for the main app target.