105 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			105 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								using UnityEngine;
							 | 
						|||
| 
								 | 
							
								using UnityEditor;
							 | 
						|||
| 
								 | 
							
								using System;
							 | 
						|||
| 
								 | 
							
								using System.Linq;
							 | 
						|||
| 
								 | 
							
								using UnityEditor.Callbacks;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								public class AmazonBuildScript
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
								    public static string DEFAULT_APK_NAME = "APSUnityTestApp.apk";
							 | 
						|||
| 
								 | 
							
								    public static string DEFAULT_IOS_BUILD_DIR = "Builds/iOS";
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static void BuildIos()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        string[] scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray();
							 | 
						|||
| 
								 | 
							
								        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS);
							 | 
						|||
| 
								 | 
							
								        string outputFileName = GetArg("-output", DEFAULT_IOS_BUILD_DIR);
							 | 
						|||
| 
								 | 
							
								        BuildPipeline.BuildPlayer(scenes, outputFileName, BuildTarget.iOS, BuildOptions.Development);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static void BuildAndroid()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        string[] scenes = EditorBuildSettings.scenes.Where(s => s.enabled).Select(s => s.path).ToArray();
							 | 
						|||
| 
								 | 
							
								        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Android, BuildTarget.Android);
							 | 
						|||
| 
								 | 
							
								        string outputFileName = GetArg("-output", DEFAULT_APK_NAME);
							 | 
						|||
| 
								 | 
							
								        BuildPipeline.BuildPlayer(scenes, outputFileName, BuildTarget.Android, BuildOptions.Development);
							 | 
						|||
| 
								 | 
							
								        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static void SwitchToIos()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.iOS, BuildTarget.iOS);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    private static string GetArg(string name, string defaultVal)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        var args = System.Environment.GetCommandLineArgs();
							 | 
						|||
| 
								 | 
							
								        for (int i = 0; i < args.Length; i++)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            if (args[i] == name && args.Length > i + 1)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                return args[i + 1];
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return defaultVal;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    public static void BuildExternalAndroid()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        string[] envvars = new string[]
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								          "ANDROID_KEYSTORE_NAME", "ANDROID_KEYSTORE_PASSWORD", "ANDROID_KEYALIAS_NAME", "ANDROID_KEYALIAS_PASSWORD", "ANDROID_SDK_ROOT"
							 | 
						|||
| 
								 | 
							
								        };
							 | 
						|||
| 
								 | 
							
								        if (EnvironmentVariablesMissing(envvars))
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            Environment.ExitCode = -1;
							 | 
						|||
| 
								 | 
							
								            return; // note, we can not use Environment.Exit(-1) - the buildprocess will just hang afterwards
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //Available Playersettings: https://docs.unity3d.com/ScriptReference/PlayerSettings.Android.html
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //set the internal apk version to the current unix timestamp, so this increases with every build
							 | 
						|||
| 
								 | 
							
								        PlayerSettings.Android.bundleVersionCode = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //set the other settings from environment variables
							 | 
						|||
| 
								 | 
							
								        PlayerSettings.Android.keystoreName = Environment.GetEnvironmentVariable("ANDROID_KEYSTORE_NAME");
							 | 
						|||
| 
								 | 
							
								        PlayerSettings.Android.keystorePass = Environment.GetEnvironmentVariable("ANDROID_KEYSTORE_PASSWORD");
							 | 
						|||
| 
								 | 
							
								        PlayerSettings.Android.keyaliasName = Environment.GetEnvironmentVariable("ANDROID_KEYALIAS_NAME");
							 | 
						|||
| 
								 | 
							
								        PlayerSettings.Android.keyaliasPass = Environment.GetEnvironmentVariable("ANDROID_KEYALIAS_PASSWORD");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        EditorPrefs.SetString("AndroidSdkRoot", Environment.GetEnvironmentVariable("ANDROID_SDK_ROOT"));
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //Get the apk file to be built from the command line argument
							 | 
						|||
| 
								 | 
							
								        string outputapk = Environment.GetCommandLineArgs().Last();
							 | 
						|||
| 
								 | 
							
								        BuildPipeline.BuildPlayer(GetScenePaths(), outputapk, BuildTarget.Android, BuildOptions.None);
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    static string[] GetScenePaths()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        string[] scenes = new string[EditorBuildSettings.scenes.Length];
							 | 
						|||
| 
								 | 
							
								        for (int i = 0; i < scenes.Length; i++)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            scenes[i] = EditorBuildSettings.scenes[i].path;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        return scenes;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    static bool EnvironmentVariablesMissing(string[] envvars)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        string value;
							 | 
						|||
| 
								 | 
							
								        bool missing = false;
							 | 
						|||
| 
								 | 
							
								        foreach (string envvar in envvars)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            value = Environment.GetEnvironmentVariable(envvar);
							 | 
						|||
| 
								 | 
							
								            if (value == null)
							 | 
						|||
| 
								 | 
							
								            {
							 | 
						|||
| 
								 | 
							
								                Console.Write("BUILD ERROR: Required Environment Variable is not set: ");
							 | 
						|||
| 
								 | 
							
								                Console.WriteLine(envvar);
							 | 
						|||
| 
								 | 
							
								                missing = true;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return missing;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |