bAutomaticSigning

bAutomaticSigning

#Overview

name: bAutomaticSigning

The value of this variable can be defined or overridden in .ini config files. 1 .ini config file referencing this setting variable.

It is referenced in 6 C++ source files. Also referenced in 1 C# build file meaning it may affect the build system logic.

#Summary

#Usage in the C++ source code

The purpose of bAutomaticSigning is to control whether automatic signing through Xcode is used for iOS builds in Unreal Engine 5. This setting is primarily related to the iOS development and build process.

Based on the callsites, this variable is used in the iOS Platform Editor and iOS Target Platform modules of Unreal Engine. These subsystems are responsible for iOS-specific build settings and deployment processes.

The value of this variable is set in the IOSRuntimeSettings class, which is part of the IOSRuntimeSettings module. It is defined as a UPROPERTY with the GlobalConfig and EditAnywhere attributes, meaning it can be modified in the project settings.

This variable interacts with other iOS-related settings, such as the IOSTeamID, BundleIdentifier, and SignCertificate properties. It also affects the visibility of certain UI elements in the iOS target settings customization.

Developers must be aware that:

  1. This setting is only relevant for iOS development on Mac platforms.
  2. It affects the command line arguments passed to the IPhonePackager tool during the build process.
  3. When enabled, it may change the behavior of certificate and provisioning profile management.

Best practices when using this variable include:

  1. Ensure that the Apple developer account is properly set up if enabling automatic signing.
  2. Keep the IOSTeamID setting up-to-date when using automatic signing.
  3. Be aware of the implications on the build process and adjust other related settings accordingly.
  4. Consider the security implications of automatic signing and whether manual control over signing is required for your project.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEngine.ini:3024, section: [/Script/IOSRuntimeSettings.IOSRuntimeSettings]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Developer/IOS/IOSPlatformEditor/Private/IOSTargetSettingsCustomization.cpp:325

Scope: file

Source code excerpt:

	BuildCategory.AddProperty(SignCertificateProperty)
		.Visibility(EVisibility::Hidden);
	AutomaticSigningProperty = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UIOSRuntimeSettings, bAutomaticSigning));

	BuildCategory.AddProperty(AutomaticSigningProperty)
#if PLATFORM_MAC
		.Visibility(EVisibility::Visible);
#else
		.Visibility(EVisibility::Hidden);

#Loc: <Workspace>/Engine/Source/Developer/IOS/IOSPlatformEditor/Private/IOSTargetSettingsCustomization.cpp:816

Scope (from outer to inner):

file
function     void FIOSTargetSettingsCustomization::BuildPListSection
function     SETUP_SOURCEONLY_PROP

Source code excerpt:


	SETUP_SOURCEONLY_PROP(bEnableRemoteNotificationsSupport, OnlineCategory)
