public static void BuildApkMiniNoGenRes() { Version v = Version.LoadVersionFromStreamingAsset(); byte[] bytes = FileUtils.ReadBytesFromStreaming("Audio/GeneratedSoundBanks/Android/Init.bnk", false); FileUtilTool.DeleteFolder("Assets/StreamingAssets/"); //写入Version文件和写入fullApkIdentify文件 Version.SaveVersion2StreamingAsset(v); //写入配置信息 //WriteApkConfig(); //写入其他文件 FileUtils.WriteFile(Application.streamingAssetsPath + "/Audio/GeneratedSoundBanks/Android/Init.bnk", bytes, false); string movePath = string.Format("{0}/{1}", ResSetting.build_root_path, v); FileUtilTool.CopyFolder(movePath + "/Movie", "Assets/StreamingAssets/Movie"); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); string outputPath = string.Format("{0}/{1}/{2}", ResSetting.AssetBundlesOutputPath, ResSetting.GetChannelRes(), v); string location = string.Format("{0}/{1}", outputPath, "TankGirl.apk"); BuildApk(v, location); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); }
public static void ReadLastBuildLog() { try { Debug.Log(versionName); Debug.Log(versionRes); Debug.Log(versionCode); if (File.Exists(tempDataFile)) { string content = FileUtilTool.ReadFile(tempDataFile); lastBuildLog = JsonMapper.ToObject <CustomBuildLog>(content); foreach (var k in lastBuildLog.csmd5) { lastestCSMD5.Add(k.filename, k.md5); } } } catch (Exception e) { Debug.LogError(e.ToString()); } }
public static void BuildIOSFull() { BuildIOSRes(); Version v = Version.LoadVersionFromStreamingAsset(); FileUtilTool.DeleteFolder("Assets/StreamingAssets/"); //写入Version文件和写入fullApkIdentify文件 Version.SaveVersion2StreamingAsset(v); //写入配置信息 WriteIOSConfig(); //拷贝除apk以外的资源 ResTool.CopyResToStreaming(); BuildIOSProject(v); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); //上传资源 //ResTool.UploadRes(); }
public static void CopyResToStreaming() { //拷贝除apk以外的资源 //FileUtilTool.DeleteFolder("Assets/StreamingAssets/"); FileUtilTool.CopyFolder(ResSetting.build_res_path, "Assets/StreamingAssets/"); }
public static void ExportScene() { string[] scenes = MarkTool.GetSceneArray(); string content = string.Join("\n", scenes); FileUtilTool.WriteFile(sceneConfigPath, content); }
public static void BuildStandaloneProject(Version v) { //隐藏Resources目录 BuildTool.ShowResourcesFolder(false); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); string[] levels = new string[] { BuildTool.startScene }; try { string apkPath = string.Format("{0}/{1}", ResSetting.AssetBundlesOutputPath, ResSetting.GetChannelRes()); string location = string.Format("{0}/{1}.exe", apkPath, v); UnityEditor.PlayerSettings.bundleVersion = FileUtilTool.ReadFile("IOS_Build/appleversion.dat"); UnityEditor.PlayerSettings.applicationIdentifier = "com.yxm.tankwar"; FileUtilTool.CreateFolderForFile(location); var result = BuildPipeline.BuildPlayer(levels, location, BuildTarget.StandaloneWindows64, BuildOptions.None); } catch (System.Exception e) { Debug.LogError("build StandaloneWindows64 error: " + e.ToString()); } finally { //恢复 BuildTool.ShowResourcesFolder(true); } }
public static List <RecordInfo> LoadRecordFile(string fileName) { List <RecordInfo> infos = null; if (!File.Exists(fileName)) { return(null); } try { string content = FileUtilTool.ReadFile(fileName); infos = new List <RecordInfo>(); if (!string.IsNullOrEmpty(content)) { string[] lines = content.Split('\n'); foreach (var k in lines) { string[] kv = k.Split('\t'); RecordInfo info = new RecordInfo(kv[0], kv[1]); infos.Add(info); } } } catch (System.Exception e) { Debug.LogError(e.ToString()); return(null); } return(infos); }
public static void BuildApk(Version v, string location) { //隐藏Resources目录 BuildTool.ShowResourcesFolder(false); string content = FileUtilTool.ReadFile(keystoreFilePath); if (!string.IsNullOrEmpty(content)) { string[] lines = content.Replace("\r\n", "\n").Split('\n'); PlayerSettings.Android.keystoreName = lines[0].Trim(); PlayerSettings.Android.keystorePass = lines[1].Trim(); PlayerSettings.Android.keyaliasName = lines[2].Trim(); PlayerSettings.Android.keyaliasPass = lines[3].Trim(); Debug.LogError("PlayerSettings.Android.keystoreName " + PlayerSettings.Android.keystoreName); Debug.LogError("PlayerSettings.Android.keystorePass " + PlayerSettings.Android.keystorePass); Debug.LogError("PlayerSettings.Android.keyaliasName " + PlayerSettings.Android.keyaliasName); Debug.LogError("PlayerSettings.Android.keyaliasPass " + PlayerSettings.Android.keyaliasPass); } FileUtilTool.CreateFolderForFile(location); string[] levels = new string[] { BuildTool.startScene }; try { if (BuildTool.type == BuildTool.BuildType.APK) { if (BuildTool.isDev) { var result = BuildPipeline.BuildPlayer(levels, location, BuildTarget.Android, BuildOptions.ConnectWithProfiler | BuildOptions.Development); } else { var result = BuildPipeline.BuildPlayer(levels, location, BuildTarget.Android, BuildOptions.None); } } else { if (BuildTool.isDev) { var result = BuildPipeline.BuildPlayer(levels, location, BuildTarget.Android, BuildOptions.ConnectWithProfiler | BuildOptions.Development | BuildOptions.AcceptExternalModificationsToPlayer); } else { var result = BuildPipeline.BuildPlayer(levels, location, BuildTarget.Android, BuildOptions.AcceptExternalModificationsToPlayer); } } } catch (System.Exception e) { Debug.LogError("build android error: " + e.ToString()); } finally { //显示Resources目录 BuildTool.ShowResourcesFolder(true); } }
public static void ClearMarkForce() { FileUtilTool.DelFile(m_markRecord); AssetDatabase.RemoveUnusedAssetBundleNames(); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); }
//[MenuItem("Tools/打包/标签/差异化打标签", false, 3)] public static void MarkDiffFromRecord() { EditorUtility.DisplayProgressBar("清除标签...", "...", 0); ClearMarkDir("Assets"); MarkFromRecord(assetrecord_build); EditorUtility.DisplayProgressBar("删除多余资源", "...", 0.33f); //删除多余资源 List <RecordInfo> deletes = LoadRecordFile(record_del); DeleteNoNeedAssetBundle(deletes); EditorUtility.DisplayProgressBar("拷贝上次生成的资源", "...", 0.66f); //拷贝上次生成的资源 if (!Directory.Exists("lastRes/")) { Debug.LogError("上次生成的资源不存在!"); throw new System.Exception("上次生成的资源不存在--目录:lastRes/"); } FileUtilTool.CopyFolder("lastRes/", ResSetting.AssetBundlesPath() + "/"); EditorUtility.DisplayProgressBar("差异化打标签完成", "...", 1f); EditorUtility.ClearProgressBar(); }
public static void UpgradeCodeVersion() { PlayerSettings.Android.bundleVersionCode = versionCode + 1; FileUtilTool.WriteFile(versionCodeFile, PlayerSettings.Android.bundleVersionCode.ToString()); FileUtilTool.WriteFile(Application.streamingAssetsPath + "/" + versionCodeFile, PlayerSettings.Android.bundleVersionCode.ToString()); CallShellCommandForVersionCode(); CallShellCommandForVersionRes(); }
public static void WriteRecordFile(string[] lines, string filePath) { string data = string.Join("\n", lines); FileUtilTool.CreateFolderForFile(filePath); FileUtilTool.DelFile(filePath); FileUtilTool.WriteFile(filePath, data); }
public static void DecryptForFile(string filePath) { if (FileUtils.isEncrypt) { byte[] data = FileUtilTool.ReadBytesOfFile(filePath); FileUtils.Decrypt(ref data); FileUtilTool.WriteBytesOfFile(filePath, data); } }
public static void BuildStandaloneRes() { FileUtilTool.CopyFile("IOS_Build/appleversion.dat", Application.streamingAssetsPath + "/appleversion.dat"); Version v = BuildTool.versionRes; Version.SaveVersion2StreamingAsset(v); BuildTool.SwitchActiveBuildTarget(BuildTarget.StandaloneWindows64); ResTool.BuildLocalRes(); }
public static void DeleteNoNeedAssetBundle(List <RecordInfo> deleted) { foreach (var k in deleted) { string bundleName = GetAssetBundleName(k.fileName); FileUtilTool.DelFile(ResSetting.AssetBundlesPath() + "/" + bundleName); } }
public static void CheckScriptsQuiet() { List <string> difList = new List <string>(); List <string> checkFiles = new List <string>(); string[] csFiles = Directory.GetFiles(Application.dataPath, "*.cs", SearchOption.AllDirectories); string ManifestFile = Application.dataPath + "/Plugins/Android/AndroidManifest.xml"; string[] jarFiles = Directory.GetFiles(Application.dataPath, "*.jar", SearchOption.AllDirectories); checkFiles.AddRange(csFiles); checkFiles.AddRange(jarFiles); checkFiles.Add(ManifestFile); int i = 0; CustomBuildLog fl = new CustomBuildLog(); foreach (string f in checkFiles) { string path = f.Replace('\\', '/'); string md5 = ResCommon.GetFileMD5(path); if (lastestCSMD5.ContainsKey(path)) { if (lastestCSMD5[path] != md5) { difList.Add(path); } } else { difList.Add(path); } i++; newBuildLog.AddData(new FileMD5Data(path, md5)); EditorUtility.DisplayProgressBar("安卓打包", "检查脚本 " + f, (float)i / (float)csFiles.Length); } EditorUtility.ClearProgressBar(); if (difList.Count > 0) { BuildQuietScriptDiff(); } else { BuildQuietResources(); } string json = JsonMapper.ToJson(difList); FileUtilTool.DelFile(diffLogFile); FileUtilTool.WriteFile(diffLogFile, json); }
static void SaveLastBuildLog() { newBuildLog.version = versionRes.ToString(); string jSon = JsonMapper.ToJson(newBuildLog); FileUtilTool.WriteFile(tempDataFile, jSon); FileUtilTool.WriteFile(versionResFile, versionRes.ToString()); }
public static void UploadRes() { string sourcePath = ResSetting.build_res_path; string targetPath = string.Format("\\\\192.168.2.85\\FtpData\\{0}\\{1}", ResSetting.GetChannelRes(), Version.LoadVersionFromStreamingAsset()); EditorUtility.DisplayProgressBar("上传资源", "...", 0); FileUtilTool.CopyFolder(sourcePath, targetPath); EditorUtility.DisplayProgressBar("上传资源", "...", 1); EditorUtility.ClearProgressBar(); }
//[MenuItem("Package/读取场景信息")] public static string[] GetSceneConfig() { string content = FileUtilTool.ReadFile(BuildTool.sceneConfigPath); string[] scenes = content.Split('\n'); //foreach (var s in scenes) //{ // Debug.Log(s); //} return(scenes); }
//[MenuItem("Tools/程序狗专用/Res/MD5")] public static void GenMD5() { FileUtilTool.DelFile(mdFile); string fresfolder = resFolder.Replace("\\", "/"); List <AssetbundleJsonData> data = GetMD5ForFolder(resFolder, fresfolder); AssetbundleJsonMap map = new AssetbundleJsonMap(); map.arrayRes = data.ToArray(); string jsonStr = JsonMapper.ToJson(map); FileUtilTool.WriteFile(mdFile, jsonStr); }
public static void DeleteMainfestFile(string path) { string[] files = Directory.GetFiles(path, "*.manifest", SearchOption.AllDirectories); string output = "Manifest"; FileUtilTool.DeleteFolder(output); foreach (var f in files) { FileUtilTool.DelFile(f); } }
public static void BuildIOSRes() { //AndroidOneKeyTool.UpdateStreaming(); FileUtilTool.CopyFile("IOS_Build/appleversion.dat", Application.streamingAssetsPath + "/appleversion.dat"); Version v = BuildTool.versionRes; //v.UpgradeLittleVersion(); Version.SaveVersion2StreamingAsset(v); //AndroidOneKeyTool.CallShellCommandForVersionRes(); BuildTool.SwitchActiveBuildTarget(BuildTarget.iOS); ResTool.BuildLocalRes(); }
public static void UpdateStreaming() { //确保svn最新 FileUtilTool.DeleteFolder(Application.streamingAssetsPath); FileUtilTool.CreateFolder(Application.streamingAssetsPath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); CallShellCommand(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); }
static AssetBundleFolder() { m_folderList = new List <string>(); string data = FileUtilTool.ReadFile(dataFile); string[] lines = data.Split('\n'); foreach (string line in lines) { if (!string.IsNullOrEmpty(line)) { string content = line.Replace("\r", ""); m_folderList.Add(content); } } }
public static void CompressFolder(string folder) { string[] arrFile = Directory.GetFiles(folder); for (int i = 0; i < arrFile.Length; i++) { string file = arrFile[i]; //ResSetting.Compress(file, string.Format("{0}.{1}", file, "lzma")); FileUtilTool.DelFile(file); } foreach (string d in Directory.GetDirectories(folder)) { CompressFolder(d); } }
public static void CopyStreamingToRes() { FileUtilTool.DeleteFolder("Assets/StreamingAssets/assetbundles"); FileUtilTool.DelFile("Assets/StreamingAssets/assetrecord.dat"); FileUtilTool.DelFile("Assets/StreamingAssets/MD.dat"); FileUtilTool.DelFile("Assets/StreamingAssets/MD2.dat"); FileUtilTool.DelFile("Assets/StreamingAssets/fullApkIdentify"); FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Windows"); FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android"); FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android_Original"); FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS"); FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS_Original"); // #if UNITY_ANDROID //// FileUtilTool.CopyFolder("WwiseProjects/OutPath/Android_Original", "Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android_Original"); // FileUtilTool.CopyFolder("WwiseProjects/OutPath/Android", "Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android"); // #elif UNITY_IOS //// FileUtilTool.CopyFolder("WwiseProjects/OutPath/iOS_Original", "Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS_Original"); // FileUtilTool.CopyFolder("WwiseProjects/OutPath/iOS", "Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS"); // #endif //#if UNITY_ANDROID // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS_Original"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Windows"); //#elif UNITY_IOS // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Windows"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android_Original"); //#else // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android_Original"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/Android"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS"); // FileUtilTool.DeleteFolder("Assets/StreamingAssets/Audio/GeneratedSoundBanks/iOS_Original"); //#endif FileUtilTool.CopyFolder(FileUtils.StreamingPath(), ResSetting.build_res_path); FileUtilTool.CopyFolder(ResSetting.build_ab_path, ResSetting.build_res_path + "/assetbundles"); BuildAssetBundleTool.DeleteMainfestFile(ResSetting.build_res_path); ClearFileWithExtension(ResSetting.build_res_path, ".meta"); //加密资源 ResTool.GenEncrypt(); ResTool.GenMD5(); ResTool.GenMD5Second(); }
void OnGUI() { release = EditorGUILayout.TextField("正式版本号", release); beta = EditorGUILayout.TextField("Beta版本号", beta); if (GUILayout.Button("保存")) { string path = EditorUtility.SaveFilePanel("保存地方", Application.dataPath, "version", "dat"); VersionData data = new VersionData(); data.beta = beta; data.relase = release; FileUtilTool.WriteFile(path, LitJson.JsonMapper.ToJson(data)); } }
//[MenuItem("Package/测试/生成场景文件のMD5", false, 4)] public static void GenMD5() { List <string> md5s = new List <string>(); string[] files = Directory.GetFiles("test/", "*.*", SearchOption.AllDirectories); foreach (var k in files) { md5s.Add(k + "\t" + ResCommon.GetFileMD5(k)); //if(!k.EndsWith(".manifest")) //{ // byte[] bs = File.ReadAllBytes(k); // AssetBundle ab = AssetBundle.LoadFromMemory(bs); // string []assetNames = ab.GetAllAssetNames(); //} } FileUtilTool.WriteFile("testscenes.md5", string.Join("\r\n", md5s.ToArray())); }
/// <summary> /// 读取记录文件 /// </summary> /// <param name="recordFile"></param> /// <returns></returns> public static List <string> ReadRecord(string recordFile) { if (!File.Exists(recordFile)) { Debug.LogError(recordFile + " not exsits!"); throw new FileNotFoundException(recordFile); } string content = FileUtilTool.ReadFile(recordFile); string[] lines = new string[0]; if (!string.IsNullOrEmpty(content)) { lines = content.Split('\n'); } return(new List <string>(lines)); }
public static void BuildApkNoGenRes() { Version v = BuildTool.versionRes; FileUtilTool.DeleteFolder("Assets/StreamingAssets/"); //写入Version文件和写入fullApkIdentify文件 Version.SaveVersion2StreamingAsset(v); //写入配置信息 //WriteApkConfig(); //拷贝除apk以外的资源 ResTool.CopyResToStreaming(); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); //打包 string apkPath = string.Format("{0}/{1}", ResSetting.AssetBundlesOutputPath, ResSetting.GetChannelRes()); string location = ""; if (BuildTool.type == BuildTool.BuildType.APK) { location = string.Format("{0}/{4}/TankGirl{1}({2}).res{3}.apk", apkPath, PlayerSettings.bundleVersion, PlayerSettings.Android.bundleVersionCode, v, string.Format("{0:yyyyMMddHHmm}", System.DateTime.Now)); } else { location = string.Format("{0}/TankGirl_AndroidProject/", apkPath); string path = location.Replace(@"\", "/"); if (path.Contains("/")) { string dir = path.Substring(0, path.LastIndexOf("/")); DeleteADirectory(dir); } } BuildApk(v, location); AssetDatabase.Refresh(); AssetDatabase.SaveAssets(); }