From f40b7192484406c6c10e4acf04ef30f61261acdf Mon Sep 17 00:00:00 2001 From: z30034863 Date: Mon, 14 Jul 2025 17:49:26 +0800 Subject: [PATCH] feature:Add atomicService module size limit param 2 Signed-off-by: z30034863 --- adapter/ohos/Compressor.java | 16 ++++++++-------- .../frameworks/src/json/hap_verify_utils.cpp | 10 ++++++++-- packing_tool/frameworks/src/packager.cpp | 8 ++++++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/adapter/ohos/Compressor.java b/adapter/ohos/Compressor.java index 094c1d60..99f0dbb0 100644 --- a/adapter/ohos/Compressor.java +++ b/adapter/ohos/Compressor.java @@ -368,12 +368,12 @@ public class Compressor { } if (sumLimit < 0 || sumLimit > ATOMIC_SERVICE_TOTAL_SIZE_LIMIT_MAX) { String errMsg = "parseAtomicServiceSumSizeLimitParameter failed, " + - "input --atomic-service-total-size-limit value out of range."; + "input --atomic-service-total-size-limit value out of range [0,4194304]."; String solution = "Check the --atomic-service-total-size-limit parameter is " + "within the range of [0,4194304]."; LOG.error(PackingToolErrMsg.PARSE_ATOMIC_SERVICE_SIZE_LIMIT_FAILED.toString(errMsg, solution)); throw new BundleException("parseAtomicServiceSumSizeLimitParameter failed, " + - "input --atomic-service-total-size-limit value out of range."); + "input --atomic-service-total-size-limit value out of range [0,4194304]."); } } setSumModuleSizeLimit(sumLimit); @@ -396,12 +396,12 @@ public class Compressor { } if (entryLimit < 0 || entryLimit > ATOMIC_SERVICE_TOTAL_SIZE_LIMIT_MAX) { String errMsg = "parseAtomicServiceEntrySizeLimitParameter failed, " + - "input --atomic-service-entry-size-limit value out of range."; + "input --atomic-service-entry-size-limit value out of range [0,4194304]."; String solution = "Check the --atomic-service-entry-size-limit parameter is " + - "within the valid range."; + "within the valid range [0,4194304]."; LOG.error(PackingToolErrMsg.PARSE_ATOMIC_SERVICE_SIZE_LIMIT_FAILED.toString(errMsg, solution)); throw new BundleException("parseAtomicServiceEntrySizeLimitParameter failed, " + - "input --atomic-service-entry-size-limit value out of range."); + "input --atomic-service-entry-size-limit value out of range [0,4194304]."); } } setEntryModuleSizeLimit(entryLimit); @@ -423,12 +423,12 @@ public class Compressor { } if (notEntryLimit < 0 || notEntryLimit > ATOMIC_SERVICE_TOTAL_SIZE_LIMIT_MAX) { String errMsg = "parseAtomicServiceSizeLimit failed, " + - "input --atomic-service-non-entry-size-limit value out of range."; + "input --atomic-service-non-entry-size-limit value out of range [0,4194304]."; String solution = "Check the --atomic-service-non-entry-size-limit parameter is " + - "within the valid range."; + "within the valid range [0,4194304]."; LOG.error(PackingToolErrMsg.PARSE_ATOMIC_SERVICE_SIZE_LIMIT_FAILED.toString(errMsg, solution)); throw new BundleException("parseAtomicServiceSizeLimit failed, " + - "input --atomic-service-non-entry-size-limit value out of range."); + "input --atomic-service-non-entry-size-limit value out of range [0,4194304]."); } } setNotEntryModuleSizeLimit(notEntryLimit); diff --git a/packing_tool/frameworks/src/json/hap_verify_utils.cpp b/packing_tool/frameworks/src/json/hap_verify_utils.cpp index 6494fa33..a0da824b 100644 --- a/packing_tool/frameworks/src/json/hap_verify_utils.cpp +++ b/packing_tool/frameworks/src/json/hap_verify_utils.cpp @@ -950,6 +950,7 @@ bool HapVerifyUtils::CheckFileSizeIsValid(const std::list& hapVer int32_t notEntryLimit = hapVerifyInfos.begin()->GetNotEntrySizeLimit(); for (HapVerifyInfo hapVerifyInfo : hapVerifyInfos) { if (hapVerifyInfo.GetModuleType() == ENTRY && + entryLimit != 0 && (hapVerifyInfo.GetFileLength() >= entryLimit * FILE_LENGTH_1KB)) { LOGE("module %s's size is %.2f KB, which is overlarge than %d KB.", hapVerifyInfo.GetModuleName().c_str(), @@ -957,6 +958,7 @@ bool HapVerifyUtils::CheckFileSizeIsValid(const std::list& hapVer return false; } if (hapVerifyInfo.GetModuleType() != ENTRY && + notEntryLimit != 0 && (hapVerifyInfo.GetFileLength() >= notEntryLimit * FILE_LENGTH_1KB)) { LOGE("module %s's size is %.2f KB, which is overlarge than %d KB.", hapVerifyInfo.GetModuleName().c_str(), @@ -1005,14 +1007,18 @@ bool HapVerifyUtils::CheckAtomicServiceModuleSize(const std::list for (auto& dependency : dependenciesInfos) { fileSize += dependency.GetFileLength(); } - if (hapVerifyInfo.GetModuleType() == ENTRY && (fileSize >= entryLimit * FILE_LENGTH_1KB)) { + if (hapVerifyInfo.GetModuleType() == ENTRY && + entryLimit != 0 && + (fileSize >= entryLimit * FILE_LENGTH_1KB)) { LOGE("module %s and it's dependencies size is %.2f KB, which is overlarge than %d KB.", hapVerifyInfo.GetModuleName().c_str(), Utils::GetCeilFileSize(fileSize, entryLimit), entryLimit); return false; } - if (hapVerifyInfo.GetModuleType() != ENTRY && (fileSize >= notEntryLimit * FILE_LENGTH_1KB)) { + if (hapVerifyInfo.GetModuleType() != ENTRY && + notEntryLimit != 0 && + (fileSize >= notEntryLimit * FILE_LENGTH_1KB)) { LOGE("module %s and it's dependencies size is %.2f KB, which is overlarge than %d KB.", hapVerifyInfo.GetModuleName().c_str(), Utils::GetCeilFileSize(fileSize, notEntryLimit), diff --git a/packing_tool/frameworks/src/packager.cpp b/packing_tool/frameworks/src/packager.cpp index 65faf227..bc567c08 100644 --- a/packing_tool/frameworks/src/packager.cpp +++ b/packing_tool/frameworks/src/packager.cpp @@ -498,12 +498,14 @@ bool Packager::ParseAtomicServiceEntrySizeLimitParameter() try { entrySizeLimit = std::stoi(it->second); } catch (const std::exception& e) { + LOGE("ParseAtomicServiceEntrySizeLimitParameter failed, " + "input --atomic-service-entry-size-limit value invalid."); LOGE("Exception: %s", e.what()); return false; } if (entrySizeLimit < 0 || entrySizeLimit > Constants::ATOMIC_SERVICE_TOTAL_SIZE_LIMIT_MAX) { LOGE("ParseAtomicServiceEntrySizeLimitParameter failed, " - "input --atomic-service-entry-size-limit value out of range."); + "input --atomic-service-entry-size-limit value out of range [0,4194304]."); return false; } } @@ -519,12 +521,14 @@ bool Packager::ParseAtomicServiceNonEntrySizeLimitParameter() try { nonEntrySizeLimit = std::stoi(it->second); } catch (const std::exception& e) { + LOGE("ParseAtomicServiceEntrySizeLimitParameter failed, " + "input --atomic-service-non-entry-size-limit value invalid."); LOGE("Exception: %s", e.what()); return false; } if (nonEntrySizeLimit < 0 || nonEntrySizeLimit > Constants::ATOMIC_SERVICE_TOTAL_SIZE_LIMIT_MAX) { LOGE("ParseAtomicServiceNonEntrySizeLimitParameter failed, " - "input --atomic-service-non-entry-size-limit value out of range."); + "input --atomic-service-non-entry-size-limit value out of range [0,4194304]."); return false; } } -- Gitee