private static BuildSettings LoadBuildSettings()
 {
     BuildSettings buildSettings = new BuildSettings
         {
             BuildTarget = BuildTarget,
             BuildType = BuildType,
             BundleVersion = BundleVersion
         };
     return buildSettings;
 }
예제 #2
0
        public static BuildSettings Parse(string[] args)
        {
            OptionSet.Parse(args);

            BuildSettings buildSettings = new BuildSettings
            {
                BuildTarget = optionBuildTarget,
                BuildType   = optionBuildType,
                BuildPath   = optionBuildPath
            };

            if (optionAndroidBundleVersionCode.HasValue)
            {
                buildSettings.Android.BundleVersionCode = optionAndroidBundleVersionCode.Value;
            }
            if (optionBundleVersion != null)
            {
                buildSettings.BundleVersion = optionBundleVersion;
            }

            return(buildSettings);
        }
예제 #3
0
        /// <summary>
        ///   Performs the build from the command line.
        ///   Command line options:
        ///   <para>
        ///     buildTarget     Platform to build.
        ///   </para>
        ///   <para>
        ///     buildPath       Path to store the build.
        ///   </para>
        ///   <para>
        ///     buildType       Type of configuration to build.
        ///   </para>
        /// </summary>
        public void PerformBuild()
        {
            string[]      args          = Environment.GetCommandLineArgs();
            BuildSettings buildSettings = null;

            try
            {
                buildSettings = BuildOptionSet.Parse(args);
            }
            catch (OptionException e)
            {
                Debug.LogError("BuildPlayer.PerformBuild: " + e.Message);
                EditorApplication.Exit(1);
            }

            bool success = this.PerformBuild(buildSettings);

            if (!success)
            {
                EditorApplication.Exit(1);
            }
        }
예제 #4
0
        public void OnGUI()
        {
            BuildManager buildManager = new BuildManager();

            EditorGUI.BeginChangeCheck();

            GUILayout.Label("Settings", EditorStyles.boldLabel);

            this.buildSettings.BuildTarget =
                (BuildTarget)EditorGUILayout.EnumPopup("Build Target", this.buildSettings.BuildTarget);
            this.buildSettings.BuildType =
                (BuildType)EditorGUILayout.EnumPopup("Build Type", this.buildSettings.BuildType);
            this.buildSettings.BundleVersion =
                EditorGUILayout.TextField(
                    new GUIContent("Bundle Version", "Version number which is displayed to user."),
                    this.buildSettings.BundleVersion);

            // Additional settings depending on build target.
            if (this.buildSettings.BuildTarget == BuildTarget.Android)
            {
                EditorGUILayout.Separator();

                GUILayout.Label("Android");
                EditorGUI.indentLevel++;

                this.buildSettings.Android.BundleVersionCode = EditorGUILayout.IntField(
                    "Bundle Version Code", this.buildSettings.Android.BundleVersionCode);

                EditorGUI.indentLevel--;
            }

            if (EditorGUI.EndChangeCheck())
            {
                // Save build settings.
                BuildWizardPrefs.BuildSettings = this.buildSettings;
            }

            EditorGUILayout.Separator();

            GUILayout.Label("Build", EditorStyles.boldLabel);

            if (InternalEditorUtility.HasPro())
            {
                if (GUILayout.Button("Build"))
                {
                    buildManager.PerformBuild(this.buildSettings);
                }

                GUILayout.Label("Manual Build", EditorStyles.boldLabel);
            }

            if (GUILayout.Button(new GUIContent("Prepare", "Prepares everything for the build.")))
            {
                // Store build settings for restore.
                if (previousBuildSettings == null)
                {
                    previousBuildSettings = new BuildSettings();
                }

                // Prepare build.
                EditorUserBuildSettings.SwitchActiveBuildTarget(this.buildSettings.BuildTarget);
                buildManager.PrepareBuild(this.buildSettings);

                Debug.Log("Build prepared for settings: " + this.buildSettings);
            }

            EditorGUILayout.HelpBox(
                "After 'Prepare' you have to perform the build by yourself via File/Build. Use 'Restore' afterwards.",
                MessageType.Info);

            if (
                GUILayout.Button(
                    new GUIContent("Restore", "Restores everything after a build to work again in the editor.")))
            {
                // Restore editor.
                buildManager.RestoreEditor(previousBuildSettings ?? new BuildSettings());

                Debug.Log("Build restored for editor use.");
            }
        }
 private static void SaveBuildSettings(BuildSettings buildSettings)
 {
     BuildTarget = buildSettings.BuildTarget;
     BuildType = buildSettings.BuildType;
     BundleVersion = buildSettings.BundleVersion;
 }
