Files
tianrunCRM/Assets/CoolapeFrame/Editor/Tools/ECLCreateVerCfg.cs
2020-07-04 14:41:25 +08:00

134 lines
4.3 KiB
C#

/*
********************************************************************************
*Copyright(C),coolae.net
*Author: chenbin
*Version: 2.0
*Date: 2017-01-09
*Description: 工程中资源文件成生md5配置文件
*Others:
*History:
*********************************************************************************
*/
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System;
using Coolape;
//生成版本配置文件
public static class ECLCreateVerCfg
{
static string basePath = "";
static ArrayList replaces = new ArrayList ();
static public Hashtable create2Map (string path)
{
basePath = Application.dataPath + "/";
basePath = basePath.Replace ("/Assets/", "/");
replaces.Clear ();
replaces.Add (basePath + "Assets/StreamingAssets/");
replaces.Add (basePath + "Assets/Resources/");
replaces.Add (basePath + "Assets/");
path = basePath + path;
string lastVerPath = Application.dataPath + "/" + ECLProjectManager.ver4DevelopeMd5;
Hashtable lastVerMap = Utl.fileToMap (lastVerPath);
if (lastVerMap == null) {
lastVerMap = new Hashtable ();
}
Hashtable lastOtherVer = MapEx.getMap (lastVerMap, "other");
Hashtable lastPriorityVer = MapEx.getMap (lastVerMap, "priority");
Hashtable lastCfgdataVer = MapEx.getMap (lastVerMap, "cfgData");
Hashtable outMap = new Hashtable ();
doCreate (path, lastOtherVer, lastPriorityVer, lastCfgdataVer, ref outMap);
return outMap;
}
static public void create (string path, string outPath)
{
Hashtable outMap = create2Map (path);
saveMap (outMap, outPath);
}
static public void saveMap (Hashtable map, string outPath)
{
MemoryStream ms = new MemoryStream ();
B2OutputStream.writeMap (ms, map);
Directory.CreateDirectory (Path.GetDirectoryName (outPath));
File.WriteAllBytes (outPath, ms.ToArray ());
}
static void doCreate (string path, Hashtable lastOtherVer, Hashtable lastPriorityVer, Hashtable lastCfgdataVer, ref Hashtable outMap)
{
string[] fileEntries = Directory.GetFiles (path);
string extension = "";
string filePath = "";
string md5Str = "";
foreach (string fileName in fileEntries) {
extension = Path.GetExtension (fileName);
if (ECLEditorUtl.isIgnoreFile (fileName)) {
continue;
}
filePath = filter (fileName);
filePath = filePath.Replace ("\\", "/");
filePath = filePath.Replace ("/upgradeRes4Publish/", "/upgradeRes/");
if (ECLProjectManager.isModified (fileName)) {
md5Str = Utl.MD5Encrypt (File.ReadAllBytes (fileName));
} else {
md5Str = MapEx.getString (lastOtherVer, filePath);
if (string.IsNullOrEmpty (md5Str)) {
md5Str = MapEx.getString (lastPriorityVer, filePath);
} else if (string.IsNullOrEmpty (md5Str)) {
md5Str = MapEx.getString (lastCfgdataVer, filePath);
}
}
outMap [filePath] = md5Str;
}
string[] dirEntries = Directory.GetDirectories (path);
foreach (string dir in dirEntries) {
//跳过不同平台的资源
#if UNITY_ANDROID
if (Path.GetFileName (dir).Equals ("IOS") || Path.GetFileName(dir).Equals("Standalone") || Path.GetFileName(dir).Equals("StandaloneOSX")) {
continue;
}
#elif UNITY_IOS
if(Path.GetFileName(dir).Equals("Android") || Path.GetFileName(dir).Equals("Standalone") || Path.GetFileName(dir).Equals("StandaloneOSX")) {
continue;
}
#elif UNITY_STANDALONE_WIN
if(Path.GetFileName(dir).Equals("Android") || Path.GetFileName(dir).Equals("IOS") || Path.GetFileName(dir).Equals("StandaloneOSX")) {
continue;
}
#elif UNITY_STANDALONE_OSX
if(Path.GetFileName(dir).Equals("Android") || Path.GetFileName(dir).Equals("IOS") || Path.GetFileName(dir).Equals("Standalone")) {
continue;
}
#elif UNITY_WEBGL
if(Path.GetFileName(dir).Equals("Android") || Path.GetFileName(dir).Equals("IOS") || Path.GetFileName(dir).Equals("Standalone") || Path.GetFileName(dir).Equals("StandaloneOSX")) {
continue;
}
#endif
doCreate(dir, lastOtherVer, lastPriorityVer, lastCfgdataVer, ref outMap);
}
}
static string filter (string path)
{
string str = "";
for (int i = 0; i < replaces.Count; i++) {
str = replaces [i].ToString ();
path = path.Replace (str, "");
}
return path;
}
}