//	SETUP_SOURCEONLY_PROP(bAutomaticSigning, ProvisionCategory)

    // Handle max. shader version a little specially.
    {
        ShaderVersionPropertyHandle = DetailLayout.GetProperty(GET_MEMBER_NAME_CHECKED(UIOSRuntimeSettings, MetalLanguageVersion));
		ShaderVersionPropertyHandle->SetOnPropertyValueChanged(OnUpdateShaderStandardWarning);
		

#Loc: <Workspace>/Engine/Source/Developer/IOS/IOSPlatformEditor/Private/IOSTargetSettingsCustomization.cpp:1881

Scope (from outer to inner):

file
function     bool FIOSTargetSettingsCustomization::IsAutomaticSigningEnabled

Source code excerpt:

bool FIOSTargetSettingsCustomization::IsAutomaticSigningEnabled() const
{
	bool bAutomaticSigning = false;
	AutomaticSigningProperty->GetValue(bAutomaticSigning);
	return bAutomaticSigning;
}

void FIOSTargetSettingsCustomization::OnBundleIdentifierChanged(const FText& NewText, ETextCommit::Type CommitType, TSharedRef<IPropertyHandle> InPropertyHandle)
{
	if(!IsBundleIdentifierValid(NewText.ToString()))
	{

#Loc: <Workspace>/Engine/Source/Developer/IOS/IOSTargetPlatform/Private/IOSTargetPlatform.cpp:269

Scope (from outer to inner):

file
function     int32 FIOSTargetPlatform::CheckRequirements

Source code excerpt:

	BundleIdentifier = BundleIdentifier.Replace(TEXT("_"), TEXT(""));

	bool bAutomaticSigning = false;
	GConfig->GetBool(TEXT("/Script/IOSRuntimeSettings.IOSRuntimeSettings"), TEXT("bAutomaticSigning"), bAutomaticSigning, GEngineIni);

	FString TeamID;
	GConfig->GetString(TEXT("/Script/IOSRuntimeSettings.IOSRuntimeSettings"), TEXT("IOSTeamID"), TeamID, GEngineIni);

	FString ProjectPath = FPaths::ConvertRelativePathToFull(FPaths::GetProjectFilePath());
#if PLATFORM_MAC

#Loc: <Workspace>/Engine/Source/Developer/IOS/IOSTargetPlatform/Private/IOSTargetPlatform.cpp:280

Scope (from outer to inner):

file
function     int32 FIOSTargetPlatform::CheckRequirements

Source code excerpt:

    FString ScriptPath = FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Build/BatchFiles/RunDotnet.sh"));
    FString IPPPath = FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Binaries/DotNET/IOS/IPhonePackager.exe"));
	FString CommandLine = FString::Printf(TEXT("\"%s\" \"%s\" Validate Engine -project \"%s\" -bundlename \"%s\" -teamID \"%s\" %s %s"), *ScriptPath, *IPPPath, *ProjectPath, *(BundleIdentifier), *(TeamID), (bForDistribtion ? TEXT("-distribution") : TEXT("")), bAutomaticSigning ? TEXT("-autosigning") : TEXT(""));
#else
	FString CmdExe = FPaths::ConvertRelativePathToFull(FPaths::EngineDir() / TEXT("Binaries/DotNET/IOS/IPhonePackager.exe"));
	FString CommandLine = FString::Printf(TEXT("Validate Engine -project \"%s\" -bundlename \"%s\" %s"), *ProjectPath, *(BundleIdentifier), (bForDistribtion ? TEXT("-distribution") : TEXT("")) );
	FString RemoteServerName;
	FString SecondaryRemoteServerName;
	FString RSyncUsername;

#Loc: <Workspace>/Engine/Source/Runtime/IOS/IOSRuntimeSettings/Classes/IOSRuntimeSettings.h:435

Scope (from outer to inner):

file
class        class UIOSRuntimeSettings : public UObject

Source code excerpt:

	// Whether to use automatic signing through Xcode
	UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (EditCondition = "!MacTargetPlatform.XcodeProjectSettings.ShouldDisableIOSSettings"))
	bool bAutomaticSigning;

	// The team ID of the apple developer account to be used to autmatically sign IOS builds.
	// This can be overridden in Turnkey with "RunUAT Turnkey -command=ManageSettings"
	// This value is stripped out when making builds.
	UPROPERTY(GlobalConfig, EditAnywhere, Category = Build, meta = (ConfigHierarchyEditable))
	FString IOSTeamID;

#References in C# build files

This variable is referenced in the following C# build files:

Location: <Workspace>/Engine/Source/Programs/UnrealBuildTool/Platform/IOS/UEBuildIOS.cs:314

		/// true if using Xcode managed provisioning, else false
		/// </summary>
		[ConfigFile(ConfigHierarchyType.Engine, "/Script/IOSRuntimeSettings.IOSRuntimeSettings", "bAutomaticSigning")]
		public readonly bool bAutomaticSigning = false;

		/// <summary>
		/// The IOS Team ID
		/// </summary>
		[ConfigFile(ConfigHierarchyType.Engine, "/Script/IOSRuntimeSettings.IOSRuntimeSettings", "IOSTeamID")]