鸿蒙5.0开发实战:拆包调测工具

 鸿蒙HarmonyOS开发实战往期必看文章:(持续更新......)

HarmonyOS NEXT应用开发性能实践总结(持续更新......)

HarmonyOS NEXT应用开发案例实践总结合集(持续更新......)

一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!

最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)


拆包工具是HarmonyOS提供的一种调测工具,支持通过命令行方式将HAP、HSP、App等文件解压成文件夹,并且提供Java接口对HAP、HSP、App等文件进行解析。

拆包所用的app_unpacking_tool.jar,可以在本地下载的HarmonyOS的SDK库中找到。

约束与限制

拆包工具需要运行在Java8及其以上环境

拆包指令说明

HAP包模式拆包指令

开发者可以使用拆包工具的jar包对应用进行拆包,通过传入拆包选项、文件路径,将HAP包解压出来。

示例

java -jar app_unpacking_tool.jar --mode hap --hap-path <path> --out-path <path> [--force true]

参数含义及规范

指令是否必选项选项描述
--modehap拆包类型。
--hap-pathNAHAP包路径。
--rpcidtrue或者false是否单独将rpcid文件从HAP包中提取到指定目录,如果为true,将仅提取rpcid文件,不对HAP包进行拆包。
--out-pathNA拆包目标文件路径。
--forcetrue或者false默认值为false,如果为true,表示当目标文件存在时,强制删除。

App包模式拆包指令

开发者可以使用拆包工具的jar包对应用进行拆包,通过传入拆包选项、文件路径,将App包解压出来。

示例

java -jar app_unpacking_tool.jar --mode app --app-path <path> --out-path <path> [--force true]

参数含义及规范

指令是否必选项选项描述
--modeapp拆包类型。
--app-pathNAApp包路径。
--out-pathNA拆包目标文件路径。
--forcetrue或者false默认值为false,如果为true,表示当目标文件存在时,强制删除。

从HAP包中获取rpcid文件

开发者可以使用拆包工具的jar包对应用进行拆包,通过传入拆包选项、文件路径,获取应用的rpcid。

示例

java -jar app_unpacking_tool.jar --mode hap --rpcid true --hap-path <path> --out-path <path> [--force true]

参数含义及规范

指令是否必选项选项描述
--modehap拆包类型
--rpcidtrue或者false是否单独将rpcid文件从HAP包中提取到指定目录,如果为true,将仅提取rpcid文件,不对HAP包进行拆包。
--hap-pathNAHAP包路径
--out-pathNA拆包rpcid目标文件路径
--forcetrue或者false默认值为false,如果为true,表示当目标文件存在时,强制删除。

HSP包模式拆包指令

开发者可以使用拆包工具的jar包对应用进行拆包,通过传入拆包选项、文件路径,将HSP包解压出来。

示例

java -jar app_unpacking_tool.jar --mode hsp --hsp-path <path> --out-path <path> [--force true]

参数含义及规范

指令是否必选项选项描述
--modehsp拆包类型。
--hsp-pathNAHSP包路径。
--out-pathNA拆包目标文件路径。
--forcetrue或者false默认值为false,如果为true,表示当目标文件存在时,强制删除。

APPQF模式拆包指令

开发者可以使用拆包工具的jar包对应用进行拆包,通过传入拆包选项、文件路径,将APPQF包解压出来。

示例

java -jar app_unpacking_tool.jar --mode appqf --appqf-path <path> --out-path <path> [--force true]

参数含义及规范

指令是否必选项选项描述
--modeappqf拆包类型。
--appqf-pathNAAPPQF包路径。
--out-pathNA拆包目标文件路径。
--forcetrue或者false默认值为false,如果为true,表示当目标文件存在时,强制删除。

包解析接口

包解析接口仅用于应用市场对打好的HAP、HSP、App等包进行解析,获取其中配置文件等信息。

接口目录

