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 直接解析
|
// 改用 yauzl.fromBuffer() + adbkit-apkreader 内部 ManifestParser 直接解析
|
||||||
try {
|
try {
|
||||||
const yauzl = await import('yauzl');
|
const yauzl = await import('yauzl');
|
||||||
const { ManifestParser } = await import('adbkit-apkreader/lib/apkreader/parser/manifest' as any).then(
|
// ManifestParser(buffer) 内部自带 BinaryXmlParser,直接传原始 Buffer 即可
|
||||||
(m: any) => ({ ManifestParser: m.default || m }),
|
const ManifestParser: any = await import('adbkit-apkreader/lib/apkreader/parser/manifest' as any)
|
||||||
);
|
.then((m: any) => m.default || m);
|
||||||
const { BinaryXmlParser } = await import('adbkit-apkreader/lib/apkreader/parser/binaryxml' as any).then(
|
|
||||||
(m: any) => ({ BinaryXmlParser: m.default || m }),
|
|
||||||
);
|
|
||||||
|
|
||||||
const zipfile = await new Promise<any>((resolve, reject) =>
|
const zipfile = await new Promise<any>((resolve, reject) =>
|
||||||
yauzl.fromBuffer(buffer, { lazyEntries: true }, (err: any, zf: any) =>
|
yauzl.fromBuffer(buffer, { lazyEntries: true }, (err: any, zf: any) =>
|
||||||
|
|
@ -49,10 +46,7 @@ export class PackageParserService implements IPackageParser {
|
||||||
zipfile.on('error', reject);
|
zipfile.on('error', reject);
|
||||||
});
|
});
|
||||||
|
|
||||||
const binaryXml = new BinaryXmlParser(manifestBuffer);
|
const manifest = new ManifestParser(manifestBuffer).parse();
|
||||||
const parsed = binaryXml.parse();
|
|
||||||
const manifestParser = new ManifestParser(parsed);
|
|
||||||
const manifest = manifestParser.parse();
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
packageName: manifest.package || 'unknown',
|
packageName: manifest.package || 'unknown',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue