From 4e237fbb3d14d72b9c55c9c7787dec15ff0347a0 Mon Sep 17 00:00:00 2001 From: maximum2974 Date: Wed, 10 Sep 2025 10:58:08 +0800 Subject: [PATCH] feat: add isModuleAbcCompressed in HapInfo Signed-off-by: maximum2974 --- adapter/ohos/HapInfo.java | 5 +++++ adapter/ohos/HapZipInfo.java | 23 +++++++++++++++++++++++ adapter/ohos/ModuleAdaption.java | 1 + adapter/ohos/ModuleInfo.java | 5 +++++ adapter/ohos/Uncompress.java | 11 +++++++++++ 5 files changed, 45 insertions(+) diff --git a/adapter/ohos/HapInfo.java b/adapter/ohos/HapInfo.java index 9f2c7ebb..bc0f3000 100644 --- a/adapter/ohos/HapInfo.java +++ b/adapter/ohos/HapInfo.java @@ -202,4 +202,9 @@ public class HapInfo { } return ""; } + + /** + * Indicates whether the module.abc file is compressed. + */ + public boolean isModuleAbcCompressed = false; } diff --git a/adapter/ohos/HapZipInfo.java b/adapter/ohos/HapZipInfo.java index 175174f3..515b28ff 100644 --- a/adapter/ohos/HapZipInfo.java +++ b/adapter/ohos/HapZipInfo.java @@ -100,6 +100,29 @@ class HapZipInfo { this.hapFileName = hapFileName; } + /** + * Indicates whether the module.abc file is compressed. + */ + private boolean isModuleAbcCompressed = false; + + /** + * Set module.abc compression status. + * + * @param isModuleAbcCompressed compression status + */ + public void setIsModuleAbcCompressed(boolean isModuleAbcCompressed) { + this.isModuleAbcCompressed = isModuleAbcCompressed; + } + + /** + * Get module.abc compression status. + * + * @return true if module.abc is compressed, false otherwise + */ + public boolean getIsModuleAbcCompressed() { + return isModuleAbcCompressed; + } + /** * push json file to map. * diff --git a/adapter/ohos/ModuleAdaption.java b/adapter/ohos/ModuleAdaption.java index e5e42519..84b5381b 100644 --- a/adapter/ohos/ModuleAdaption.java +++ b/adapter/ohos/ModuleAdaption.java @@ -169,6 +169,7 @@ class ModuleAdaption { hapInfo.appModel = moduleInfo.appModel; hapInfo.dependencies = moduleInfo.dependenies; hapInfo.proxyData = moduleInfo.proxyData; + hapInfo.isModuleAbcCompressed = moduleInfo.isModuleAbcCompressed; return hapInfo; } diff --git a/adapter/ohos/ModuleInfo.java b/adapter/ohos/ModuleInfo.java index cb349b44..50f5478a 100644 --- a/adapter/ohos/ModuleInfo.java +++ b/adapter/ohos/ModuleInfo.java @@ -169,4 +169,9 @@ class ModuleInfo { public HashMap getDescriptions() { return descriptions; } + + /** + * Indicates whether the module.abc file is compressed. + */ + public boolean isModuleAbcCompressed = false; } diff --git a/adapter/ohos/Uncompress.java b/adapter/ohos/Uncompress.java index 5dd352a0..a23f04a5 100644 --- a/adapter/ohos/Uncompress.java +++ b/adapter/ohos/Uncompress.java @@ -80,6 +80,7 @@ public class Uncompress { private static final String PATCH_JSON = "patch.json"; private static final String HAP_PREFIX = "HAP"; private static final String HSP_SUFFIX = ".hsp"; + private static final String MODULE_ABC = "ets/modules.abc"; private static final int MAX_CPU_ABI_TYPE_NUM = 128; private static final Log LOG = new Log(Uncompress.class.toString()); @@ -1346,6 +1347,15 @@ public class Uncompress { hapZipInfo.setPackInfoJsonStr(FileUtils.getFileStringFromZip(PACK_INFO, zipFile)); hapZipInfo.setResDataBytes(getResourceDataFromHap(zipFile)); hapZipInfo.setHapFileName(getHapNameWithoutSuffix(srcFile.getName())); + Enumeration entries = zipFile.entries(); + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + if (MODULE_ABC.equals(entry.getName())) { + boolean isCompressed = (entry.getMethod() != ZipEntry.STORED); + hapZipInfo.setIsModuleAbcCompressed(isCompressed); + break; + } + } } finally { Utility.closeStream(zipFile); } @@ -1367,6 +1377,7 @@ public class Uncompress { moduleProfileInfo.hapName = hapZipInfo.getHapFileName(); moduleResult.addModuleProfileInfo(moduleProfileInfo); moduleResult.moduleProfileStr.add(hapZipInfo.getHarmonyProfileJsonStr()); + moduleProfileInfo.moduleInfo.isModuleAbcCompressed = hapZipInfo.getIsModuleAbcCompressed(); } /** -- Gitee