类名接口原型类型接口详细描述
UncompressEntranceUncompressResult parseApp(String appPath,String parseMode,String deviceType,String hapName)Java接口接口功能:根据参数解析app包的pack.info信息 输入参数:app包路径,解析参数 返回值:UncompressResult
UncompressEntranceUncompressResult parseApp(InputStream input,String parseMode,String deviceType,String hapName,String outPath)Java接口接口功能:根据参数解析app包的pack.info信息 输入参数:app文件流,解析参数 返回值:UncompressResult
UncompressEntranceUncompressResult parseHap(String hapPath)Java接口接口功能:根据参数解析app包的json配置文件 输入参数:HAP包路径,解析参数 返回值:UncompressResult
UncompressEntranceUncompressResult parseHap(InputStream input)Java接口接口功能:根据参数解析app包的json配置文件 输入参数:HAP包文件流,解析参数 返回值:UncompressResult

拆包工具信息字段

UncompressResult(Bundle信息)结构体信息

字段类型描述备注
resultboolean标识此次解析是否成功NA
messageString解析失败时返回失败原因NA
packInfosList<PackInfo>bundle中pack.info文件的packages信息NA
profileInfosList<profileInfo>应用的配置信息NA
profileInfosStrList<String>应用的配置信息NA
iconString返回入口组件的icon路径,如果没有入口组件,则返回第一个组件的icon信息NA
labelString返回入口组件的label,如果没有入口组件,则返回第一个组件的label信息NA
packageSizelong表示App包的大小,单位字节NA

PackInfo结构体信息

字段类型描述备注
nameString包名NA
moduleNameStringHAP名称NA
moduleTypeStringmodule的类型NA
deviceTypeList<String>表示当前HAP包所支持的设备类型NA
deliveryWithInstallboolean标识当前HAP是否在用户主动安装的时候安装NA

ProfileInfo结构体信息

字段类型描述备注
hapNameString标识当前解析的HAP包名称NA
appInfoAppInfo结构体(见下述AppInfo)标识App信息的结构体(见下述AppInfo信息)NA
deviceConfigMap<String,DeviceConfig>标识设备信息存储类型为Map<String,String>,存储设备类型名称及对应设备类型的信息,在stage模型中,这个字段存储在app结构体中
hapInfoHapInfo结构体(见下述HapInfo)标识HAP包中module信息(见下述HapInfo信息)NA

AppInfo结构体信息

字段类型描述备注
bundleNameString标识App的包名称NA
vendorString标识App的供应商信息NA
relatedBundleNameString标识App相关bundle的包名NA
versionNameString标识App中的versionName信息NA
versionCodeString标识App中的versionCode信息NA
targetApiVersionint标识应用运行需要的API目标版本NA
compatibleApiVersionint标识应用兼容的API版本NA
appNameString标识显示在桌面上的ability的labelNA
appNameENString标识显示在桌面上的ability的labelNA
releaseTypeString标识应用运行需要的API目标版本的类型NA
shellVersionCodeString标识应用的API版本号NA
shellVersionNameString标识应用的API版本名称NA
multiFrameworkBundleboolean标识应用框架NA
debugboolean标识应用是否可调试NA
iconString标识应用的图标路径NA
labelString标识应用的labelNA
descriptionString标识应用的描述信息stage模型新增
minCompatibleVersionCodeint标识应用能够兼容的最低版本号NA
distributedNotificationEnabledboolean标记该应用是否开启分布式通知stage模型新增
bundleTypeString

标识bundle的类型,取值:

- app:应用

- atomicService:元服务

- shared:应用间共享库

NA
compileSdkVersionString标识编译该应用时使用的sdk版本仅限API10及以后的应用
compileSdkTypeString标识编译该应用时使用的sdk类别仅限API10及以后的应用
labelsHashMap<String, String>标识多语言应用程序AppJson的标签。NA
descriptionsHashMap<String, String>标识多语言应用程序AppJson的说明。NA

HapInfo结构体信息

字段类型描述备注
appModelAppModel枚举值

标识应用的框架模型

- FA:FA模型

- STAGE:Stage模型

