hch
2026-01-23 4acf9452f5a3d1ab145eed17a16ff6f9857a843d
Main/Utility/RunTimeABLoadLog.cs
@@ -23,6 +23,118 @@
        assetBundleLoadLogs.Insert(0, tile);
        File.WriteAllLines(Application.dataPath + "/RunTimeABLoadLog.txt", assetBundleLoadLogs.ToArray());
    }
    [MenuItem("程序/打印热更标识")]
    public static void Print2()
    {
        string logicVersionMd5 = "00";
        string assetVersionMd5 = "00";
        // 初始化结果字节数组(MD5 是 16 字节)
        byte[] resultBytes = new byte[16];
        var outputPath = Application.dataPath.Replace("Assets", "AssetBundles");
        //判断是否有android目录
        if (Directory.Exists(outputPath + "/android"))
        {
            var lines = File.ReadAllLines(outputPath + "/android/logicbytes.txt");
            foreach (var line in lines)
            {
                var values = line.Split('\t');
                if (values.IsNullOrEmpty())
                {
                    continue;
                }
                var _md5 = values[values.Length - 1];
                // 对每个 MD5 进行异或运算
                byte[] md5Bytes = LoginManager.Instance.HexStringToByteArray(_md5);
                for (int j = 0; j < 16; j++)
                {
                    resultBytes[j] ^= md5Bytes[j];
                }
            }
            //取最后两位
            logicVersionMd5 = BitConverter.ToString(resultBytes).Replace("-", "").ToLower().Substring(14, 2);
            resultBytes = new byte[16];
            lines = File.ReadAllLines(outputPath + "/android/AssetsVersion.txt");
            foreach (var line in lines)
            {
                var values = line.Split('\t');
                if (values.IsNullOrEmpty())
                {
                    continue;
                }
                var _md5 = values[values.Length - 1];
                // 对每个 MD5 进行异或运算
                byte[] md5Bytes = LoginManager.Instance.HexStringToByteArray(_md5);
                for (int j = 0; j < 16; j++)
                {
                    resultBytes[j] ^= md5Bytes[j];
                }
            }
            assetVersionMd5 = BitConverter.ToString(resultBytes).Replace("-", "").ToLower().Substring(14, 2);
            Debug.Log($"Android RefreshHotVersion {logicVersionMd5}{assetVersionMd5}");
        }
        else
        {
            Debug.Log("没有android目录");
        }
        if (Directory.Exists(outputPath + "/ios"))
        {
            var lines = File.ReadAllLines(outputPath + "/android/logicbytes.txt");
            foreach (var line in lines)
            {
                var values = line.Split('\t');
                if (values.IsNullOrEmpty())
                {
                    continue;
                }
                var _md5 = values[values.Length - 1];
                // 对每个 MD5 进行异或运算
                byte[] md5Bytes = LoginManager.Instance.HexStringToByteArray(_md5);
                for (int j = 0; j < 16; j++)
                {
                    resultBytes[j] ^= md5Bytes[j];
                }
            }
            //取最后两位
            logicVersionMd5 = BitConverter.ToString(resultBytes).Replace("-", "").ToLower().Substring(14, 2);
            resultBytes = new byte[16];
            lines = File.ReadAllLines(outputPath + "/android/AssetsVersion.txt");
            foreach (var line in lines)
            {
                var values = line.Split('\t');
                if (values.IsNullOrEmpty())
                {
                    continue;
                }
                var _md5 = values[values.Length - 1];
                // 对每个 MD5 进行异或运算
                byte[] md5Bytes = LoginManager.Instance.HexStringToByteArray(_md5);
                for (int j = 0; j < 16; j++)
                {
                    resultBytes[j] ^= md5Bytes[j];
                }
            }
            assetVersionMd5 = BitConverter.ToString(resultBytes).Replace("-", "").ToLower().Substring(14, 2);
            Debug.Log($"Ios RefreshHotVersion {logicVersionMd5}{assetVersionMd5}");
        }
        else
        {
            Debug.Log("没有Ios目录");
        }
    }
}
#endif