void BuildPlayer(bool packAllRes, bool forceUpdate) { var option = BuildOptions.None; if (debug) { option |= BuildOptions.AllowDebugging; } if (development) { option |= BuildOptions.Development; } if (autoConnectProfile) { option |= BuildOptions.ConnectWithProfiler; } var temps = Apk_Save_Path.Replace("\\", "/").Split('/'); if ((ABPackHelper.GetBuildTarget() == BuildTarget.Android || ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows64 || ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows) && sdkConfig != null) { string lastChannel = string.Empty; for (int i = 0; i < sdkConfig.items.Count; ++i) { StringBuilder final_path = new StringBuilder(); for (int j = 0; j < temps.Length - 1; ++j) { final_path.Append(temps[j] + "/"); } var item = sdkConfig.items[i]; if (item.need_subpack == 0 && !packAllRes) { continue; } if (ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows64 || ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows) { final_path.Append(DateTime.Now.ToString("yyyyMMdd") + "/"); if (!Directory.Exists(final_path.ToString())) { Directory.CreateDirectory(final_path.ToString()); } final_path.Append(item.game_name + "_v"); } else { if (packAllRes) { if (item.development == 1) { option |= BuildOptions.Development; final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_allpack_dev_v"); } else if (item.use_sdk == 1) { final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_allpack_sdk_v"); } else { final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_allpack_test_v"); } } else { if (item.development == 1) { option |= BuildOptions.Development; final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_subpack_dev_v"); } else if (item.use_sdk == 1) { final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_subpack_sdk_v"); } else { final_path.Append(item.game_name + DateTime.Now.ToString("yyyyMMdd") + "_subpack_test_v"); } } } final_path.Append(gameVersion.ToString()); if (ABPackHelper.GetBuildTarget() == BuildTarget.Android) { final_path.Append(".apk"); if (File.Exists(final_path.ToString())) { File.Delete(final_path.ToString()); } // 写入并保存sdk启用配置 item.CopyConfig(); item.CopySDK(); item.SetPlayerSetting(sdkConfig.splash_image); item.SaveSDKConfig(); item.SplitAssets(sdkConfig.split_assets); IncreaseLEBIAN_VERCODE(forceUpdate, item.update_along); if (item.update_along == 0 && forceUpdate) { if (Directory.Exists(Application.streamingAssetsPath)) { Directory.Delete(Application.streamingAssetsPath, true); } } } else if (ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows64 || ABPackHelper.GetBuildTarget() == BuildTarget.StandaloneWindows) { final_path.Append(".exe"); if (Directory.Exists(final_path.ToString())) { Directory.Delete(final_path.ToString(), true); } item.CopyConfig(); } AssetDatabase.Refresh(); BuildPipeline.BuildPlayer(ABPackHelper.GetBuildScenes(), final_path.ToString(), ABPackHelper.GetBuildTarget(), option); AssetDatabase.Refresh(); item.ClearSDK(); SVNHelper.UpdateAll(); } } else if (ABPackHelper.GetBuildTarget() == BuildTarget.iOS) { // 在上传目录新建一个ios_check.txt文件用于判断当前包是否出于提审状态 string checkFile = ABPackHelper.ASSET_PATH + LuaConst.osDir + "/ios_check.txt"; if (File.Exists(checkFile)) { File.Delete(checkFile); } File.WriteAllText(checkFile, "1"); XCConfigItem configItem = XCConfigItem.ParseXCConfig(XCodePostProcess.config_path); if (configItem != null) { PlayerSettings.applicationIdentifier = configItem.bundleIdentifier; PlayerSettings.productName = configItem.product_name; configItem.CopyConfig(); } IOSGenerateHelper.IOSConfusing(); AssetDatabase.Refresh(); BuildPipeline.BuildPlayer(ABPackHelper.GetBuildScenes(), Apk_Save_Path, ABPackHelper.GetBuildTarget(), option); AssetDatabase.Refresh(); } Resources.UnloadUnusedAssets(); GC.Collect(); Debug.Log("<color=green>Build success!</color>"); }
protected string BuildApp(bool packAllRes, bool forceUpdate) { Builder.AddBuildLog("Build App Start !... packAllRes:" + packAllRes + ",force update:" + forceUpdate); var option = BuildOptions.None; if (Builder.IsDebug) { option |= BuildOptions.AllowDebugging; } if (Builder.IsBuildDev) { option |= BuildOptions.Development; } if (Builder.IsAutoConnectProfile) { option |= BuildOptions.ConnectWithProfiler; } string dir = Path.GetDirectoryName(Builder.ApkSavePath); string fileName = Path.GetFileNameWithoutExtension(Builder.ApkSavePath); string time = DateTime.Now.ToString("yyyyMMdd"); string flag = string.Empty; BuildTarget buildTarget = EditorUserBuildSettings.activeBuildTarget; string final_path = string.Empty; if (buildTarget != BuildTarget.iOS) { SDKConfig curSdkConfig = Builder.CurrentConfigSDK; for (int i = 0; i < curSdkConfig.items.Count; i++) { var item = Builder.CurrentConfigSDK.items[i]; BuildOptions targetOptions = option; if (item.development == 1) { targetOptions |= BuildOptions.Development; flag = packAllRes ? "_allpack_dev_v" : "_subpack_dev_v"; } else if (item.use_sdk == 1) { flag = packAllRes ? "_allpack_sdk_v" : "_subpack_sdk_v"; } else { flag = packAllRes ? "_allpack_test_v" : "_subpack_test_v"; } if (buildTarget == BuildTarget.Android) { final_path = string.Concat(dir, "/", fileName, "_", time, flag, Builder.GameVersion.ToString(), ".apk"); if (File.Exists(final_path)) { File.Delete(final_path); } // 写入并保存sdk启用配置 // item.CopyConfig(); // item.CopySDK(); // item.SetPlayerSetting(curSdkConfig.splash_image); // item.SaveSDKConfig(); //item.SplitAssets(sdkConfig.split_assets); if (item.update_along == 0 && forceUpdate) { if (Directory.Exists(Application.streamingAssetsPath)) { Directory.Delete(Application.streamingAssetsPath, true); } } } else if (buildTarget == BuildTarget.StandaloneWindows64 || buildTarget == BuildTarget.StandaloneWindows) { final_path = string.Concat(dir, "/", fileName, "_", time, flag, Builder.GameVersion.ToString(), ".exe"); if (Directory.Exists(final_path)) { Directory.Delete(final_path, true); } item.CopyConfig(); } AssetDatabase.Refresh(); BuildUtil.SwapPathDirectory(final_path); BuildPipeline.BuildPlayer(GetBuildScenes(), final_path, buildTarget, targetOptions); item.ClearSDK(); } } else if (buildTarget == BuildTarget.iOS) { // 在上传目录新建一个ios_check.txt文件用于判断当前包是否出于提审状态 string checkFile = BuilderPreference.ASSET_PATH + "/ios_check.txt"; if (File.Exists(checkFile)) { File.Delete(checkFile); } File.WriteAllText(checkFile, "1"); XCConfigItem configItem = XCConfigItem.ParseXCConfig(XCodePostProcess.config_path); if (configItem != null) { PlayerSettings.applicationIdentifier = configItem.bundleIdentifier; PlayerSettings.productName = configItem.product_name; configItem.CopyConfig(); } // IOSGenerateHelper.IOSConfusing(); AssetDatabase.Refresh(); BuildPipeline.BuildPlayer(GetBuildScenes(), Builder.ApkSavePath, buildTarget, option); } Resources.UnloadUnusedAssets(); GC.Collect(); Builder.AddBuildLog("[end]Build App Finish !..."); return(final_path); }