NA
packageStrString标识应用的包信息FA模型特有
nameString标识当前module的名字NA
descriptionString标识HAP包的描述信息FA模型特有
supportedModesList<String>标识HAP包的支持的模式NA
abilitiesList<AbilityInfo>标识HAP包ability信息NA
defPermissionsList<DefPermission>标识HAP包DefPermission信息NA
definePermissionsList<DefinePermission>标识HAP包DefinePermission信息NA
defPermissionsGroupsList<DefPermissionsGroups>标识HAP包DefPermissionsGroups 信息NA
distroDistro结构体标识HAP包的distro信息NA
reqCapabilitiesList<String>标识HAP包reqCapabilities信息NA
deviceTypeList<String>标识HAP可以运行在哪类设备上对应stage模型中的deviceTypes
metaDataMetaData结构体(见下述metaData)标识HAP的自定义元信息NA
dependenciesList<DependencyItem>标识HAP包DependencyItem信息NA
isJsboolean标识该应用是否是js应用FA模型特有
reqPermissionslist<ReqPermission>标识应用申请的权限的集合对应stage模型的requestPermissions
commonEventsCommonEvent结构体(见下述CommonEvent)标识静态事件NA
shortcutslist<Shortcut>标识应用的shortcuts信息NA
distroFilterDistroFilter结构体标识应用市场按设备形态分发的信息NA
srcEntranceString标识应用对应的入口代码路径stage模型新增
processString标识HAP的进程名stage模型新增
mainElementString标识HAP的入口ability名称或者extension名称stage模型新增,FA模型将mainAbility的值赋值给mainElement
uiSyntaxString定义该JS Component的语法类型stage模型新增
pagesList<String>列举JS Component中每个页面信息stage模型新增
extensionAbilityInfosList<ExtensionAbilityInfo>描述extensionAbility的配置信息stage模型新增
moduleAtomicServiceModuleAtomicService结构体(见下述ModuleAtomicService)描述HAP的元服务信息NA
formInfosList<AbilityFormInfo>描述卡片的信息NA
descriptionsHashMap<String, String>标识HAP的说明信息NA
compressedSizelong标识HAP包压缩后的大小,单位字节NA
originalSizelong标识HAP包的原始大小,单位字节NA

AbilityInfo结构体信息

字段类型描述备注
nameString标识当前ability的逻辑名NA
descriptionString标识ability的描述NA
descriptionResString标识ability资源的描述NA
iconString标识ability图标NA
iconPathString标识ability图标路径NA
labelString标识ability对用户显示的名称NA
labelResString标识ability对用户显示的名称资源NA
typeString标识ability类型Stage模型下该值直接赋予page类型
formsEnabledboolean标识ability卡片是否使能NA
formInfoFormInfo结构体描述卡片的信息NA
uriString标识ability的uri信息FA模型支持
launchTypeString标识ability中的launcherType信息NA
orientationString标识ability中的orientation信息NA
visibleboolean标识ability中的visible信息NA
grantPermissionboolean标识ability中的grantPermission信息NA
readPermissionString标识ability中的readPermission信息NA
writePermissionString标识ability中的writePermission信息NA
uriPermissionModeString标识ability中的uriPermissionMode信息NA
uriPermissionPathString标识ability中的uriPermissionPath信息NA
directLaunchboolean标识ability中的directLaunch信息NA
missionString标识ability中的mission信息NA
targetAbilityString标识ability中的targetAbility信息NA
multiUserSharedboolean标识ability中的multiUserShared信息NA
supportPipModeboolean标识ability中的supportPipMode信息NA
srcLanguageString标识ability中的srcLanguage信息NA
srcPathString标识ability中的srcPath信息NA
srcEntranceString标识ability中的srcEntrance信息NA
continuableboolean标识ability中的continuable信息NA
metaDataMetaData结构体(见下述MetaData)标识ability的自定义元信息NA
configChangesList<String>标识ability中的configChanges信息NA
formInfosList<AbilityFormInfo>标识ability中的forms信息NA
permissionsList<String>标识ability中的permissions信息NA
skillsList<SkillInfo>标识ability中的skills信息NA
backgroundModesList<String>标识ability中的backgroundModes信息NA
labelsHashMap<String, String>标识多语言下ability对用户显示的名称NA
descriptionsHashMap<String, String>标识多语言下ability的描述NA

