Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        public static void CopyResToStreaming()
        {
            //拷贝除apk以外的资源

            //FileUtilTool.DeleteFolder("Assets/StreamingAssets/");
            FileUtilTool.CopyFolder(ResSetting.build_res_path, "Assets/StreamingAssets/");
        }
Ejemplo n.º 5
0
        public static void ExportScene()
        {
            string[] scenes  = MarkTool.GetSceneArray();
            string   content = string.Join("\n", scenes);

            FileUtilTool.WriteFile(sceneConfigPath, content);
        }
Ejemplo n.º 6
0
        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);
            }
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
 public static void ClearMarkForce()
 {
     FileUtilTool.DelFile(m_markRecord);
     AssetDatabase.RemoveUnusedAssetBundleNames();
     AssetDatabase.Refresh();
     AssetDatabase.SaveAssets();
 }
Ejemplo n.º 10
0
        //[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();
        }
Ejemplo n.º 11
0
 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();
 }
Ejemplo n.º 12
0
        public static void WriteRecordFile(string[] lines, string filePath)
        {
            string data = string.Join("\n", lines);

            FileUtilTool.CreateFolderForFile(filePath);
            FileUtilTool.DelFile(filePath);
            FileUtilTool.WriteFile(filePath, data);
        }
Ejemplo n.º 13
0
 public static void DecryptForFile(string filePath)
 {
     if (FileUtils.isEncrypt)
     {
         byte[] data = FileUtilTool.ReadBytesOfFile(filePath);
         FileUtils.Decrypt(ref data);
         FileUtilTool.WriteBytesOfFile(filePath, data);
     }
 }
Ejemplo n.º 14
0
        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();
        }
Ejemplo n.º 15
0
        public static void DeleteNoNeedAssetBundle(List <RecordInfo> deleted)
        {
            foreach (var k in deleted)
            {
                string bundleName = GetAssetBundleName(k.fileName);

                FileUtilTool.DelFile(ResSetting.AssetBundlesPath() + "/" + bundleName);
            }
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        static void SaveLastBuildLog()
        {
            newBuildLog.version = versionRes.ToString();
            string jSon = JsonMapper.ToJson(newBuildLog);

            FileUtilTool.WriteFile(tempDataFile, jSon);

            FileUtilTool.WriteFile(versionResFile, versionRes.ToString());
        }
Ejemplo n.º 18
0
        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();
        }
Ejemplo n.º 19
0
        //[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);
        }
Ejemplo n.º 20
0
        //[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);
        }
Ejemplo n.º 21
0
        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);
            }
        }
Ejemplo n.º 22
0
        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();
        }
Ejemplo n.º 23
0
        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);
        }
Ejemplo n.º 24
0
        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);
                }
            }
        }
Ejemplo n.º 25
0
        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);
            }
        }
Ejemplo n.º 26
0
        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();
        }
Ejemplo n.º 27
0
        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));
            }
        }
Ejemplo n.º 28
0
        //[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()));
        }
Ejemplo n.º 29
0
        /// <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));
        }
Ejemplo n.º 30
0
        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();
        }