diff --git a/backend/services/admin-service/src/infrastructure/parsers/package-parser.service.ts b/backend/services/admin-service/src/infrastructure/parsers/package-parser.service.ts index 85c8091..eb3d4fa 100644 --- a/backend/services/admin-service/src/infrastructure/parsers/package-parser.service.ts +++ b/backend/services/admin-service/src/infrastructure/parsers/package-parser.service.ts @@ -17,12 +17,9 @@ export class PackageParserService implements IPackageParser { // 改用 yauzl.fromBuffer() + adbkit-apkreader 内部 ManifestParser 直接解析 try { const yauzl = await import('yauzl'); - const { ManifestParser } = await import('adbkit-apkreader/lib/apkreader/parser/manifest' as any).then( - (m: any) => ({ ManifestParser: m.default || m }), - ); - const { BinaryXmlParser } = await import('adbkit-apkreader/lib/apkreader/parser/binaryxml' as any).then( - (m: any) => ({ BinaryXmlParser: m.default || m }), - ); + // ManifestParser(buffer) 内部自带 BinaryXmlParser,直接传原始 Buffer 即可 + const ManifestParser: any = await import('adbkit-apkreader/lib/apkreader/parser/manifest' as any) + .then((m: any) => m.default || m); const zipfile = await new Promise((resolve, reject) => yauzl.fromBuffer(buffer, { lazyEntries: true }, (err: any, zf: any) => @@ -49,10 +46,7 @@ export class PackageParserService implements IPackageParser { zipfile.on('error', reject); }); - const binaryXml = new BinaryXmlParser(manifestBuffer); - const parsed = binaryXml.parse(); - const manifestParser = new ManifestParser(parsed); - const manifest = manifestParser.parse(); + const manifest = new ManifestParser(manifestBuffer).parse(); return { packageName: manifest.package || 'unknown',