Skip to content

Commit

Permalink
iOS build variant options, closes #61
Browse files Browse the repository at this point in the history
- Add missing ApplyVariant override to actually apply variant options
- Add device type and SDK version variants
- Remove symlink Unity libs variant, as this can now be set using (Release Type) > Advanced Options
  • Loading branch information
robinnorth committed Apr 8, 2021
1 parent 87684e8 commit 64e34e1
Showing 1 changed file with 46 additions and 5 deletions.
51 changes: 46 additions & 5 deletions Editor/Build/Platform/BuildIOS.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
using UnityEditor;
using System;
using UnityEditor;

namespace SuperSystems.UnityBuild
{

[System.Serializable]
[Serializable]
public class BuildIOS : BuildPlatform
{
#region Constants
Expand All @@ -13,6 +14,10 @@ public class BuildIOS : BuildPlatform
private const string _dataDirNameFormat = "{0}_Data";
private const BuildTargetGroup _targetGroup = BuildTargetGroup.iOS;

private const string _deviceTypeVariantId = "Device Type";
private const string _sdkVersionVariantId = "Target SDK";
private const string _buildConfigTypeVariantId = "Build Type";

#endregion

public BuildIOS()
Expand All @@ -36,11 +41,47 @@ public override void Init()
if (variants == null || variants.Length == 0)
{
variants = new BuildVariant[] {
new BuildVariant("XCode", new string[] {"Release", "Debug"}, 0),
new BuildVariant("Symlink Unity Libraries", new string[] {"Disabled", "Enabled"}, 0)
new BuildVariant(_deviceTypeVariantId, Enum.GetNames(typeof(iOSTargetDevice)), 0),
new BuildVariant(_sdkVersionVariantId, Enum.GetNames(typeof(iOSSdkVersion)), 0),
new BuildVariant(_buildConfigTypeVariantId, Enum.GetNames(typeof(iOSBuildType)), 0),
};
}
}
}

public override void ApplyVariant()
{
foreach (var variantOption in variants)
{
string key = variantOption.variantKey;

switch (variantOption.variantName)
{
case _buildConfigTypeVariantId:
SetBuildConfigType(key);
break;
case _deviceTypeVariantId:
SetDeviceType(key);
break;
case _sdkVersionVariantId:
SetSdkVersion(key);
break;
}
}
}

private void SetBuildConfigType(string key)
{
EditorUserBuildSettings.iOSBuildConfigType = (iOSBuildType)Enum.Parse(typeof(iOSBuildType), key);
}

private void SetDeviceType(string key)
{
PlayerSettings.iOS.targetDevice = (iOSTargetDevice)Enum.Parse(typeof(iOSTargetDevice), key);
}

private void SetSdkVersion(string key)
{
PlayerSettings.iOS.sdkVersion = (iOSSdkVersion)Enum.Parse(typeof(iOSSdkVersion), key);
}
}
}

0 comments on commit 64e34e1

Please sign in to comment.