Unity3d 工具打包完 自動上傳到FTP伺服器
阿新 • • 發佈:2019-01-25
這個故事是這樣開始的~~
我們遊戲的平臺包有好幾十個~(沒辦法遊戲太牛逼了),然後每個平臺的sdk都需要去不斷的測試的,我們內部開發過一款工具用來自動批處理打包untiy - apk,這樣可以節省很多時間去等待打包的過程。
稍微計算一下 一個apk包(大小250M+)的時間是 10分鐘*40個以上,如果讓人等著打包的話就!~咳咳了
打完了包需要上傳ftp伺服器給到測試部進行測試,而目前我們的工具尚不支援此功能,必須手動去把打出來的包上傳上去,還有有些囧的~
故事講完了,這裡開始乾貨 大概的功能如下圖
遠端路徑 :ftp的檔案儲存
本地路徑:apk儲存路徑
APK 名字:此處省略一萬字
按鈕不解釋
說下原理:通過 呼叫FTP 的bat指令(參考 http://369369.blog.51cto.com/319630/842341) 上傳指定 本地檔案下的指定檔案 (本地路徑+ apk名字) 到 ftp遠端路徑的指定資料夾(遠端路徑)
c# 執行bat的方式 (介面上的東西就不講了,我也是半桶水),這裡要注意的是多個引數的傳遞需要使用空格分開,當點選上傳的時候就呼叫者函式即可,然後默默的等一下就可以完成了
void Runbat(string path) { try { Process pro = new Process(); FileInfo file = new FileInfo(path); pro.StartInfo.WorkingDirectory = file.Directory.FullName; pro.StartInfo.FileName = path; //引數已空格分開 pro.StartInfo.Arguments = localPath+" "+ftpPathDir+" "+native2ascii(apk_name.Text); pro.StartInfo.CreateNoWindow = false; pro.Start(); pro.WaitForExit(); } catch (Exception e) { } }
這裡貼一下native 和 assic 之間的轉換,雖然最後還是沒用到,因為可以直接是中文,我醉了~
//實現中文的轉碼操作 public String native2ascii(String str) { int code; char[] chars = str.ToCharArray(); StringBuilder sb = new StringBuilder(255); for (int i = 0; i < chars.Length; i++) { char c = chars[i]; if (c > 255) { sb.Append("\\u"); code = (c >> 8); string tmp = code.ToString("X"); if (tmp.Length == 1) sb.Append("0"); sb.Append(tmp); code = (c & 0xFF); tmp = code.ToString("X"); if (tmp.Length == 1) sb.Append("0"); sb.Append(tmp); } else { sb.Append(c); } } return (sb.ToString()); }