예제 #1
0
    private void OnGUI()
    {
        if (GUILayout.Button("标记"))
        {
            SetPackingTagAndAssetBundle();
            //生成打包配置信息
            GenerateABRelation.GenerateRelation();
        }

        if (GUILayout.Button("清除标记"))
        {
            ClearPackingTagAndAssetBundle();
        }

        this.platformType = (PlatformType)EditorGUILayout.EnumPopup(platformType);
        if (platformType == PlatformType.None)
        {
            platformType = PlatformType.Android;
        }
        this.isContainAB             = EditorGUILayout.Toggle("是否同将资源打进EXE: ", this.isContainAB);
        this.buildOptions            = (BuildOptions)EditorGUILayout.EnumFlagsField("BuildOptions(可多选): ", this.buildOptions);
        this.buildAssetBundleOptions = (BuildAssetBundleOptions)EditorGUILayout.EnumFlagsField("BuildAssetBundleOptions(可多选): ", this.buildAssetBundleOptions);

        if (GUILayout.Button("开始打包"))
        {
            if (this.platformType == PlatformType.None)
            {
                Debug.LogError("请选择打包平台!");
                return;
            }
            BuildHelper.Build(this.platformType, this.buildAssetBundleOptions, this.buildOptions, this.isContainAB);
        }
    }
예제 #2
0
            public void WhenBuild_IfNoPhysicalDirectoryExist_ShouldThrow()
            {
                // Arrange
                var mock = new CoreMockGenerator()
                           .MockApplication()
                           .MockApplicationPhysicalDirectoryDoesNotExist();

                // Act, Assert
                var helper    = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object);
                var exception = Assert.Throws <Exception>(() => helper.Build(
                                                              mock.MockApplicationPhysicalPath,
                                                              mock.MockApplicationName));

                Assert.Equal(string.Format("Application directory '{0}' does not exist.", mock.MockApplicationPhysicalPath), exception.Message);
            }
예제 #3
0
        static void Main(string[] args)
        {
            // Debugger.Launch();
            var build = new BuildHelper();

            build.OutputMessage += (s, e) => { Console.WriteLine(e.Message); };

            var buildFile = args.FirstOrDefault(x => x.StartsWith("-b:"));

            buildFile = string.IsNullOrWhiteSpace(buildFile) ? null : buildFile.Substring(3);
            //if (buildFile == null)
            //{
            //    build.Output("Build");
            //}

            build.Build(buildFile);
        }
예제 #4
0
            public void WhenBuild_IfProcessStartNormallyFromDotNet_ShouldWorkOk()
            {
                // Arrange
                var mock = new CoreMockGenerator();

                mock.MockApplication()
                .MockApplicationPhysicalDirectory()
                .MockApplicationProjectFile()
                .MockGetMsBuildDotNetMsbuild()
                .MockBuildProcessStartNormally(mock.MockDotNetMsbuilPath);

                // Act, Assert
                var helper = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object);

                helper.Build(
                    mock.MockApplicationPhysicalPath,
                    mock.MockApplicationName);
            }
예제 #5
0
            public void WhenBuild_IfMsbuildNotFound_ShouldThrow()
            {
                // Arrange
                var mock = new CoreMockGenerator();

                mock.MockApplication()
                .MockApplication()
                .MockApplicationPhysicalDirectory()
                .MockApplicationProjectFile()
                .MockGetMsBuildPathNotFound();

                // Act, Assert
                var helper    = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object);
                var exception = Assert.Throws <Exception>(() => helper.Build(
                                                              mock.MockApplicationPhysicalPath,
                                                              mock.MockApplicationName));

                Assert.Equal("MsBuild.exe was not found on the machine.", exception.Message);
            }
예제 #6
0
            public void WhenBuild_IfProcessStartReturnsFalse_ShouldThrow()
            {
                // Arrange
                var mock = new CoreMockGenerator();

                mock.MockApplication()
                .MockApplicationPhysicalDirectory()
                .MockApplicationProjectFile()
                .MockGetMsBuildPathProgramFilesMsbuild()
                .MockBuildProcessStartFalse(mock.MockProgramFilesMsbuilPath);

                // Act, Assert
                var helper    = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object);
                var exception = Assert.Throws <Exception>(() => helper.Build(
                                                              mock.MockApplicationPhysicalPath,
                                                              mock.MockApplicationName));

                Assert.Equal(string.Format(@"Failed to start msbuild to build a project '{0}' at '{1}'",
                                           mock.MockApplicationName + ".csproj", mock.MockApplicationPhysicalPath), exception.Message);
            }
