diff --git a/adapter/ohos/HapInfo.java b/adapter/ohos/HapInfo.java index 9f2c7ebb7d7335f32c94c943566169fcffbc9a47..bc0f3000d72b9dceb65f20dacfa5b4e58cd56537 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 175174f31e436b80a45f43a1b2d0ba133e86a798..515b28ffa5a35efe5f76243b8e8d6b71e08e0619 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 e5e425197c905de57ab4e843ad1f3235fca20dce..84b5381b328cc66bbece3c30792620fc9c9c534d 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 cb349b44d0530747638ab075cd9dd0029ba616b5..50f5478a92b4c25dfca5510d2157e60e83f0aaf8 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 5dd352a0105f5f47be5ba94b7dbcb5a62843c5b1..a23f04a55db5998d7ad8f578e0e0dcf7f6607360 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(); } /**