Adding iphone-ipad-minimum-performance-a12 at build

This is the script I use to add iphone-ipad-minimum-performance-a12 to info plist in Xcode when you build your game in Unity. It makes sure to append iphone-ipad-minimum-performance-a12 to the UIRequiredDeviceCapabilities array instead of overwriting it if it already contains other items - in my case, metal and arm64. I haven’t confirmed it yet on a. non a12 device but in Xcode I can see its automatically and correctly appended it to the UIRequiredDeviceCapabilities array.

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.IO;
using System.Collections.Generic;

public class BuildHelper : MonoBehaviour
{
#if UNITY_IOS
    [PostProcessBuild]
    static void OnPostprocessBuild(BuildTarget buildTarget, string path)
    {
        // Read plist
        var plistPath = Path.Combine(path, "Info.plist");
        var plist = new PlistDocument();
        plist.ReadFromFile(plistPath);
        // Update value
        PlistElementDict rootDict = plist.root;
        rootDict.SetString("NSPhotoLibraryAddUsageDescription", "${PRODUCT_NAME} save screenshots");
        
        // Ensure UIRequiredDeviceCapabilities is an array
        PlistElementArray capabilitiesArray;
        if (rootDict["UIRequiredDeviceCapabilities"] != null)
        {
            // If it's not an array, convert it to one
            var existingElement = rootDict["UIRequiredDeviceCapabilities"];
            if (existingElement is PlistElementArray array)
            {
                capabilitiesArray = array;
            }
            else
            {
                // Create a new array and add the existing single value to it
                capabilitiesArray = rootDict.CreateArray("UIRequiredDeviceCapabilities");
                capabilitiesArray.AddString(existingElement.AsString());
            }
        }
        else
        {
            // Create a new array if it doesn't exist
            capabilitiesArray = rootDict.CreateArray("UIRequiredDeviceCapabilities");
        }

        // Add "iphone-ipad-minimum-performance-a12" if it's not already in the array
        if (!capabilitiesArray.values.Exists(x => x.AsString() == "iphone-ipad-minimum-performance-a12"))
        {
            capabilitiesArray.AddString("iphone-ipad-minimum-performance-a12");
        }

        // Write plist
        File.WriteAllText(plistPath, plist.WriteToString());
    }
#endif
}