hch
2026-01-23 4acf9452f5a3d1ab145eed17a16ff6f9857a843d
0312 打印热更标识
2个文件已修改
114 ■■■■■ 已修改文件
Main/System/Login/LoginManager.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/RunTimeABLoadLog.cs 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Login/LoginManager.cs
@@ -363,7 +363,7 @@
    }
    // 辅助方法:十六进制字符串转字节数组
    private byte[] HexStringToByteArray(string hex)
    public byte[] HexStringToByteArray(string hex)
    {
        byte[] bytes = new byte[hex.Length / 2];
        for (int i = 0; i < hex.Length; i += 2)
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