private static UnityEditor.Build.Reporting.BuildReport UnityBuildPlayer()
    {
#if UNITY_2020_1_OR_NEWER || UNITY_2019_4_OR_NEWER
        EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
#endif
        PXR_BuildToolManager.GetScenesEnabled();

        var buildOptions = BuildOptions.None;
        if (EditorUserBuildSettings.development)
        {
            buildOptions |= (BuildOptions.Development | BuildOptions.AllowDebugging);
        }
        buildOptions |= BuildOptions.AutoRunPlayer;
#if !UNITY_2020_1_OR_NEWER && !UNITY_2019_4_OR_NEWER
        buildOptions |= BuildOptions.AcceptExternalModificationsToPlayer;
#endif

        var buildPlayerOptions = new BuildPlayerOptions
        {
            scenes           = PXR_BuildToolManager.buildSceneNameList.ToArray(),
            locationPathName = gradleTempExport,
            target           = BuildTarget.Android,
            options          = buildOptions
        };

        var buildResult = BuildPipeline.BuildPlayer(buildPlayerOptions);
        return(buildResult);
    }
    private void OnGUI()
    {
        this.titleContent.text = "Scene Quick Preview";
        InitLogUI();
        GUILayout.Space(10.0f);
        GUILayout.Label("Scenes", EditorStyles.boldLabel);
        GUIContent selectScenesBtn = new GUIContent("Select Scenes");

        foreach (PXR_BuildToolManager.SceneInfo scene in PXR_BuildToolManager.buildSceneInfoList)
        {
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField(scene.sceneName, GUILayout.ExpandWidth(true));
                GUILayout.FlexibleSpace();
            }
            EditorGUILayout.EndHorizontal();
        }

        EditorGUILayout.BeginHorizontal();
        {
            GUIContent sceneBtnTxt = new GUIContent("Build Scene(s)");
            var        sceneBtnRt  = GUILayoutUtility.GetRect(sceneBtnTxt, GUI.skin.button, GUILayout.Width(200));
            if (GUI.Button(sceneBtnRt, sceneBtnTxt))
            {
                PXR_BuildToolManager.BuildScenes(forceRestart);
                GUIUtility.ExitGUI();
            }

            GUIContent forceRestartLabel = new GUIContent("Force Restart [?]", "Restart the app after scene bundles are finished deploying.");
            forceRestart = GUILayout.Toggle(forceRestart, forceRestartLabel, GUILayout.Width(200));

            var buildSettingBtnRt = GUILayoutUtility.GetRect(selectScenesBtn, GUI.skin.button, GUILayout.Width(200));
            if (GUI.Button(buildSettingBtnRt, selectScenesBtn))
            {
                GetWindow(System.Type.GetType("UnityEditor.BuildPlayerWindow,UnityEditor"));
            }
        }
        EditorGUILayout.EndHorizontal();

        GUILayout.Space(10.0f);
        GUILayout.Label("Utilities", EditorStyles.boldLabel);

        EditorGUILayout.BeginHorizontal();
        {
            GUIContent restartBtnTxt = new GUIContent("Restart App");
            var        restartBtnRt  = GUILayoutUtility.GetRect(restartBtnTxt, GUI.skin.button, GUILayout.Width(200));
            if (GUI.Button(restartBtnRt, restartBtnTxt))
            {
                if (!PXR_BuildToolManager.IsInstalledAPP())
                {
                    PrintError("App is not install.");
                    return;
                }

                PXR_BuildToolManager.RestartApp();
            }

            GUIContent uninstallTxt   = new GUIContent("Uninstall APP");
            var        uninstallBtnRt = GUILayoutUtility.GetRect(uninstallTxt, GUI.skin.button, GUILayout.Width(200));
            if (GUI.Button(uninstallBtnRt, uninstallTxt))
            {
                PXR_BuildToolManager.UninstallAPP();
                PXR_BuildToolManager.IsInstalledAPP();
            }

            GUIContent deleteCacheBundlesTxt   = new GUIContent("Delete Cache Bundles");
            var        deleteCacheBundlesBtnRt = GUILayoutUtility.GetRect(deleteCacheBundlesTxt, GUI.skin.button, GUILayout.Width(200));
            if (GUI.Button(deleteCacheBundlesBtnRt, deleteCacheBundlesTxt))
            {
                PXR_BuildToolManager.DeleteCacheBundles();
            }
        }
        EditorGUILayout.EndHorizontal();

        GUILayout.Space(10.0f);
        GUILayout.Label("Log", EditorStyles.boldLabel);

        if (!string.IsNullOrEmpty(log))
        {
            GUILayout.Label(log, logStyle, GUILayout.Height(30.0f));
        }
    }
 private void OnDestroy()
 {
     PXR_BuildToolManager.DeleteCachePreviewIndexFile();
     log = null;
 }
 private void OnEnable()
 {
     PXR_BuildToolManager.GetScenesEnabled();
     EditorBuildSettings.sceneListChanged += PXR_BuildToolManager.GetScenesEnabled;
 }