/** * 解压器(框架 §8.3 / §9.1 / 附录 A.4)。封装 @kit.BasicServicesKit zlib.decompressFile。 * * decompressFile 为**原生异步**——解压在系统侧执行、不阻塞 UI 线程,满足"解压不卡 UI"。 * 契约 §5.4:远程 zip 顶层即含 gamehall/...,解压到 <解压根>/ 即可。 */ import { zlib } from '@kit.BasicServicesKit'; import { FileSystem } from '../fs/FileSystem'; import { Logger } from 'common'; export class Unzipper { private static readonly log: Logger = Logger.tag('Unzipper'); /** 解压 zipPath 到 destDir(自动建目标目录)。失败抛出。 */ static async unzip(zipPath: string, destDir: string): Promise { FileSystem.ensureDir(destDir); const options: zlib.Options = {}; await zlib.decompressFile(zipPath, destDir, options); Unzipper.log.i(`unzip ${zipPath} -> ${destDir}`); } }