From 26c7c701a618aebc9b4b3d6e49ec5b2150db7a8e Mon Sep 17 00:00:00 2001 From: HeYanbo Date: Mon, 22 Sep 2025 11:18:36 +0800 Subject: [PATCH 1/3] add logic to support android aab package hot update --- src/bundle.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bundle.ts b/src/bundle.ts index d529536..0f6ba3f 100644 --- a/src/bundle.ts +++ b/src/bundle.ts @@ -668,6 +668,7 @@ async function diffFromPPK(origin: string, next: string, output: string) { addEntry(base); } copies[entry.fileName] = originMap[entry.crc32]; + copies[entry.crc32] = entry.fileName; return; } @@ -792,6 +793,7 @@ async function diffFromPackage( // If moved from other place if (originMap[entry.crc32]) { copies[entry.fileName] = originMap[entry.crc32]; + copies[entry.crc32] = entry.fileName; return; } From 84e931344995990276be377ef6ef4ff78198b4c7 Mon Sep 17 00:00:00 2001 From: HeYanbo Date: Tue, 23 Sep 2025 15:17:11 +0800 Subject: [PATCH 2/3] update --- bun.lock | 13 +++++++++++++ package.json | 1 + src/bundle.ts | 10 ++++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/bun.lock b/bun.lock index 1fe0c62..66499c7 100644 --- a/bun.lock +++ b/bun.lock @@ -19,6 +19,7 @@ "i18next": "^24.2.3", "isomorphic-git": "^1.30.1", "isomorphic-unzip": "^1.1.5", + "node-bsdiff": "^0.1.9", "node-fetch": "^2.6.1", "plist": "^3.1.0", "progress": "^2.0.3", @@ -201,6 +202,8 @@ "@xmldom/xmldom": ["@xmldom/xmldom@0.8.10", "", {}, "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="], + "amdefine": ["amdefine@1.0.1", "", {}, "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg=="], + "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -281,6 +284,8 @@ "compare-versions": ["compare-versions@6.1.1", "", {}, "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg=="], + "compressjs": ["compressjs@1.0.3", "", { "dependencies": { "amdefine": "~1.0.0", "commander": "~2.8.1" }, "bin": { "compressjs": "./bin/compressjs" } }, "sha512-jpKJjBTretQACTGLNuvnozP1JdP2ZLrjdGdBgk/tz1VfXlUcBhhSZW6vEsuThmeot/yjvSrPQKEgfF3X2Lpi8Q=="], + "config-chain": ["config-chain@1.1.13", "", { "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ=="], "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], @@ -405,6 +410,8 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "graceful-readlink": ["graceful-readlink@1.0.1", "", {}, "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w=="], + "gradle-to-js": ["gradle-to-js@2.0.1", "", { "dependencies": { "lodash.merge": "^4.6.2" }, "bin": { "gradle-to-js": "cli.js" } }, "sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw=="], "grapheme-splitter": ["grapheme-splitter@1.0.4", "", {}, "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="], @@ -537,6 +544,10 @@ "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], + "nan": ["nan@2.23.0", "", {}, "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ=="], + + "node-bsdiff": ["node-bsdiff@0.1.9", "", { "dependencies": { "compressjs": "^1.0.3", "nan": "^2.20.0" } }, "sha512-wQjClhtMqqEvFTYPVW7nFl28J2xHj+AEkfpt2P2CTOT7Xygdxj/FJA6cmeioR4IadwD0dhZHgVb/be8z2lZFAA=="], + "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], "normalize-url": ["normalize-url@8.0.1", "", {}, "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w=="], @@ -789,6 +800,8 @@ "call-bind/get-intrinsic": ["get-intrinsic@1.2.4", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" } }, "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ=="], + "compressjs/commander": ["commander@2.8.1", "", { "dependencies": { "graceful-readlink": ">= 1.0.0" } }, "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ=="], + "config-chain/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], "define-data-property/es-define-property": ["es-define-property@1.0.0", "", { "dependencies": { "get-intrinsic": "^1.2.4" } }, "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ=="], diff --git a/package.json b/package.json index 7b723f0..28e63eb 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "i18next": "^24.2.3", "isomorphic-git": "^1.30.1", "isomorphic-unzip": "^1.1.5", + "node-bsdiff": "^0.1.9", "node-fetch": "^2.6.1", "plist": "^3.1.0", "progress": "^2.0.3", diff --git a/src/bundle.ts b/src/bundle.ts index 0f6ba3f..750a3b9 100644 --- a/src/bundle.ts +++ b/src/bundle.ts @@ -597,6 +597,7 @@ async function diffFromPPK(origin: string, next: string, output: string) { } const copies = {}; + const copiesv2 = {}; const zipfile = new YazlZipFile(); @@ -668,7 +669,7 @@ async function diffFromPPK(origin: string, next: string, output: string) { addEntry(base); } copies[entry.fileName] = originMap[entry.crc32]; - copies[entry.crc32] = entry.fileName; + copiesv2[entry.crc32] = entry.fileName; return; } @@ -701,7 +702,7 @@ async function diffFromPPK(origin: string, next: string, output: string) { //console.log({copies, deletes}); zipfile.addBuffer( - Buffer.from(JSON.stringify({ copies, deletes })), + Buffer.from(JSON.stringify({ copies, copiesv2, deletes })), '__diff.json', ); zipfile.end(); @@ -748,6 +749,7 @@ async function diffFromPackage( } const copies = {}; + const copiesv2 = {}; const zipfile = new YazlZipFile(); @@ -793,7 +795,7 @@ async function diffFromPackage( // If moved from other place if (originMap[entry.crc32]) { copies[entry.fileName] = originMap[entry.crc32]; - copies[entry.crc32] = entry.fileName; + copiesv2[entry.crc32] = entry.fileName; return; } @@ -812,7 +814,7 @@ async function diffFromPackage( } }); - zipfile.addBuffer(Buffer.from(JSON.stringify({ copies })), '__diff.json'); + zipfile.addBuffer(Buffer.from(JSON.stringify({ copies, copiesv2 })), '__diff.json'); zipfile.end(); await writePromise; } From 610adb32925f65741dad2bd59e2301e0db7e68af Mon Sep 17 00:00:00 2001 From: HeYanbo Date: Tue, 23 Sep 2025 15:18:27 +0800 Subject: [PATCH 3/3] udpate --- bun.lock | 13 ------------- package.json | 1 - 2 files changed, 14 deletions(-) diff --git a/bun.lock b/bun.lock index 66499c7..1fe0c62 100644 --- a/bun.lock +++ b/bun.lock @@ -19,7 +19,6 @@ "i18next": "^24.2.3", "isomorphic-git": "^1.30.1", "isomorphic-unzip": "^1.1.5", - "node-bsdiff": "^0.1.9", "node-fetch": "^2.6.1", "plist": "^3.1.0", "progress": "^2.0.3", @@ -202,8 +201,6 @@ "@xmldom/xmldom": ["@xmldom/xmldom@0.8.10", "", {}, "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="], - "amdefine": ["amdefine@1.0.1", "", {}, "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg=="], - "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -284,8 +281,6 @@ "compare-versions": ["compare-versions@6.1.1", "", {}, "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg=="], - "compressjs": ["compressjs@1.0.3", "", { "dependencies": { "amdefine": "~1.0.0", "commander": "~2.8.1" }, "bin": { "compressjs": "./bin/compressjs" } }, "sha512-jpKJjBTretQACTGLNuvnozP1JdP2ZLrjdGdBgk/tz1VfXlUcBhhSZW6vEsuThmeot/yjvSrPQKEgfF3X2Lpi8Q=="], - "config-chain": ["config-chain@1.1.13", "", { "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ=="], "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], @@ -410,8 +405,6 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graceful-readlink": ["graceful-readlink@1.0.1", "", {}, "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w=="], - "gradle-to-js": ["gradle-to-js@2.0.1", "", { "dependencies": { "lodash.merge": "^4.6.2" }, "bin": { "gradle-to-js": "cli.js" } }, "sha512-is3hDn9zb8XXnjbEeAEIqxTpLHUiGBqjegLmXPuyMBfKAggpadWFku4/AP8iYAGBX6qR9/5UIUIp47V0XI3aMw=="], "grapheme-splitter": ["grapheme-splitter@1.0.4", "", {}, "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="], @@ -544,10 +537,6 @@ "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], - "nan": ["nan@2.23.0", "", {}, "sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ=="], - - "node-bsdiff": ["node-bsdiff@0.1.9", "", { "dependencies": { "compressjs": "^1.0.3", "nan": "^2.20.0" } }, "sha512-wQjClhtMqqEvFTYPVW7nFl28J2xHj+AEkfpt2P2CTOT7Xygdxj/FJA6cmeioR4IadwD0dhZHgVb/be8z2lZFAA=="], - "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], "normalize-url": ["normalize-url@8.0.1", "", {}, "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w=="], @@ -800,8 +789,6 @@ "call-bind/get-intrinsic": ["get-intrinsic@1.2.4", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" } }, "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ=="], - "compressjs/commander": ["commander@2.8.1", "", { "dependencies": { "graceful-readlink": ">= 1.0.0" } }, "sha512-+pJLBFVk+9ZZdlAOB5WuIElVPPth47hILFkmGym57aq8kwxsowvByvB0DHs1vQAhyMZzdcpTtF0VDKGkSDR4ZQ=="], - "config-chain/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], "define-data-property/es-define-property": ["es-define-property@1.0.0", "", { "dependencies": { "get-intrinsic": "^1.2.4" } }, "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ=="], diff --git a/package.json b/package.json index 28e63eb..7b723f0 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,6 @@ "i18next": "^24.2.3", "isomorphic-git": "^1.30.1", "isomorphic-unzip": "^1.1.5", - "node-bsdiff": "^0.1.9", "node-fetch": "^2.6.1", "plist": "^3.1.0", "progress": "^2.0.3",