예제 #7
0
            public void WhenBuild_IfBuildProcessExitCodeNotZero_ShouldThrow()
            {
                // Arrange
                var mock = new CoreMockGenerator();

                mock.MockApplication()
                .MockApplicationPhysicalDirectory()
                .MockApplicationProjectFile()
                .MockGetMsBuildDotNetMsbuild()
                .MockBuildProcessExitCodeNotZero(mock.MockDotNetMsbuilPath);

                // Act, Assert
                var helper    = new BuildHelper(mock.FileSystem.Object, mock.EnvironmentSystem.Object, mock.ProcessRunner.Object);
                var exception = Assert.Throws <Exception>(() => helper.Build(
                                                              mock.MockApplicationPhysicalPath,
                                                              mock.MockApplicationName));

                Assert.Equal(string.Format("There were some errors while trying to build a project '{0}' at '{1}': {2}",
                                           mock.MockApplicationName + ".csproj", mock.MockApplicationPhysicalPath, mock.MockBuildOutput), exception.Message);
            }
예제 #8
0
 public static void BuildWeb()
 {
     BuildHelper.Build(BuildTarget.WebGL);
 }
예제 #9
0
 public static void BuildLinuxUniversal()
 {
     BuildHelper.Build(BuildTarget.StandaloneLinuxUniversal);
 }
예제 #10
0
 public static void BuildLinux64()
 {
     BuildHelper.Build(BuildTarget.StandaloneLinux64);
 }
예제 #11
0
 public static void BuildMac()
 {
     BuildHelper.Build(BuildTarget.StandaloneOSX);
 }
예제 #12
0
 public static void BuildWin64()
 {
     BuildHelper.Build(BuildTarget.StandaloneWindows64);
 }
예제 #13
0
    private void OnGUI()
    {
        if (GUILayout.Button("打开PD"))
        {
            string output = Application.persistentDataPath;
            if (!Directory.Exists(output))
            {
                Directory.CreateDirectory(output);
            }
            output = output.Replace("/", "\\");
            System.Diagnostics.Process.Start("explorer.exe", output);
        }

        this.platformType = (PlatformType)EditorGUILayout.EnumPopup(platformType);

        isBuildInSA = EditorGUILayout.Toggle("是否同将资源打进SA: ", isBuildInSA);


        if (GUILayout.Button("开始打包"))
        {
            if (this.platformType == PlatformType.None)
            {
                Debug.Log("请选择打包平台!");
                return;
            }
            string fold = ResourceConfig.BD_AB + ResourceConfig.Platform;
            if (!Directory.Exists(fold))
            {
                Directory.CreateDirectory(fold);
            }
            //if (!Directory.Exists(ResourceConfig.URL_AB + ResourceConfig.Platform))
            //{
            //    Debug.Log("没有 路径 = " + ResourceConfig.URL_AB + ResourceConfig.Platform);
            //    return;
            //}
            DeleteFileOrFolder(ResourceConfig.BD_AB + ResourceConfig.Platform);
            BuildHelper.Build(this.platformType, isBuildInSA);
        }


        if (GUILayout.Button("设置标签"))
        {
            string path = string.Format("Assets/Download");

            if (Directory.Exists(path))
            {
                DirectoryInfo direction = new DirectoryInfo(path);
                FileInfo[]    files     = direction.GetFiles("*", SearchOption.AllDirectories);
                Debug.Log(files.Length);
                for (int i = 0; i < files.Length; i++)
                {
                    if (files[i].Name.EndsWith(".meta"))
                    {
                        continue;
                    }
                    //if (files[i].Name.EndsWith(".bytes"))
                    //{
                    //    continue;
                    //}
                    string currentFile = files[i].FullName.Replace("\\", "/").Replace(@"\", "/");
                    int    startIndex  = currentFile.IndexOf("Assets");
                    string assetFile   = currentFile.Substring(startIndex, currentFile.Length - startIndex);
                    Debug.Log(assetFile);
                    string        sceneName = Path.GetFileNameWithoutExtension(assetFile);
                    AssetImporter ai        = AssetImporter.GetAtPath(assetFile);
                    ai.assetBundleName = sceneName + ".assetbundle";
                }
            }
        }


        if (GUILayout.Button("删除资源"))
        {
            if (!Directory.Exists(ResourceConfig.SA_AB + ResourceConfig.Platform))
            {
                return;
            }
            DeleteFileOrFolder(ResourceConfig.SA_AB + ResourceConfig.Platform);
            AssetDatabase.Refresh();
        }

        if (GUILayout.Button("打包轻包"))
        {
            BuildHelper.BuildInitial(ResourceConfig.SA_AB + platformType);
        }
    }