diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 04a2edfee5..9c94b8f3d9 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -97,7 +97,8 @@ public: iosAppGroupsIDValue (settings, Ids::iosAppGroupsId, getUndoManager()), keepCustomXcodeSchemesValue (settings, Ids::keepCustomXcodeSchemes, getUndoManager()), useHeaderMapValue (settings, Ids::useHeaderMap, getUndoManager()), - customLaunchStoryboardValue (settings, Ids::customLaunchStoryboard, getUndoManager()) + customLaunchStoryboardValue (settings, Ids::customLaunchStoryboard, getUndoManager()), + exporterBundleIdentifierValue (settings, Ids::bundleIdentifier, getUndoManager()) { name = iOS ? getNameiOS() : getNameMac(); @@ -392,6 +393,10 @@ public: props.add (new TextPropertyComponent (postbuildCommandValue, "Post-Build Shell Script", 32768, true), "Some shell-script that will be run after a build completes."); + props.add (new TextPropertyComponent (exporterBundleIdentifierValue, "Exporter Bundle Identifier", 256, false), + "Use this to override the project bundle identifier for this exporter. " + "This is useful if you want to use different bundle identifiers for Mac and iOS exporters in the same project."); + props.add (new TextPropertyComponent (iosDevelopmentTeamIDValue, "Development Team ID", 10, false), "The Development Team ID to be used for setting up code-signing your iOS app. This is a ten-character " "string (for example, \"S7B6T5XJ2Q\") that describes the distribution certificate Apple issued to you. " @@ -1086,7 +1091,9 @@ public: String getBundleIdentifier() const { - auto bundleIdentifier = owner.project.getBundleIdentifierString(); + auto exporterBundleIdentifier = owner.exporterBundleIdentifierValue.get().toString(); + auto bundleIdentifier = exporterBundleIdentifier.isNotEmpty() ? exporterBundleIdentifier + : owner.project.getBundleIdentifierString(); if (xcodeBundleIDSubPath.isNotEmpty()) { @@ -1881,7 +1888,8 @@ private: microphonePermissionNeededValue, microphonePermissionsTextValue, cameraPermissionNeededValue, cameraPermissionTextValue, uiFileSharingEnabledValue, uiSupportsDocumentBrowserValue, uiStatusBarHiddenValue, documentExtensionsValue, iosInAppPurchasesValue, iosBackgroundAudioValue, iosBackgroundBleValue, iosPushNotificationsValue, iosAppGroupsValue, iCloudPermissionsValue, - iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue; + iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue, + exporterBundleIdentifierValue; static String sanitisePath (const String& path) {