fix(admin-service): 修正 ManifestParser 调用方式 — 直接传原始 Buffer
ManifestParser(buffer) 内部自带 BinaryXmlParser,无需先调用 BinaryXmlParser.parse() 再把结果传入 ManifestParser,否则导致 readUInt16LE is not a function。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
276eda2a84
commit
adda5e04d7
|
|
@ -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<any>((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',
|
||||
|
|
|
|||
Loading…
Reference in New Issue