Distro结构体信息

字段类型描述备注
moduleNameString标识当前module的名字对应Stage模型中module结构体中的moduleName字段
moduleTypeString标识当前HAP的类型对应Stage模型中module结构体中的moduleType字段
deliveryWithInstallboolean标识当前HAP是否在用户主动安装的时候安装对应Stage模型中module结构体中的deliveryWithInstall字段
installationFreeint标识当前HAP是否支持免安装特性对应Stage模型中module结构体中的installationFree字段,json文件中如果配置了该字段为true,返回1,配置为false,返回0,未配置返回2
virtualMachineString标识当前HAP运行的目标虚拟机类型,供云端分发使用,如应用市场和分发中心对应Stage模型中module结构体中的virtualMachine字段

MetaData结构体信息

字段类型描述备注
parametersList<MetaDataInfo>标识Metadata的参数信息FA模型特有,stage模型废弃
resultsList<MetaDataInfo>标识Metadata的results信息FA模型特有,stage模型废弃
customizeDatasList<CustomizeData>标识Metadata的customizeDatas信息NA

MetaDataInfo结构体信息

字段类型描述备注
nameString标识MetaDataInfo的name信息FA模型特有,stage模型废弃
descriptionString标识MetaDataInfo的description信息FA模型特有,stage模型废弃
typeString标识MetaDataInfo的type信息FA模型特有,stage模型废弃

CustomizeData结构体信息

字段类型描述备注
nameString标识CustomizeData的name信息对应stage模型的metadata
valueString标识CustomizeData的value信息对应stage模型的metadata
extraString标识CustomizeData的extra信息对应stage模型的metadata

ReqPermission结构体信息

字段类型描述备注
nameString标识ReqPermission的名称信息NA
reasonString当申请的权限为user_grant权限时此字段必填,描述申请权限的原因NA
usedSceneUsedScene结构体(见下述UsedScene)描述权限使用的场景和时机。场景类型有:ability、调用时机(when),可配置多个abilityNA
reasonsHashMap<String, String>当申请的权限为user_grant权限时此字段必填,描述申请权限的原因NA

UsedScene结构体信息

字段类型描述备注
abilityList<String>标识需要使用到该权限的元能力(ability),该标签值为数组形式NA
whenString标识使用该权限的时机,值为inuse/always,表示为仅允许前台使用和前后台都可使用NA

Shortcut结构体信息

字段类型描述备注
shortcutIdString标识ShortCut的IdNA
labelString标识ShortCut的标签信息NA
iconString标识ShortCut的图标信息NA
intentsList<IntentInfo>标识快捷方式内定义的目标intent信息集合,每个intent可配置两个子标签,targetClass,targetBundleNA
labelsHashMap<String, String>标识多语言下ShortCut对用户显示的名称NA

IntentInfo结构体信息

字段类型描述备注
targetClassString快捷方式目标类型NA
targetBundleString快捷方式目标包名NA

DistroFilter结构体信息

字段类型描述备注
apiVersionApiVersion结构体标识DistroFilter中的apiVersion信息NA
screenShapeScreenShape结构体标识DistroFilter中的screenShape信息NA
screenDensityScreenDensity结构体标识DistroFilter中的screenDensity信息NA
screenWindowScreenWindow结构体标识DistroFilter中的screenWindow信息NA
countryCodeCountryCode结构体标识DistroFilter中的countryCode信息NA

ApiVersion结构体信息

字段类型描述备注
policyString标识结构体中的policy信息NA
valueList<String>标识结构体中的value信息NA

ScreenShape结构体信息

字段类型描述备注
policyString标识结构体中的policy信息NA
valueList<String>标识结构体中的value信息NA

ScreenDensity结构体信息

字段类型描述备注
policyString标识结构体中的policy信息NA
valueList<String>标识结构体中的value信息NA

ScreenWindow结构体信息

字段类型描述备注
policyString标识结构体中的policy信息NA
valueList<String>标识结构体中的value信息NA

CountryCode结构体信息

