diff --git a/adapter/ohos/AbilityInfo.java b/adapter/ohos/AbilityInfo.java index 00cd88ff097895f61e360c9b91e6dfac2f6ebcd5..9c2b0fdf5906cb7b2793ebfcbdfbcc4c9699dec7 100644 --- a/adapter/ohos/AbilityInfo.java +++ b/adapter/ohos/AbilityInfo.java @@ -66,7 +66,7 @@ public class AbilityInfo { /** * Indicates the formEnabled of ability. */ - public boolean formEnabled = false; + public boolean formsEnabled = false; /** * Indicates the formInfo of ability. @@ -173,6 +173,16 @@ public class AbilityInfo { */ public List formInfos = new ArrayList(); + /** + * Indicates the srcLanguage of ability. + */ + public String srcLanguage = "js"; + + /** + * Indicates the srcPath of ability. + */ + public String srcPath = ""; + // stage module character /** * Indicates the srcEntrance of module ModuleJson. diff --git a/adapter/ohos/DefPermission.java b/adapter/ohos/DefPermission.java index 7bb0a7d1c80e9b774e7c656b9a0053fbe2461ee6..b6ac01c47e7e319c15f49f446bc7d6c2b2a567fc 100644 --- a/adapter/ohos/DefPermission.java +++ b/adapter/ohos/DefPermission.java @@ -17,7 +17,7 @@ package ohos; /** * DefPermission info. - * + * @deprecated */ public class DefPermission { /** @@ -54,7 +54,7 @@ public class DefPermission { /** * Indicates the provisionEnable of ModuleDefinePermissions. */ - public boolean provisionEnabled = true; + public boolean provisionEnable = true; /** * Indicates the distributedSceneEnable of ModuleDefinePermissions. */ diff --git a/adapter/ohos/DefPermissionGroup.java b/adapter/ohos/DefPermissionGroup.java index 1078ecae8591bee5840ed308be833a7d7f1633c6..15df41a65df12d3b08a186a0ecebf6f3aa62cd02 100644 --- a/adapter/ohos/DefPermissionGroup.java +++ b/adapter/ohos/DefPermissionGroup.java @@ -17,7 +17,7 @@ package ohos; /** * DefPermissionGroup info. - * + * @deprecated */ public class DefPermissionGroup { /** diff --git a/adapter/ohos/ExtensionAbilityInfo.java b/adapter/ohos/ExtensionAbilityInfo.java index 2cb256ffd99bf2fdb5dc730c0c2fcb407ae82a3c..b6ca363d09a6df14e119fa42d3086e22d542c54e 100644 --- a/adapter/ohos/ExtensionAbilityInfo.java +++ b/adapter/ohos/ExtensionAbilityInfo.java @@ -47,7 +47,7 @@ public class ExtensionAbilityInfo { /** * Indicates the visible of module ModuleJson. */ - public boolean visible = true; + public boolean visible = false; /** * Indicates the skill of module ModuleJson. */ diff --git a/adapter/ohos/JsonUtil.java b/adapter/ohos/JsonUtil.java index d6f799c21419acb937e0c8144e90ccb0dc076bf5..c3956505083e548354213cd5dad3c3c2abaeeb89 100644 --- a/adapter/ohos/JsonUtil.java +++ b/adapter/ohos/JsonUtil.java @@ -502,7 +502,7 @@ public class JsonUtil { } hapInfo.packageStr = getJsonString(hapJson, "package"); hapInfo.name = getJsonString(hapJson, "name"); - hapInfo.description = getJsonString(hapJson, "description"); + hapInfo.description = parseResourceByKey(hapJson, data, "description", "descriptionId"); if (hapJson.containsKey("supportedModes")) { hapInfo.supportedModes = JSONObject.parseArray(getJsonString(hapJson, "supportedModes"), @@ -683,8 +683,8 @@ public class JsonUtil { ability.launchType = getJsonString(abilityJson, "launchType"); ability.orientation = getJsonString(abilityJson, "orientation"); ability.uri = getJsonString(abilityJson, "uri"); - if (abilityJson.containsKey("formEnabled")) { - ability.formEnabled = abilityJson.getBoolean("formEnabled"); + if (abilityJson.containsKey("formsEnabled")) { + ability.formsEnabled = abilityJson.getBoolean("formsEnabled"); } if (abilityJson.containsKey("metaData")) { @@ -709,6 +709,14 @@ public class JsonUtil { ability.configChanges = JSONObject.parseArray(getJsonString(abilityJson, "configChanges"), String.class); } + if (abilityJson.containsKey("srcLanguage")) { + ability.srcLanguage = getJsonString(abilityJson, "srcLanguage"); + } + + if (abilityJson.containsKey("srcPath")) { + ability.srcPath = getJsonString(abilityJson, "srcPath"); + } + parseAbilityPermissions(abilityJson, ability); if (abilityJson.containsKey("forms")) { @@ -717,7 +725,7 @@ public class JsonUtil { int formSize = forms.size(); for (int i = 0; i < formSize; i++) { JSONObject tmpObj = forms.getJSONObject(i); - formList.add(parseAbilityFormInfo(tmpObj)); + formList.add(parseAbilityFormInfo(tmpObj, data)); } ability.formInfos = formList; } @@ -786,9 +794,10 @@ public class JsonUtil { * parse ability forms object * * @param abilityFormJson ability form json object + * @param data resource index data * @return the ability form info result */ - static AbilityFormInfo parseAbilityFormInfo(JSONObject abilityFormJson) { + static AbilityFormInfo parseAbilityFormInfo(JSONObject abilityFormJson, byte[] data) throws BundleException { AbilityFormInfo abilityForm = new AbilityFormInfo(); if (abilityFormJson == null) { LOG.error("Uncompress::parseAbilityFormInfo : abilityFormJson is null"); @@ -796,6 +805,13 @@ public class JsonUtil { } abilityForm.name = getJsonString(abilityFormJson, "name"); abilityForm.type = getJsonString(abilityFormJson, "type"); + abilityForm.description = parseResourceByKey(abilityFormJson, data, "description", "descriptionId"); + if (abilityFormJson.containsKey("colorMode")) { + abilityForm.colorMode = getJsonString(abilityFormJson, "colorMode"); + } + if (abilityFormJson.containsKey("formConfigAbility")) { + abilityForm.formConfigAbility = getJsonString(abilityFormJson, "formConfigAbility"); + } if (abilityFormJson.containsKey("updateEnabled")) { abilityForm.updateEnabled = abilityFormJson.getBoolean("updateEnabled"); } @@ -834,6 +850,7 @@ public class JsonUtil { throw new BundleException("Parse module profile info failed, app or module is null"); } + if (jsonObject.containsKey("app")) { JSONObject appJson = jsonObject.getJSONObject("app"); moduleProfileInfo.moduleAppInfo = parseModuleAppInfo(appJson, data); @@ -845,17 +862,12 @@ public class JsonUtil { } // parse appName - if (moduleProfileInfo.moduleInfo.abilities.size() == 1) { - moduleProfileInfo.moduleAppInfo.appName = moduleProfileInfo.moduleInfo.abilities.get(0).label; - moduleProfileInfo.moduleAppInfo.appNameEN = moduleProfileInfo.moduleInfo.abilities.get(0).label; - } else { - for (ModuleAbilityInfo abilityInfo : moduleProfileInfo.moduleInfo.abilities) { - for (SkillInfo skill : abilityInfo.skills) { - if (skill.actions.contains(ACTION_SYSTEM_HOME) && skill.entities.contains(ENTITY_SYSTEM_HOME)) { - moduleProfileInfo.moduleAppInfo.appName = abilityInfo.label; - moduleProfileInfo.moduleAppInfo.appNameEN = abilityInfo.label; - break; - } + for (ModuleAbilityInfo abilityInfo : moduleProfileInfo.moduleInfo.abilities) { + for (SkillInfo skill : abilityInfo.skills) { + if (skill.actions.contains(ACTION_SYSTEM_HOME) && skill.entities.contains(ENTITY_SYSTEM_HOME)) { + moduleProfileInfo.moduleAppInfo.appName = abilityInfo.label; + moduleProfileInfo.moduleAppInfo.appNameEN = abilityInfo.label; + break; } } } @@ -942,6 +954,9 @@ public class JsonUtil { // parse abilities if (moduleJson.containsKey("abilities")) { moduleInfo.abilities = parseModuleAbilities(moduleJson, data, profileJsons); + for (ModuleAbilityInfo abilityInfo : moduleInfo.abilities) { + moduleInfo.moduleShortcuts.addAll(parseShortcut(abilityInfo.metadata, data)); + } } // parse extensionabilities if (moduleJson.containsKey("extensionAbilities")) { @@ -955,6 +970,10 @@ public class JsonUtil { if (moduleJson.containsKey("requestPermissions")) { moduleInfo.requestPermissions = parseReqPermission(moduleJson, data); } + // parse define permission + if (moduleJson.containsKey("definePermissions")) { + moduleInfo.defPermissions = parseDefPermissions(moduleJson, data); + } return moduleInfo; } @@ -1442,6 +1461,90 @@ public class JsonUtil { return moduleFormInfo; } + /** + * parse define permission objects + * + * @param moduleJson is module json object + * @param data is resource byte in hap + * @throws BundleException Throws this exception if the json is not standard. + */ + static List parseDefPermissions(JSONObject moduleJson, byte[] data) throws BundleException { + List defPermissions = new ArrayList<>(); + if (moduleJson.containsKey("definePermissions")) { + JSONArray defPermissionObjs = moduleJson.getJSONArray("definePermissions"); + for (int i = 0; i < defPermissionObjs.size(); ++i) { + defPermissions.add(parseDefPermission(defPermissionObjs.getJSONObject(i), data)); + } + } + return defPermissions; + } + + /** + * parse define permission objects + * + * @param defPermissionObj is def permission json object + * @param data is resource byte in hap + * @throws BundleException Throws this exception if the json is not standard. + */ + static DefPermission parseDefPermission(JSONObject defPermissionObj, byte[] data) throws BundleException { + DefPermission defPermission = new DefPermission(); + if (defPermissionObj.containsKey("name")) { + defPermission.name = getJsonString(defPermissionObj, "name"); + } + if (defPermissionObj.containsKey("grantMode")) { + defPermission.grantMode = getJsonString(defPermissionObj, "grantMode"); + } + if (defPermissionObj.containsKey("availableLevel")) { + defPermission.availableScope = getJsonString(defPermissionObj, "availableLevel"); + } + defPermission.label = parseResourceByKey(defPermissionObj, data, "label", "labelId"); + defPermission.description = parseResourceByKey(defPermissionObj, data, "description", "descriptionId"); + if (defPermissionObj.containsKey("provisionEnable")) { + defPermission.provisionEnable = defPermissionObj.getBoolean("provisionEnable"); + } + if (defPermissionObj.containsKey("distributedSceneEnable")) { + defPermission.distributedSceneEnable = defPermissionObj.getBoolean("distributedSceneEnable"); + } + return defPermission; + } + + /** + * parse define permission group objects + * + * @param moduleJson is module json object + * @param data is resource byte in hap + * @throws BundleException Throws this exception if the json is not standard. + */ + static List parseDefPermissionGroups(JSONObject moduleJson, byte[] data) throws BundleException { + List defPermissionGroups = new ArrayList<>(); + if (moduleJson.containsKey("defPermissionGroups")) { + JSONArray defPermissionGroupObj = moduleJson.getJSONArray("defPermissionGroups"); + for (int i = 0; i < defPermissionGroupObj.size(); ++i) { + defPermissionGroups.add(parseDefPermissionGroup(defPermissionGroupObj.getJSONObject(i), data)); + } + } + return defPermissionGroups; + } + + /** + * parse define permission group objects + * + * @param defPermissionGroupObj is def permission json object + * @param data is resource byte in hap + * @throws BundleException Throws this exception if the json is not standard. + */ + static DefPermissionGroup parseDefPermissionGroup(JSONObject defPermissionGroupObj, byte[] data) throws BundleException { + DefPermissionGroup defPermissionGroup = new DefPermissionGroup(); + if (defPermissionGroupObj.containsKey("name")) { + defPermissionGroup.name = getJsonString(defPermissionGroupObj, "name"); + } + defPermissionGroup.label = parseResourceByKey(defPermissionGroupObj, data, "label", "labelId"); + defPermissionGroup.description = + parseResourceByKey(defPermissionGroupObj, data, "description", "descriptionId"); + defPermissionGroup.icon = parseIconById(defPermissionGroupObj, data); + return defPermissionGroup; + } + /** * get resource from JSONObject by the id. * diff --git a/adapter/ohos/ModuleAdaption.java b/adapter/ohos/ModuleAdaption.java index ad32fae73460757bf1b4b5ae537b4f598abf650f..61c66e9f2f77d3457666c458b196987f1f72a9e2 100644 --- a/adapter/ohos/ModuleAdaption.java +++ b/adapter/ohos/ModuleAdaption.java @@ -25,6 +25,7 @@ class ModuleAdaption { for (int i = 0; i < moduleResult.moduleProfileInfos.size(); ++i) { ModuleProfileInfo moduleProfileInfo = moduleResult.moduleProfileInfos.get(i); ProfileInfo profileInfo = new ProfileInfo(); + profileInfo.hapName = moduleProfileInfo.hapName; // adapt appInfo profileInfo.appInfo = convertToAppInfo(moduleProfileInfo.moduleAppInfo); //adapt deviceconfig @@ -132,6 +133,8 @@ class ModuleAdaption { hapInfo.distroFilter = moduleInfo.distroFilter; hapInfo.formInfos = moduleInfo.abilityFormInfos; hapInfo.commonEvents = moduleInfo.commonEvents; + // convert def permission + hapInfo.defPermissions = moduleInfo.defPermissions; return hapInfo; } diff --git a/adapter/ohos/ModuleInfo.java b/adapter/ohos/ModuleInfo.java index 628a0acf18b1b1a02d6633a065ba869be51c4b7b..3c74b761d4e6a097338e2ceea1e17fe8b5ad6819 100644 --- a/adapter/ohos/ModuleInfo.java +++ b/adapter/ohos/ModuleInfo.java @@ -99,4 +99,8 @@ class ModuleInfo { * Indicates the common events of ModuleInfo. */ List abilityFormInfos = new ArrayList<>(); + /** + * Indicates the define permissions of ModuleInfo. + */ + List defPermissions = new ArrayList<>(); } diff --git a/adapter/ohos/ModuleResult.java b/adapter/ohos/ModuleResult.java index d75e2112953cf24be8ec9e36912ad66529dbae97..bec13b7809fdc51047b4d43b8cda1851a5e94267 100644 --- a/adapter/ohos/ModuleResult.java +++ b/adapter/ohos/ModuleResult.java @@ -27,11 +27,11 @@ class ModuleResult { /** * Indicates the result of ModuleJson. */ - private boolean result = false; + private boolean result = true; /** * Indicates the message of ModuleJson. */ - private String message = ""; + private String message = "Success"; public boolean getResult() { return result; diff --git a/adapter/ohos/Uncompress.java b/adapter/ohos/Uncompress.java index d88f0152e266d82efeef19e6e395c6a66300eed8..9ba701cdb458e90e428e99d9a0dfec6eb5acaa04 100644 --- a/adapter/ohos/Uncompress.java +++ b/adapter/ohos/Uncompress.java @@ -277,6 +277,7 @@ public class Uncompress { compressResult = unCompressModuleHap(deviceType, hapPath, MODULE_JSON); } else { compressResult = uncompress(deviceType, hapPath, HARMONY_PROFILE); + compressResult = obtainLabelAndIcon(compressResult); } } catch (BundleException e) { LOG.error("Uncompress::uncompressHapByPath Bundle exception"); @@ -323,6 +324,7 @@ public class Uncompress { } else { InputStream parseInput = new ByteArrayInputStream(outputStream.toByteArray()); compressResult = uncompressByInput(deviceType, parseInput, HARMONY_PROFILE); + compressResult = obtainLabelAndIcon(compressResult); } } catch (BundleException e) { LOG.error("Uncompress::uncompressHapByStream Bundle exception"); diff --git a/jar/app_unpacking_tool.jar b/jar/app_unpacking_tool.jar index 4aea0098953b780df0dabd8656569ada65deeff1..23fe766e85d81353812dea4364a35fd15f99fc78 100644 Binary files a/jar/app_unpacking_tool.jar and b/jar/app_unpacking_tool.jar differ