diff --git a/adapter/ohos/HapVerify.java b/adapter/ohos/HapVerify.java index 0b559fd22faee32081d53e11854b77d025b94966..a4cded682c2575d552a3e67ec00875c2d127a5fa 100644 --- a/adapter/ohos/HapVerify.java +++ b/adapter/ohos/HapVerify.java @@ -221,7 +221,9 @@ class HapVerify { if (!Collections.disjoint(hapVerifyInfos.get(i).abilityNames, hapVerifyInfos.get(j).abilityNames)) { if (!checkDuplicatedIsValid(hapVerifyInfos.get(i), hapVerifyInfos.get(j))) { LOG.error("HapVerify::checkAbilityNameIsValid " + hapVerifyInfos.get(i).moduleName + - " " + hapVerifyInfos.get(j).moduleName + " ability duplicated!"); + " " + hapVerifyInfos.get(j).moduleName + " ability duplicated, duplicated ability is " + + hapVerifyInfos.get(i).abilityNames.stream().filter(hapVerifyInfos.get(j). + abilityNames::contains).collect(Collectors.toList())); return false; } } @@ -283,13 +285,19 @@ class HapVerify { // check deviceType if (Collections.disjoint(hapVerifyInfoLeft.deviceType, hapVerifyInfoRight.deviceType)) { return true; + } else { + if (hapVerifyInfoLeft.distroFilter == null || hapVerifyInfoRight.distroFilter == null) { + LOG.error("HapVerify::checkDuplicatedIsValid deviceType joint!"); + return false; + } } // check distroFilter if (checkDistroFilterDisjoint(hapVerifyInfoLeft.distroFilter, hapVerifyInfoRight.distroFilter)) { return true; + } else { + LOG.error("HapVerify::checkDuplicatedIsValid distroFilter joint!"); + return false; } - - return false; } /** @@ -404,7 +412,7 @@ class HapVerify { // check deviceType and distroFilter for (String device : featureHap.deviceType) { if (!deviceHap.containsKey(device)) { - LOG.error("HapVerify::checkFeature " + device + " has no entry!"); + LOG.error("HapVerify::checkFeature failed, deviceType not covered " + device + " has no entry!"); return false; } List entryHaps = deviceHap.get(device); @@ -828,6 +836,20 @@ class HapVerify { return layerHapVerifyInfoList; } + private static boolean checkModuleDisJoint(HapVerifyInfo hapVerifyInfoLeft, HapVerifyInfo hapVerifyInfoRight) + throws BundleException { + // check deviceType + if (Collections.disjoint(hapVerifyInfoLeft.deviceType, hapVerifyInfoRight.deviceType)) { + return true; + } + // check distroFilter + if (checkDistroFilterDisjoint(hapVerifyInfoLeft.distroFilter, hapVerifyInfoRight.distroFilter)) { + return true; + } + + return false; + } + /** * check two module is joint * @@ -836,7 +858,7 @@ class HapVerify { * @return true if dependency list is valid */ private static boolean checkModuleJoint(HapVerifyInfo infoLeft, HapVerifyInfo infoRight) throws BundleException { - return !checkDuplicatedIsValid(infoLeft, infoRight); + return !checkModuleDisJoint(infoLeft, infoRight); } /** diff --git a/adapter/ohos/HapVerifyInfo.java b/adapter/ohos/HapVerifyInfo.java index eac626eb2a09b0adff0b1f765a8e99c6ea2c531f..f5daff2db8f8d6b6ed7ce68fa1d0635058a7468d 100644 --- a/adapter/ohos/HapVerifyInfo.java +++ b/adapter/ohos/HapVerifyInfo.java @@ -51,7 +51,7 @@ class HapVerifyInfo { /** * Indicates the distrofilter of module. */ - public DistroFilter distroFilter = new DistroFilter(); + public DistroFilter distroFilter = null; /** * Indicates the deviceType of module. */ diff --git a/adapter/ohos/ModuleJsonUtil.java b/adapter/ohos/ModuleJsonUtil.java index 5b5801a39f76a0e54181ef5df9cca6a99f2b1ac8..29437509455dab1df8da6f0cea63be3b768ba2c1 100644 --- a/adapter/ohos/ModuleJsonUtil.java +++ b/adapter/ohos/ModuleJsonUtil.java @@ -822,19 +822,17 @@ class ModuleJsonUtil { * @return DistroFilter is the result of parsed distroFilter */ public static DistroFilter parseStageDistroFilter(List moduleMetadataInfos) { - DistroFilter distroFilter = new DistroFilter(); for (ModuleMetadataInfo moduleMetadataInfo : moduleMetadataInfos) { if (moduleMetadataInfo.resource.isEmpty()) { continue; } JSONObject distroFilterObj = JSON.parseObject(moduleMetadataInfo.resource); if (distroFilterObj.containsKey(DISTROFILTER)) { - distroFilter = JSONObject.parseObject(getJsonString(distroFilterObj, + return JSONObject.parseObject(getJsonString(distroFilterObj, DISTROFILTER), DistroFilter.class); - return distroFilter; } } - return distroFilter; + return null; } /** @@ -901,16 +899,15 @@ class ModuleJsonUtil { * @throws BundleException Throws this exception if the json is not standard. */ public static DistroFilter parseFADistroFilter(String jsonString) { - DistroFilter distroFilter = new DistroFilter(); JSONObject jsonObj = JSON.parseObject(jsonString); if (jsonObj.containsKey(MODULE)) { JSONObject moduleObj = jsonObj.getJSONObject(MODULE); if (moduleObj.containsKey(DISTROFILTER)) { - distroFilter = JSONObject.parseObject(getJsonString(moduleObj, + return JSONObject.parseObject(getJsonString(moduleObj, DISTROFILTER), DistroFilter.class); } } - return distroFilter; + return null; } /** diff --git a/jar/app_packing_tool.jar b/jar/app_packing_tool.jar index 844d912a05953603bcfdb4d5f743ce6c487e4f72..b681d968b17e4e5367aea863d62a210f20116271 100644 Binary files a/jar/app_packing_tool.jar and b/jar/app_packing_tool.jar differ