예제 #6
0
 public void PrepareBuild(BuildSettings buildSettings)
 {
     this.OnPreBuild(buildSettings);
     this.SetBuildConfiguration(buildSettings);
 }
예제 #7
0
        public static BuildSettings Parse(string[] args)
        {
            OptionSet.Parse(args);

            BuildSettings buildSettings = new BuildSettings
                {
                    BuildTarget = optionBuildTarget,
                    BuildType = optionBuildType,
                    BuildPath = optionBuildPath
                };
            if (optionAndroidBundleVersionCode.HasValue)
            {
                buildSettings.Android.BundleVersionCode = optionAndroidBundleVersionCode.Value;
            }
            if (optionBundleVersion != null)
            {
                buildSettings.BundleVersion = optionBundleVersion;
            }

            return buildSettings;
        }
예제 #8
0
 private static void SaveBuildSettings(BuildSettings buildSettings)
 {
     BuildTarget   = buildSettings.BuildTarget;
     BuildType     = buildSettings.BuildType;
     BundleVersion = buildSettings.BundleVersion;
 }
예제 #9
0
        public void OnGUI()
        {
            BuildManager buildManager = new BuildManager();

            EditorGUI.BeginChangeCheck();

            GUILayout.Label("Settings", EditorStyles.boldLabel);

            this.buildSettings.BuildTarget =
                (BuildTarget)EditorGUILayout.EnumPopup("Build Target", this.buildSettings.BuildTarget);
            this.buildSettings.BuildType =
                (BuildType)EditorGUILayout.EnumPopup("Build Type", this.buildSettings.BuildType);
            this.buildSettings.BundleVersion =
                EditorGUILayout.TextField(
                    new GUIContent("Bundle Version", "Version number which is displayed to user."),
                    this.buildSettings.BundleVersion);

            // Additional settings depending on build target.
            if (this.buildSettings.BuildTarget == BuildTarget.Android)
            {
                EditorGUILayout.Separator();

                GUILayout.Label("Android");
                EditorGUI.indentLevel++;

                this.buildSettings.Android.BundleVersionCode = EditorGUILayout.IntField(
                    "Bundle Version Code", this.buildSettings.Android.BundleVersionCode);

                EditorGUI.indentLevel--;
            }

            if (EditorGUI.EndChangeCheck())
            {
                // Save build settings.
                BuildWizardPrefs.BuildSettings = this.buildSettings;
            }

            EditorGUILayout.Separator();

            GUILayout.Label("Build", EditorStyles.boldLabel);

            if (InternalEditorUtility.HasPro())
            {
                if (GUILayout.Button("Build"))
                {
                    buildManager.PerformBuild(this.buildSettings);
                }

                GUILayout.Label("Manual Build", EditorStyles.boldLabel);
            }

            if (GUILayout.Button(new GUIContent("Prepare", "Prepares everything for the build.")))
            {
                // Store build settings for restore.
                if (previousBuildSettings == null)
                {
                    previousBuildSettings = new BuildSettings();
                }

                // Prepare build.
                EditorUserBuildSettings.SwitchActiveBuildTarget(this.buildSettings.BuildTarget);
                buildManager.PrepareBuild(this.buildSettings);

                Debug.Log("Build prepared for settings: " + this.buildSettings);
            }

            EditorGUILayout.HelpBox(
                "After 'Prepare' you have to perform the build by yourself via File/Build. Use 'Restore' afterwards.",
                MessageType.Info);

            if (
                GUILayout.Button(
                    new GUIContent("Restore", "Restores everything after a build to work again in the editor.")))
            {
                // Restore editor.
                buildManager.RestoreEditor(previousBuildSettings ?? new BuildSettings());

                Debug.Log("Build restored for editor use.");
            }
        }
