{"record":{"id":"c9e555e2320e16b0","repo":"Unity-Technologies/UnityCsReference","slug":"the-provided-target-platform-group-name-buildtar","errorCode":null,"errorMessage":"The provided target platform group name ({buildTargetName}) is not valid.","messagePattern":"The provided target platform group name \\((.+?)\\) is not valid\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/PlayerSettings.bindings.cs","lineNumber":445,"sourceCode":"    {\n        private PlayerSettings() { }\n\n        // Lazily (re)created in GetSerializedObject(); reset to null on reload so it rebuilds on next access\n        // (the disposable SerializedObject has no field initializer for the generator to reassign after dispose).\n        [AutoStaticsCleanupOnCodeReload(CleanupStrategy = CleanupStrategy.ResetToDefaultValue)]\n        private static SerializedObject _serializedObject;\n\n        [FreeFunction(\"GetPlayerSettingsPtr\")]\n        private static extern UnityEngine.Object InternalGetPlayerSettingsObject();\n\n        [StaticAccessor(\"PlayerSettingsBindings\", StaticAccessorType.DoubleColon)]\n        internal static extern PlayerSettings GetProjectSettingsPlayerSettings();\n\n        internal static void ValidateBuildTargetNameParameter(string buildTargetName, bool unknownIsValid = false)\n        {\n            // The empty string is the valid form of BuildTargetGroup.Unknown, so don't throw an execption for that case.\n            if (BuildPipeline.GetBuildTargetGroupByName(buildTargetName) == BuildTargetGroup.Unknown && (!unknownIsValid || buildTargetName != \"\"))\n                throw new ArgumentException($\"The provided target platform group name ({buildTargetName}) is not valid.\");\n        }\n\n        internal static SerializedObject GetSerializedObject()\n        {\n            if (_serializedObject == null || _serializedObject.targetObject != InternalGetPlayerSettingsObject())\n                _serializedObject = new SerializedObject(InternalGetPlayerSettingsObject());\n            return _serializedObject;\n        }\n\n        internal static SerializedProperty FindProperty(string name)\n        {\n            SerializedProperty property = GetSerializedObject().FindProperty(name);\n            if (property == null)\n                Debug.LogError(\"Failed to find:\" + name);\n            return property;\n        }\n\n        [Obsolete(\"Use explicit API instead.\")]","sourceCodeStart":427,"sourceCodeEnd":463,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/PlayerSettings.bindings.cs#L427-L463","documentation":"Thrown by PlayerSettings.ValidateBuildTargetNameParameter when the provided build target group name string does not resolve to a known BuildTargetGroup via BuildPipeline.GetBuildTargetGroupByName, returning BuildTargetGroup.Unknown. The only exception is when unknownIsValid is true and the name is an empty string (which represents BuildTargetGroup.Unknown's valid form). This validates that API callers pass a recognized platform name.","triggerScenarios":"Calling any PlayerSettings API that internally calls ValidateBuildTargetNameParameter with a misspelled or unrecognized build target group name string. Examples: passing 'Andriod' instead of 'Android', 'iOS' (case-sensitive), or a platform not installed in the current build.","commonSituations":"Typographical errors in build target names in editor scripts; using a platform name from a build support module that isn't installed; case-sensitivity issues (build target names may be case-sensitive); passing a display name instead of the internal target name.","solutions":["Verify the build target name spelling against BuildPipeline.GetBuildTargetGroupByName — use NamedBuildTarget or BuildTarget enum values instead of raw strings where possible.","Use NamedBuildTarget.FromBuildTargetGroup(BuildTargetGroup.Android) etc. to avoid string-based lookups entirely.","Check that the build support module for the target platform is installed in your Unity editor."],"exampleFix":"// before\nPlayerSettings.SetScriptingDefineSymbols(NamedBuildTarget.Android, defines);\n// but if using a raw string name that's misspelled:\nValidateBuildTargetNameParameter(\"Andriod\"); // typo\n\n// after\nValidateBuildTargetNameParameter(\"Android\");","handlingStrategy":"validation","validationCode":"if (BuildPipeline.GetBuildTargetGroupByName(buildTargetName) != BuildTargetGroup.Unknown\n    || (unknownIsValid && buildTargetName == \"\"))\n    // proceed\nelse\n    throw new ArgumentException($\"Unknown build target: {buildTargetName}\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use NamedBuildTarget or BuildTarget enum values instead of raw platform name strings.","Verify the build support module for the target platform is installed.","Double-check spelling and case of build target group names."],"tags":["unity-editor","player-settings","build-target","argument-validation","configuration"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}