| New file |
| | |
| | | using System.Diagnostics; |
| | | using System.IO; |
| | | using System.Text; |
| | | using UnityEditor; |
| | | using UnityEngine; |
| | | using Debug = UnityEngine.Debug; |
| | | |
| | | public class UpLoadBuglySo |
| | | { |
| | | private static string[] soFolders = {"arm64-v8a", "armeabi-v7a","unity"}; |
| | | private static string soCmdAnroid = |
| | | "java -jar buglyqq-upload-symbol.jar -inputSymbol #SOPATH# -appid #ID# -appkey #KEY# -bundleid #BUNDLEID# -version #VERSION# -platform Android"; |
| | | |
| | | private static string soCmdIOS = |
| | | "java -jar buglyqq-upload-symbol.jar -inputSymbol ./IOS/UnityFramework.framework.dSYM -appid #ID# -appkey #KEY# -bundleid #BUNDLEID# -version #VERSION# -platform IOS"; |
| | | |
| | | /// <summary> |
| | | /// 打完包后调用此方法 自动上传符号表文件 |
| | | /// </summary> |
| | | [MenuItem("Tools/自动上传符号表/Android", priority = 2049)] |
| | | public static void UploadAndroidBuglyso(){ |
| | | DeleteSo(); |
| | | CopyBuglySo(); |
| | | if (EditCommand(out string arg)) { |
| | | Debug.Log("EditCommand: " + arg); |
| | | RunCmd(arg, BuglyToolPath()); |
| | | } |
| | | } |
| | | [MenuItem("Tools/自动上传符号表/IOS", priority = 2049)] |
| | | public static void UploadIOSBuglyso() |
| | | { |
| | | if (EditCommandIOS(out string arg)) |
| | | { |
| | | Debug.Log("EditCommand: " + arg); |
| | | RunCmd(arg, BuglyToolPath()); |
| | | } |
| | | } |
| | | private static void CopyBuglySo(){ |
| | | FileTool.CopyFolder(DeBugSOPath(), BuglyToolPath() + "/Android/"); |
| | | FileTool.OpenFolder(BuglyToolPath()); |
| | | } |
| | | |
| | | |
| | | private static void DeleteSo(){ |
| | | foreach (var folder in soFolders) { |
| | | FileTool.DeleteFolder(BuglyToolPath() + "/Android/"); |
| | | } |
| | | } |
| | | private static bool EditCommand(out string arg){ |
| | | bool exists = false; |
| | | var versionInfo = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", VersionConfig.Get().buildTime); |
| | | StringBuilder sb = new StringBuilder(); |
| | | foreach (var folder in soFolders) |
| | | { |
| | | exists = true; |
| | | sb.Append(soCmdAnroid).Append(" & "); |
| | | if(folder == "unity") |
| | | { |
| | | sb.Replace("#SOPATH#", "libunity.sym.so"); |
| | | } |
| | | else |
| | | { |
| | | string soPath = BuglyToolPath() + "/Android/" + folder ; |
| | | if (FileTool.CheckFolder(soPath)) |
| | | { |
| | | soPath = soPath + "/libil2cpp.sym.so"; |
| | | sb.Replace("#SOPATH#", soPath); |
| | | } |
| | | else |
| | | { |
| | | exists = false; |
| | | break; |
| | | } |
| | | } |
| | | sb.Replace("#ID#", ExceptionCatcher.AppIDAndroid); //这里注意一下要改成自己的id |
| | | sb.Replace("#KEY#", ExceptionCatcher.AppKeyAndroid); //自己的key |
| | | sb.Replace("#BUNDLEID#", VersionConfig.Get().appId); |
| | | sb.Replace("#VERSION#", versionInfo); |
| | | } |
| | | |
| | | sb.Append("exit").Replace("/", @"\"); |
| | | arg = sb.ToString(); |
| | | return exists; |
| | | } |
| | | private static bool EditCommandIOS(out string arg) |
| | | { |
| | | bool exists = true; |
| | | var versionInfo = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", VersionConfig.Get().buildTime); |
| | | StringBuilder sb = new StringBuilder(); |
| | | sb.Append(soCmdIOS).Append(" & "); |
| | | sb.Replace("#ID#", ExceptionCatcher.AppIDIOS); //这里注意一下要改成自己的id |
| | | sb.Replace("#KEY#", ExceptionCatcher.AppKeyIOS); //自己的key |
| | | sb.Replace("#BUNDLEID#", VersionConfig.Get().appId); |
| | | sb.Replace("#VERSION#", versionInfo); |
| | | sb.Append("exit").Replace("/", @"\"); |
| | | arg = sb.ToString(); |
| | | return exists; |
| | | } |
| | | public static string DeBugSOPath(){ |
| | | return Path.GetFullPath(Application.dataPath + "/../Temp/StagingArea/symbols"); |
| | | } |
| | | |
| | | public static string BuglyToolPath(){ |
| | | return Path.GetFullPath(Application.dataPath + "/../buglytools"); |
| | | } |
| | | public static void RunCmd(string arg, string workingDirectory,string exe ="cmd.exe"){ |
| | | |
| | | ProcessStartInfo info = new ProcessStartInfo(exe); |
| | | info.Arguments = "/c " + arg; |
| | | info.WorkingDirectory = workingDirectory; |
| | | info.CreateNoWindow = false; |
| | | info.ErrorDialog = true; |
| | | info.UseShellExecute = true; |
| | | |
| | | if (info.UseShellExecute) { |
| | | info.RedirectStandardOutput = false; |
| | | info.RedirectStandardError = false; |
| | | info.RedirectStandardInput = false; |
| | | } |
| | | else { |
| | | info.RedirectStandardOutput = true; |
| | | info.RedirectStandardError = true; |
| | | info.RedirectStandardInput = true; |
| | | info.StandardOutputEncoding = System.Text.UTF8Encoding.UTF8; |
| | | info.StandardErrorEncoding = System.Text.UTF8Encoding.UTF8; |
| | | } |
| | | Debug.Log("RunCmd: "+info.Arguments); |
| | | |
| | | Process process = Process.Start(info); |
| | | |
| | | if (!info.UseShellExecute) { |
| | | Debug.Log(process.StandardOutput); |
| | | Debug.Log(process.StandardError); |
| | | } |
| | | |
| | | process.WaitForExit(); |
| | | process.Close(); |
| | | } |
| | | } |