예제 #10
0
        private void SetBuildConfiguration(BuildSettings buildSettings)
        {
            BuildConfiguration buildConfiguration = null;
            switch (buildSettings.BuildType)
            {
                case BuildType.Debug:
                    {
                        buildConfiguration = this.BuildConfigurationDebug;
                    }
                    break;
                case BuildType.Release:
                    {
                        buildConfiguration = this.BuildConfigurationRelease;
                    }
                    break;
            }

            if (buildConfiguration != null)
            {
                // Setup build configuration.
                PlayerSettings.productName = buildConfiguration.ProductName;
                PlayerSettings.bundleIdentifier = buildConfiguration.AndroidBundleIdentifier;
            }

            // Setup special settings.
            PlayerSettings.keystorePass = this.AndroidKeystorePass;
            PlayerSettings.keyaliasPass = this.AndroidKeyaliasPass;
            PlayerSettings.bundleVersion = buildSettings.BundleVersion;
            PlayerSettings.Android.bundleVersionCode = buildSettings.Android.BundleVersionCode;
            EditorUserBuildSettings.development = buildSettings.BuildType == BuildType.Debug;

            switch (buildSettings.BuildTarget)
            {
                case BuildTarget.WSAPlayer:
                    {
                        PlayerSettings.productName = this.BuildConfigurationRelease.ProductName;
                    }
                    break;
            }
        }
예제 #11
0
 private void OnPreBuild(BuildSettings buildSettings)
 {
     var handler = this.PreBuild;
     if (handler != null)
     {
         handler(buildSettings);
     }
 }
예제 #12
0
        /// <summary>
        ///   Restores everything after a build to work again in the editor.
        /// </summary>
        public void RestoreEditor(BuildSettings buildSettings = null)
        {
            if (this.BuildConfigurationEditor != null)
            {
                // Use build configuration of editor.
                PlayerSettings.productName = this.BuildConfigurationEditor.ProductName;
                PlayerSettings.bundleIdentifier = this.BuildConfigurationEditor.AndroidBundleIdentifier;
            }

            this.SetBuildConfiguration(buildSettings ?? this.EditorBuildSettings);

            this.OnPostBuild();
        }
예제 #13
0
 public void PrepareBuild(BuildSettings buildSettings)
 {
     this.OnPreBuild(buildSettings);
     this.SetBuildConfiguration(buildSettings);
 }
예제 #14
0
        /// <summary>
        ///   Performs the build of the specified target to the specified file path.
        /// </summary>
        /// <returns>True if the build was successful; otherwise, false.</returns>
        public bool PerformBuild(BuildSettings buildSettings)
        {
            Debug.Log(string.Format("Building with settings: {0}", buildSettings));

            this.PrepareBuild(buildSettings);

            // Collect scenes.
            var scenes = UnityEditor.EditorBuildSettings.scenes.Select(scene => scene.path);

            foreach (var scene in scenes)
            {
                Debug.Log("Adding scene to build: " + scene);
            }

            // Make sure build directory exists.
            if (string.IsNullOrEmpty(buildSettings.BuildPath))
            {
                buildSettings.BuildPath = this.EditorBuildSettings.GetDefaultBuildPath(buildSettings.BuildTarget);
            }

            string buildDirectory = Path.GetDirectoryName(buildSettings.BuildPath);
            if (buildDirectory != null)
            {
                Debug.Log(string.Format("Creating directory {0}", buildDirectory));
                Directory.CreateDirectory(buildDirectory);
            }

            // Determine build options.
            BuildOptions buildOptions = BuildOptions.None;
            switch (buildSettings.BuildType)
            {
                case BuildType.Debug:
                    {
                        buildOptions = BuildOptions.Development | BuildOptions.AllowDebugging;
                    }
                    break;
            }

            // Build player.
            string errorMessage = BuildPipeline.BuildPlayer(
                scenes.ToArray(), buildSettings.BuildPath, buildSettings.BuildTarget, buildOptions);

            this.RestoreEditor();

            return string.IsNullOrEmpty(errorMessage);
        }