字段类型描述备注
policyString标识结构体中的policy信息NA
valueList<String>标识结构体中的value信息NA

ExtensionAbilityInfo结构体信息

字段类型描述备注
nameString标识当前extensionAbility的逻辑名stage模型支持
srcEntranceString标识extensionAbility所对应的js代码路径stage模型支持
iconString标签标识extensionAbility图标stage模型支持
labelString标识extensionAbility对用户显示的名称stage模型支持
descriptionString标识extensionAbility的描述stage模型支持
typeString标识extensionAbility的类型:form、workScheduler、inputMethod、service、accessibility、dataShare、fileShare、wallpaper、backupstage模型支持,目前仅解析了form、staticSubscriber的信息、其他类型(如:workScheduler、inputMethod、service、accessibility、dataShare、fileShare、wallpaper、backup)暂未解析
permissionsList<String>标识被其它应用的ability调用时需要申请的权限的集合stage模型支持
readPermissionString标识读取ability的数据所需的权限stage模型支持
writePermissionString标识向ability写数据所需的权限stage模型支持
visibleboolean标识extensionAbility是否可以被其它应用调用stage模型支持
skillsList<SkillInfo>标识extensionAbility能够接收的意图的特征集stage模型支持
metadataInfosList<ModuleMetadataInfo>标识extensionAbility能够接收的元数据信息stage模型支持
metadataMetaData结构体标识extensionAbility的元信息将metadata中的信息赋值到CustomizeData中
uriString标识extensionAbility提供的数据uristage模型支持
descriptionsHashMap<String, String>标识多语言下extensionAbility的描述NA
labelsHashMap<String, String>标识多语言下extensionAbility对用户显示的名称NA

SkillInfo结构体信息

字段类型描述备注
actionsList<String>标识能够接收的意图的action值的集合NA
entitiesList<String>标识能够接收的意图的元能力的类别集合NA

UriInfo结构体信息

字段类型描述备注
schemaString标识ModuleUriInfo的范式信息NA
hostString标识ModuleUriInfo的宿主信息NA
portString标识ModuleUriInfo的端口信息NA
pathStartWithString标识ModuleUriInfo的路径前缀NA
pathRegexString标识ModuleUriInfo的路径正则信息NA
pathString标识ModuleUriInfo的路径信息NA
typeString标识ModuleUriInfo的种类NA

AbilityFormInfo结构体信息

字段类型描述备注
nameString标识forms的名称NA
typeString标签标识卡片的类型NA
updateEnabledboolean标识该卡片是否支持定时刷新NA
scheduledUpdateTimeString标签标识卡片顶点刷新的时间,采用24小时计数,精确到分钟NA
updateDurationint标识卡片定时刷新的更新频率,单位为30分钟,取值为30的倍数值NA
supportDimensionsList<String>标识卡片外观规格,取值为”1 * 2“,”2 * 2“,”2 * 4“,”4 * 4“NA
defaultDimensionString标识卡片默认外观规格,取值必须在supportDimensions配置的列表中NA
MetaDataMetaData标识卡片的自定义信息NA
descriptionString标识forms的描述stage模型新增
srcString标签JS卡片对应的UI代码NA
windowInfoModuleWindowInfo结构体标签能力窗体的窗口。NA
isDefaultboolean标识该卡片是否为默认卡片,每个HAP有且只能有一个默认卡片NA
colorModeString标识卡片的色调,取值为auto、dark、light其中之一NA
formConfigAbilityString标识卡片调整的Ability名称NA
formVisibleNotifyString标识卡片是否被允许使用卡片可见性通知NA
providerAbilityString卡片的提供方所在的Ability或者extension名称,1.FA模型:如果卡片配置在service类型的ability中,providerAbility配置为mainAbility 2.FA模型:如果卡片配置在Page类型的Ability中,providerAbility配置为当前Ability 3.FA模型:如果没有配置mainAbility,providerAbility配置为当前HAP包中的优先使用system.home,否则第一个page的Ability 4.stage模型中(follow上述规则),providerAbility配置为mainElementNA
descriptionsHashMap<String, String>标识多语言下ability的描述NA

