using UnityEngine; using System.Collections; using System.IO; using FairyGUI; using MiniJSON; using UnityEngine.Networking; using taurus.unity; using System.Text; using System; public class VerCheck : MonoBehaviour { GComponent _version_view; public static VerCheck Instance { get; private set; } public securityConnection conn; public bool isGFF = false; public bool isDXYGFF = false; void Awake() { Instance = this; } // Use this for initialization void Start() { //Debug.Log($"Stage.inst.safeArea = {Stage.inst.safeArea}"); GameApplication.Instance.isAndroid64bit = IsAndroid64bit(); CreateVersionView(); StartCoroutine(CheckNet()); } internal void ResetGame() { CreateVersionView(); StartCoroutine(__WaitReset()); } IEnumerator __WaitReset() { var _luaClient = GameApplication.Instance.GetComponent(); UnityEngine.Object.Destroy(_luaClient); System.GC.Collect(); FontManager.Clear(); UIPackage.RemoveAllPackages(); ResourcesManager.DestroyAll(); CreateVersionView(); yield return null; StartCoroutine(CheckNet()); } void CreateVersionView() { ResourcesManager.ReadAssetConfig("base/embed"); UIPackage.AddPackage("base/embed/ui/Hotupdate"); if (_version_view != null) _version_view.Dispose(); _version_view = null; _version_view = UIPackage.CreateObjectFromURL("ui://Hotupdate/Version").asCom; GRoot.inst.AddChildAt(_version_view,0); _version_view.width = GRoot.inst.width; _version_view.height = GRoot.inst.height; _version_view.x = (GRoot.inst.width - _version_view.width) / 2; Debug.LogError(Application.persistentDataPath); } public bool IsAndroid64bit() { #if UNITY_ANDROID && !UNITY_EDITOR if (IntPtr.Size == 8) { return true; } return false; #else return false; #endif } IEnumerator CheckNet() { string json_data = string.Empty; isDXYGFF= false; isGFF = false; //江西 //string init_url = "http://127.0.0.1:9898/NewFK/config/init2_1.json"; string init_url = "http://8.138.255.70:9898/NewFK/config/init2_1.json"; if (isGFF==false&&isDXYGFF==false) { } else { if (isGFF) { int rc = AppVest.init("8ef91e7e799b5851a8ce810aae0c697c", "U5ayF4voVvRh1ElqBIVUCR9dSFskPGvCkfreFxdxzi39hoU0faqZWjFzC90Cta50egaQatCbPxm6XTlvi2+o++PrSozoZ+HUUY0y8tBloMWaOYQX59SAhjA/DyIDHJgGbE1I"); if (rc != 0) { // Debug.LogError("init failed"); ShowTip("GF init failed!", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = ""; conn.port = 0; int rc1 = AppVest.getServerIPAndPort(ref conn, "", 5021); if (rc1 != 0) { ShowTip("getServerIPAndPort failed!", () => { StartCoroutine(CheckNet()); }); yield break; } } else { string key = "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"; int rc = DxyVest.Start(key);//AppVest.init("553c12676eb80b82183e0944df97cd19", "K8N/nk3cAxhGo7Oy0yoP/Ye5jcQUaMf+8+AutonLIoCXTbHXSHJ/D8W3/iIBHJq/4SABnAF7RvIeNRnF+x+wjB6cB1TEwIUviviQlofNvM4qJFLH55ON85n2pFBhSGW3qLF/"); if (rc != 150) { Debug.LogError("wwwwwwwwwwwwwwwwwwwwwww init failed"); ShowTip("GF init failed!", () => { StartCoroutine(CheckNet()); }); } // Debug.LogError("init successful"); conn.ip = "127.0.0.1"; conn.port = 9898; //int rc1 = AppVest.getServerIPAndPort(ref conn, "", 8077); //if (rc1 != 0) //{ // ShowTip("getServerIPAndPort failed!", () => // { // StartCoroutine(CheckNet()); // }); // yield break; //} } init_url = "http://" + conn.ip + ":" + conn.port + "/NewFK/config/init2_2.json"; Debug.LogError("init_url : " + init_url); } // Debug.LogError("开始下载资源===>>>"); // Debug.LogError(init_url); //Debug.LogError("init_url============================ "+ init_url); float downTimeOut = 5; using (WWW request1 = new WWW(init_url)) { float timeOut = Time.time; float process = request1.progress; while (request1!=null && request1.isDone==false) { //Debug.LogError("wwwwwwwwwwwwwwwwwww11111111111111111111111"); if (process < request1.progress) { timeOut = Time.time; process = request1.progress; } if (Time.time-timeOut>downTimeOut) { ShowTip("资源配置下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request1; // Debug.LogError("request1.error"+request1.error); if (string.IsNullOrEmpty(request1.error)) { //Debug.LogError("wwwwwwwwwwwwwwwww222222222222222222222222"); json_data = request1.text; //优化 GameApplication.Instance.GameInfo = json_data; Hashtable json = Json.Deserialize(json_data) as Hashtable; //json["pack_url"] = "http://8.134.59.224:8909/NewFKtest"; Hotupdate.PackUrl = (string)json["pack_url"]; Hashtable _plat_data = null; #if UNITY_IPHONE _plat_data = json["iOS"] as Hashtable; #endif #if UNITY_ANDROID _plat_data = json["Android"] as Hashtable; #endif #if UNITY_STANDALONE _plat_data = json["Win"] as Hashtable; #endif var check = _plat_data[string.Format("check{0}", GameApplication.AppVersion.ToString())]; if (check != null && (bool)check) { GameApplication.HideSdk = true; GameApplication.Instance.accountTest = false; } Version server_version = new Version((string)_plat_data["version"]); if (!GameApplication.HideSdk) { if (GameApplication.AppVersion.max_version < server_version.max_version || (GameApplication.AppVersion.max_version == server_version.max_version && GameApplication.AppVersion.min_version < server_version.min_version)) { ShowTip("您版本需要更新!", () => { #if UNITY_ANDROID StartCoroutine(DownApp((string)_plat_data["appurl"], server_version.ToString())); #else DeleteOldPack(); Application.OpenURL((string)_plat_data["appurl"]); Application.Quit(); #endif }); yield break; } } Voice.VoiceUpload = json["voice_upload_url"] as string; Voice.VoiceDownload = json["voice_download_url"] as string; //GameApplication.PackVersion = server_version.pack_version; if (!GameApplication.Instance.buildApp) { GameApplication.AppVersion.FillData(server_version); _version_view.Dispose(); GameApplication.Instance.StartGame(); } else { StartCoroutine(CheckAssetConfig(server_version)); } } else { ShowTip("资源配置下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); //yield break; } } } IEnumerator CheckAssetConfig(Version server_version) { GObject v_tex_info = _version_view.GetChild("tex_info"); GObject v_tex_info_check = _version_view.GetChild("tex_info_check"); Transition t_check = _version_view.GetTransition("check"); Version local_version = Hotupdate.GetLocalVersion(string.Empty); ArrayList asset_config_list = null; string asset_config_text = null; if (local_version == null || local_version.ContainAll(server_version)) { string ac_url=""; if(isGFF==false) ac_url = string.Format("{0}/config/asset_config{1}.json", Hotupdate.PackUrl, server_version.ToString()); else ac_url = string.Format("http://{0}/NewFK/config/asset_config{1}.json", conn.ip + ":" + conn.port, server_version.ToString()); float downTimeOut = 5; using (var request = new WWW(ac_url)) { float timeOut = Time.time; float process = request.progress; while (request != null && request.isDone == false) { if (process < request.progress) { timeOut = Time.time; process = request.progress; } if (Time.time - timeOut > downTimeOut) { ShowTip("游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckNet()); }); yield break; } yield return null; } yield return request; if (string.IsNullOrEmpty(request.error)) { asset_config_text = request.text; asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; if (asset_config_list == null) { ShowTip("游戏配置下载异常,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } // v_tex_info.text = "正在检查资源"; GSlider _pd = _version_view.GetChild("pb_progress").asSlider; _pd.value = 0.0; //开始检查所有资源 bool size_check = false; long total_size = 0; StartCoroutine(VersionUpdateCheckSize2(asset_config_list, (all_size, finish) => { total_size = all_size; size_check = finish; })); t_check.Play(-1, 0, () => { }); while (!size_check) { yield return null; } t_check.Stop(); v_tex_info_check.text = string.Empty; Debug.Log($"总大小:{(total_size / 1024f / 1024f):F2} MB"); bool ver_check = false; StartCoroutine(VersionUpdateCheck(asset_config_list, (progress, finish) => { if (ver_check) { _pd.value = 100f; ver_check = finish; } else { v_tex_info.text = $"正在下载资源({(progress / 1024f / 1024f):F2} MB/{(total_size / 1024f / 1024f):F2} MB)"; _pd.value = progress / total_size * 100f; ver_check = finish; } })); while (!ver_check) { yield return null; } bool unZip_check = false; v_tex_info.text = "正在解压文件(该过程不消耗流量)"; _pd.value = 100f; StartCoroutine(VersionUpdateUnZip(asset_config_list, (finish) => { unZip_check = finish; })); t_check.Play(-1, 0, () => { }); while (!unZip_check) { yield return null; } t_check.Stop(); v_tex_info_check.text = string.Empty; string arv = string.Format("{0}asset_config{1}.json", ResourcesManager.PACK_PATH, server_version.ToString()); File.WriteAllText(arv, asset_config_text, System.Text.Encoding.UTF8); string rv = ResourcesManager.PACK_PATH + "version.txt"; File.WriteAllText(rv, server_version.ToString(), System.Text.Encoding.UTF8); } else { ShowTip("游戏资源下载失败,请检查您的网络设置!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } } }else { // string arv = string.Format("{0}asset_config{1}.json", ResourcesManager.PACK_PATH, server_version.ToString()); string arv =ResourcesManager.PACK_PATH+"asset_config"+server_version.ToString()+".json"; //Debug.LogError("ARV===>>>" + arv); try { asset_config_text = File.ReadAllText(arv); asset_config_list = Json.Deserialize(asset_config_text) as ArrayList; foreach (Hashtable tem in asset_config_list) { string b_path = "base/" + tem["name"]; ResourcesManager.ReadAssetConfig(b_path); } } catch (Exception s) { Debug.LogError(s.ToString()); ShowTip("游戏资源损坏,请重新安装新包!", () => { StartCoroutine(CheckAssetConfig(server_version)); }); yield break; } //IEnumerator enumerator = asset_config_list.GetEnumerator(); //try //{ // while (enumerator!=null && enumerator.MoveNext()) // { // Hashtable hashtable = (Hashtable)enumerator.Current; // string base_path = "base/" + hashtable["name"].ToString(); // ResourcesManager.ReadAssetConfig(base_path); // yield return null; // } //} //finally //{ // IDisposable disposable; // if ((disposable = (enumerator as IDisposable)) != null) // { // disposable.Dispose(); // } //} } StartCoroutine(CopyFromStreamingAssetsCoroutine("icon96.png", Application.persistentDataPath, path => { Debug.Log("复制完成回调 path=" + path); })); GameApplication.AppVersion.FillData(server_version); //v_tex_info.text = "正在加载资源请稍后。。"; //ResourcesManager.Init(); yield return null; _version_view.Dispose(); GameApplication.Instance.StartGame(); } /// /// 检查基本更新包 /// /// /// /// /// /// IEnumerator VersionUpdateCheck(ArrayList asset_config_list, System.Action onback) { Version local_version = Version.DEFUALT; float download_size = 0; for(int i=0;i< asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; string b_path = "base/" + tem["name"].ToString(); Hotupdate version_update = new Hotupdate(b_path + "/", local_version, new Version((string)tem["ver"])); version_update.AssetName = b_path; version_update.HideDetail = true; version_update.SetTipCallback((text,callback)=> { ShowTip(text, callback); }); version_update.LoadAsset(); while (!version_update.Done) { onback(download_size + version_update.Progress* (float)tem["size"], false); yield return null; } download_size += (float)tem["size"]; ResourcesManager.ReadAssetConfig(b_path); } onback(1, true); } /// /// 检查基本更新包大小 /// /// /// /// /// IEnumerator VersionUpdateCheckSize(ArrayList asset_config_list, System.Action onback) { Version local_version_one = Version.DEFUALT; long totalSize = 0; for (int i = 0; i < asset_config_list.Count; ++i) { var tem_one = asset_config_list[i] as Hashtable; string b_path_one = "base/" + tem_one["name"].ToString(); local_version_one = Hotupdate.GetLocalVersion(b_path_one); var update_pack2 = local_version_one == null || local_version_one.ContainAll(new Version((string)tem_one["ver"])); string osPath = ResourcesManager.OS_Dir; if (update_pack2) { var pack_path = string.Format("{0}/asset_pack{1}.bytes", b_path_one, (string)tem_one["ver"]); var url = ""; if (VerCheck.Instance.isGFF == false && VerCheck.Instance.isDXYGFF == false) url = string.Format("{0}/{1}/{2}", Hotupdate.PackUrl, osPath, pack_path); else url = string.Format("{0}/{1}/{2}", "http://" + VerCheck.Instance.conn.ip + ":" + VerCheck.Instance.conn.port + "/NewFKN", osPath, pack_path); url = string.Format("{0}/{1}/{2}", Hotupdate.PackUrl, osPath, pack_path); if (Application.platform == RuntimePlatform.WindowsEditor) Debug.Log("check_url:" + url); using (UnityWebRequest head = UnityWebRequest.Head(url)) { yield return head.SendWebRequest(); #if UNITY_2020_2_OR_NEWER if (head.result == UnityWebRequest.Result.Success) #else if (!head.isNetworkError && !head.isHttpError) #endif { string len = head.GetResponseHeader("Content-Length"); if (!string.IsNullOrEmpty(len) && long.TryParse(len, out long size)) { totalSize += size; tem_one["size"] = size; yield return null; } else { Debug.LogWarning($"无法获取文件大小: {url}"); yield return 0L; } } else { Debug.LogError($"获取文件大小失败: {head.error}"); yield return 0L; } } } } onback(totalSize, true); } IEnumerator VersionUpdateCheckSize2(ArrayList asset_config_list, System.Action onback) { Version local_version = Version.DEFUALT; long totalSize = 0; for (int i = 0; i < asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; string b_path = "base/" + tem["name"].ToString(); Hotupdate version_update = new Hotupdate(b_path + "/", local_version, new Version((string)tem["ver"])); version_update.AssetName = b_path; version_update.HideDetail = true; version_update.SetTipCallback((text, callback) => { ShowTip(text, callback); }); version_update.LoadAssetSize(); while (!version_update.Done) { yield return null; } tem["size"] = version_update.Size; totalSize += (long)version_update.Size; ResourcesManager.ReadAssetConfig(b_path); } onback(totalSize, true); } /// /// 解压下载的资源文件 /// /// /// /// IEnumerator VersionUpdateUnZip(ArrayList asset_config_list, System.Action onback) { for (int i = 0; i < asset_config_list.Count; ++i) { var tem = asset_config_list[i] as Hashtable; string b_path = "base/" + tem["name"].ToString(); ResourcesManager.ReadAssetConfig(b_path); yield return null; } onback(true); } #if UNITY_ANDROID IEnumerator DownApp(string appurl,string version) { var v_tex_info = _version_view.GetChild("tex_info"); v_tex_info.text = "正在下载新的安装包(0KB/0KB)"; var _pd = _version_view.GetChild("pb_progress").asSlider; var request = new BestHTTP.HTTPRequest(new System.Uri(appurl)); request.EnableTimoutForStreaming = false; request.UseStreaming = true; request.IsKeepAlive = true; request.Send(); var filePath = Application.persistentDataPath + "/update" + version + ".apk"; if (File.Exists(filePath)) { File.Delete(filePath); } FileStream stream = null; request.OnProgress = (originalRequest, downloaded, downloadLength) => { v_tex_info.text = string.Format("正在下载新的安装包({0}KB/{1}KB)", downloaded / 1024, downloadLength / 1024); _pd.value = (downloaded / (float)downloadLength) * 100; var fragments = originalRequest.Response.GetStreamedFragments(); if (fragments != null) { if (stream == null) { stream = File.Create(filePath); } foreach(byte[] buffer in fragments) { stream.Write(buffer, 0, buffer.Length); } } }; while (request.State < BestHTTP.HTTPRequestStates.Finished) { yield return null; } yield return new WaitForSeconds(1); stream.Dispose(); request.OnProgress = null; if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess) { DeleteOldPack(); PlatformAndroid.Instance.UpdateApp(filePath); } else { ShowTip("请检查您的网络设置!", () => { StartCoroutine(DownApp(appurl, version)); }); } } #endif public void ShowTip(string text, System.Action callback) { var ctr_state = _version_view.GetController("state"); ctr_state.selectedIndex = 1; _version_view.GetChild("tex_tip").text = text; _version_view.GetChild("btn_ok").onClick.Set(() => { ctr_state.selectedIndex = 0; if (callback != null) callback(); }); } public IEnumerator CopyFromStreamingAssetsCoroutine(string relativePath, string toFolder = null, System.Action onDone = null) { if (string.IsNullOrEmpty(toFolder)) toFolder = Application.persistentDataPath; string sourcePath = Path.Combine(Application.streamingAssetsPath, relativePath); string destPath = Path.Combine(toFolder, relativePath); if (File.Exists(sourcePath)) { yield return null; } Directory.CreateDirectory(Path.GetDirectoryName(destPath)); #if UNITY_ANDROID && !UNITY_EDITOR // Android: streamingAssets 在 apk 内,需要 UnityWebRequest using (UnityWebRequest uwr = UnityWebRequest.Get(sourcePath)) { yield return uwr.SendWebRequest(); if (uwr.isNetworkError || uwr.isHttpError) { Debug.LogError("读取失败: " + sourcePath + " 错误: " + uwr.error); onDone?.Invoke(null); yield break; } byte[] data = uwr.downloadHandler.data; File.WriteAllBytes(destPath, data); Debug.Log("复制完成(Android): " + destPath); onDone?.Invoke(destPath); } #else // 非 Android:直接从文件系统读取 if (!File.Exists(sourcePath)) { Debug.LogError($"源文件不存在: {sourcePath}"); onDone?.Invoke(null); yield break; } byte[] data = File.ReadAllBytes(sourcePath); File.WriteAllBytes(destPath, data); Debug.Log($"复制完成: {destPath}"); onDone?.Invoke(destPath); yield break; #endif } /// /// 移除本地缓存包 /// public static void DeleteOldPack() { string dir = ResourcesManager.RES_PATH; string rv = dir + "version.txt"; if (File.Exists(rv)) File.Delete(rv); if (Directory.Exists(dir)) Directory.Delete(dir, true); } }