热更这样做,你觉得行不行

第一个想法是直接把热更资源在前端下下来,然后用jszip解压,但是解压的时候会异常的卡顿,所以想把这部分操作,搞到原生那边做, // 1. 解压前检查并删除已存在的 savePath
// 转换路径为 File 对象
File storageFile = new File(storagePath);
File saveDir = new File(savePath);

            // 1. 检查 ZIP 文件是否存在且可读
            if (!storageFile.exists() || !storageFile.canRead()) {
                reportError(callbackId, "ZIP 文件不存在或不可读: " + storageFile.getAbsolutePath());
                return;
            }else{
                long fileSizeBytes = storageFile.length();
                String humanReadableSize = formatFileSize(fileSizeBytes); // 转换为易读格式(如 1.23MB)
                Log.d(TAG, "ZIP 文件存在,大小: " + fileSizeBytes + " 字节 (" + humanReadableSize + ")");
            }

            // 2. 校验 ZIP 完整性
            try {
                ZipFile zipCheck = new ZipFile(storagePath);
                if (!zipCheck.isValidZipFile()) {
                    reportError(callbackId, "ZIP 文件损坏");
                    return;
                }
            } catch (Exception e) {
                reportError(callbackId, "校验 ZIP 文件失败: " + e.getMessage());
                return;
            }


            // 2. 清理或创建目标目录
            if (saveDir.exists()) {
                deleteDirectoryRecursive(saveDir);
            }
            if (!saveDir.mkdirs() || !saveDir.canWrite()) {
                reportError(callbackId, "无法创建目标目录: " + saveDir.getAbsolutePath());
                return;
            }走是走下来了,但是只要执行解压操作,就反馈说, (No such file or directory),看看论坛有大佬碰到过这种问题么

完整代码.zip (2.9 KB)

听说的论坛,大神多~来钓个鱼,请蜜雪,瑞幸,或者蜜雪 还有此处,静待大佬,做成插件也行~

首先有个疑问,现在引擎就支持ZIP方式的,为啥还要你自己动手在造个轮子?然后你觉得JSZIP慢?我没看热更的源代码,但我估计引擎不是在JS层做的处理,所以不存在效率问题也,至少实际使用中没有感觉有销量问题还

jszip解压的时候很卡顿,app整个就一顿一顿的,我们的游戏还采用的热更zip+bundlezip的模式,观感很不好,所以在想办法,在原生那边做,前面看起来正常点~,不是不能用~

卡顿 做成异步的也是?

解压的时候我们不是一个一个顺序来的,那样太慢了,我们直接一次解压十个,然后等地啊 再解压十个~不知道是模拟器特性还是怎么了,卡的难受~

是异步的~

解压.zip (1.4 KB) 前端js解压代码~

外部调用decompression 没有await吧

有的,你那边原生用的不卡吗?

你外面await了 就跟同步的一样了 所以调用的那个地方不能await 想点办法 弄个进度条之类的