CommonEvent结构体信息

字段类型描述备注
nameString当前静态公共事件对应的类名Stage模型从staticSubscriber类型的Extension中获取
permissionString标识实现该静态公共事件需要申请的权限Stage模型从staticSubscriber类型的Extension中获取
dataList<String>当前静态公共时间需要携带的额外数据数组Stage模型从staticSubscriber类型的Extension中获取
typeList<String>配置当前静态公共时间的类别数组Stage模型从staticSubscriber类型的Extension中获取
eventsList<String>标识能够接收的意图的event值的集合Stage模型从staticSubscriber类型的Extension中获取

DependencyItem结构体信息

字段类型描述备注
bundleNameString共享包的bundleNameNA
moduleNameString共享包的moduleNameNA
versionCodeString共享包的版本号NA

ModuleAtomicService结构体信息

字段类型描述备注
preloadItemslist<PreloadItem>预加载对象NA

PreloadItem结构体信息

字段类型描述备注
moduleNameString预加载的模块名NA

DeviceConfig结构体信息

字段类型描述备注
targetReqSdkString标识应用程序DeviceConfig的目标请求Sdk版本NA
compatibleReqSdkString标识应用程序DeviceConfig的兼容请求Sdk版本NA
jointUseridString标识应用程序DeviceConfig的jointUseridNA
processString标识应用程序DeviceConfig的进程NA
arkFlagString标识应用程序DeviceConfig的arkFlagNA
targetArkVersionString标识应用程序DeviceConfig的targetArkVersionNA
compatibleArkVersionString标识应用程序DeviceConfig的兼容ArkVersionNA
directLaunchboolean标识应用程序DeviceConfig的直接启动NA
distributedNotificationEnabledboolean标识应用程序AppJson的distributedNotificationEnabledNA

DefPermission结构体信息

字段类型描述备注
nameString标识指示DefPermission的名称NA
grantModeString标识DefPermission的grantModeNA
groupString标识DefPermission的组NA
labelString标识DefPermission的标签NA
descriptionString标识DefPermission的描述NA
availableScopeList<String>标识DefPermission的可用范围NA
labelsHashMap<String, String>标识多语言应用程序DefPermission的标签NA
descriptionsHashMap<String, String>标识多语言应用程序DefPermission的说明NA

DefinePermission结构体信息

字段类型描述备注
nameString标识DefinePermission的名称NA
grantModeString标识DefinePermission的grantModeNA
availableLevelString标识DefinePermission的组NA
provisionEnableboolean标识模块定义权限的提供启用NA
distributedSceneEnableboolean标识ModuleDefinePermissions的distributedSceneEnableNA
labelString标识DefinePermission的标签NA
descriptionString标识DefinePermission的描述NA
descriptionsHashMap<String, String>标识多语言应用程序DefinePermission的说明NA
labelsHashMap<String, String>标识多语言应用程序DefinePermission的标签NA

DefPermissionsGroups结构体信息

字段类型描述备注
nameString标识DefPermissionGroup的名称NA
orderString标识DefPermissionGrou的顺序NA
iconString标识DefPermissionGroup的图标NA
labelString标识DefPermissionGroup的标签NA
descriptionString标识DefPermissionGroup的描述NA
requestboolean标识DefPermissionGroup的请求NA

FormInfo结构体信息

字段类型描述备注
formEntityList<String>标识formInfo的formEntityNA
minHeightString标识formInfo的最小高度NA
defaultHeightString标识formInfo的默认高度NA
minWidthString标识formInfo的最小宽度NA
defaultWidthString标识formInfo的默认宽度NA

ModuleMetadataInfo结构体信息

字段类型描述备注
nameString标识ModuleMetadataInfo的名称NA
valueString标识ModuleMetadataInfo的值NA
resourceString标识ModuleMetadataInfo的资源NA

ModuleWindowInfo结构体信息

字段类型描述备注
designWidthint标识模块已用场景的设计宽度NA
autoDesignWidthboolean标识ModuleUsedScene的autoDesignWidthNA


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值