海口模板网站建站,wordpress 文章发布到指定页面,大连网页制作美工,烟台开发区住房和建设局网站HAP是应用安装的基本单位#xff0c;在DevEco Studio工程目录中#xff0c;一个HAP对应一个Module。应用打包时#xff0c;每个Module生成一个.hap文件。
应用如果包含多个Module#xff0c;在应用市场上架时#xff0c;会将多个.hap文件打包成一个.app文件#xff08;称…HAP是应用安装的基本单位在DevEco Studio工程目录中一个HAP对应一个Module。应用打包时每个Module生成一个.hap文件。
应用如果包含多个Module在应用市场上架时会将多个.hap文件打包成一个.app文件称为Bundle但在云端分发和端侧安装时仍然是以HAP为基本单位。
为了能够正常分发和安装应用需要保证一个应用安装到设备时Module的名称、Ability的名称不重复并且只有一个Entry类型的Module与目标设备相对应。
DevEco Studio会在编译构建时对HAP进行上述唯一性校验如果校验不通过将会编译失败或给出告警。 说明 当前仅在API 8的工程中针对distrofilter进行打包校验。 Module校验逻辑
校验目的同一目标设备上Module唯一。
1.校验Module的Name。如果多个Module的Name不同则校验通过。如果Name相同继续校验deviceType。
2.校验设备类型deviceType。如果deviceType不相交则校验通过。如果deviceType相交继续校验distroFilter。
deviceType不相交是指两个Module的deviceType中配置了完全不同的设备例如
//Module1和Module2配置了完全不同的设备deviceType不相交。
//Module1
{deviceType: [TV, tablet]
}
//Module2
{deviceType: [car, router]
}deviceType相交是指两个Module的deviceType中包含了相同的设备例如
//Module1和Module2因为都包含“tablet”设备导致deviceType相交。
//Module1
{deviceType: [TV, tablet]
}
//Module2
{deviceType: [car, tablet]
}3.校验分发规则distroFilter。如果distroFilter不相交则校验通过。如果distroFilter相交则无法保证Module唯一性校验失败打包失败。
distroFilter中包含属性apiVersion、screenShape、screenWindow、screenDensity和countryCode。相交的相关含义如下
distroFilter不相交如果两个distroFilter中任意一个属性不相交则两个distroFilter不相交。distroFilter相交如果两个distroFilter中所有属性都相交则两个distroFilter相交。
例如两个Module中的apiVersion、screenShape、screenWindow、screenDensity都相交但countryCode不相交则可以区分两个Module校验通过。
//Module1和Module2的两个distroFilter中countryCode不相交则两个distroFilter不相交。
//Module1
{distroFilter: {apiVersion : {policy: include,value: [8,9]},screenShape: {policy: include,value: [rect]},screenWindow: {policy: include,value: [454*454, 466*466]},screenDensity: {policy: include,value: [ldpi, xldpi]},countryCode: {policy: include,value: [CN, HK]}}
}
//Module2
{distroFilter: {apiVersion : {policy: include,value: [8,9]},screenShape: {policy: include,value: [rect]},screenWindow: {policy: include,value: [454*454, 466*466]},screenDensity: {policy: include,value: [ldpi, xldpi]},countryCode: {policy: include,value: [USA, UK]}}
}Ability校验逻辑
校验目的同一目标设备上Ability唯一。
1.校验Ability的Name。如果多个Ability的Name不同则校验通过。如果Name相同继续校验Ability所属Module的deviceType。
2.校验Ability所属Module的deviceType。如果deviceType不相交校验通过。如果deviceType相交继续校验Ability所属Module的distroFilter。
例如两个Ability的Name相同但其所属Module的deviceType不相交校验通过。
//Ability1和Ability2虽然名称相同但由于其所属Module的deviceType不相交所以可以区分两个Ability校验通过。
//Ability1
{module: {name: module_sample1,deviceType: [TV, tablet],abilities: [{name: ability_sample}]}
}
//Ability2
{module: {name: module_sample2,deviceType: [car, router],abilities: [{name: ability_sample}]}
}3.校验Ability所属Module的distroFilter。如果distroFilter不相交校验通过。如果distroFilter相交校验失败抛出告警。
例如两个Ability的Name相同其所属Module的deviceType也相交但其所属Module的distroFilter不相交校验通过。
//Ability1和Ability2的Name相同而且其所属Module的deviceType相交但其所属Module的DistroFilter不相交所以可以区分两个Ability校验通过。
//Ability1
{module: {name: module_sample,deviceType: [TV, tablet],metadata: [{name: distroFilter_configresource: $profile:distroFilter_config_sample1}],abilities: [{name: ability_sample}]}
}
//Ability1所属Module的distroFilter
{distroFilter: {apiVersion : {policy: include,value: [8,9]},screenShape: {policy: include,value: [rect]},screenWindow: {policy: include,value: [454*454, 466*466]},screenDensity: {policy: include,value: [ldpi, xldpi]},countryCode: {policy: include,value: [CN, HK]}}
}//Ability2
{module: {name: module_sample2,deviceType: [TV, tablet],metadata: [{name: distroFilter_configresource: $profile:distroFilter_config_sample2}],abilities: [{name: ability_sample}]}
}
//Ability2所属Module的distroFilter
{distroFilter: {apiVersion : {policy: include,value: [8,9]},screenShape: {policy: include,value: [rect]},screenWindow: {policy: include,value: [454*454, 466*466]},screenDensity: {policy: include,value: [ldpi, xldpi]},countryCode: {policy: include,value: [USA, UK]}}
}Entry校验逻辑
校验目的目标设备只有一个Entry类型的Module与之对应Feature类型的Module经过deviceType及distroFilter指明的目标设备都需要存在Entry类型的Module。
1.校验Feature类型的Module经过deviceType及distroFilter指明的目标设备都存在Entry类型的Module。
例如Bundle中存在一个Entry类型Module1其支持设备为tablet和wearable其分发规则为circle和rect形状的屏幕同时存在一个Feature类型的Module2通过分发规则可知其可以分发到rect形状的tablet和wearable设备上而rect形状的tablet和wearable设备上存在Entry类型的Module1校验通过。
//Entry类型Module1
{module: {name: module_sample1,type: entry,deviceType: [tablet, wearable],metadata: [{name: distroFilter_config,resource: $profile:distroFilter_config1}]}
}
//Module1的distroFilterdistroFilter_config1.json
{screenShape:{policy: include,value: [circle, rect]}
}
//Feature类型Module2
{module: {name: module_sample2,type: feature,deviceType: [tablet, wearable],metadata: [{name: distroFilter_config,resource: $profile:distroFilter_config2}]}
}
//Module2的distroFilterdistroFilter_config2.json
{screenShape:{policy: include,value: [rect]}
}2.校验目标设备只有一个Entry类型的Module与之对应。
a.校验Entry类型Module的deviceType。如果deviceType不相交校验通过。如果deviceType相交继续校验Entry类型Module的distroFilter。
例如同一个Bundle中存在两个Entry类型的Module分别为Module1和Module2两者的deviceType不相交可以有效区分两个Module校验通过。
//Entry类型Module1
{module: {name: module_sample1,type: entry,deviceType: [tablet]}
}
//Entry类型Module2
{module: {name: module_sample2,type: entry,deviceType: [wearable]}
}b.校验Entry类型Module的distroFilter。如果distroFilter不相交校验通过。如果distroFilter相交校验失败打包失败。
例如同一个Bundle中存在两个Entry类型的Module分别为Module1和Module2两者的deviceType相交但两者的distroFilter不相交可以有效区分两个Module校验通过。
//Entry类型Module1
{module: {name: module_sample1,type: entry,deviceType: [wearable],metadata: [{name:distroFilter_configresource: $profile:distroFilter_sample1}]}
}
//Module1的distroFilterdistroFilter_sample1.json
{distroFilter: {screenShape:{policy: include,value: [rect]}}
}
//Entry类型Module1
{module: {name: module_sample2,type: entry,deviceType: [wearable],metadata: [{name:distroFilter_configresource: $profile:distroFilter_sample2}]}
}
//Module2的distroFilterdistroFilter_sample2.json
{distroFilter: {screenShape:{policy: include,value: [circle]}}
}那么要想成为一名鸿蒙高级开发以上知识点是必须要掌握的除此之外还需要掌握一些鸿蒙应用开发相关的一些技术需要我们共同去探索。
为了能够让大家跟上互联网时代的技术迭代在这里我特邀了几位行业大佬整理出一份最新版的鸿蒙学习提升资料有需要的小伙伴自行领取限时开源先到先得~~~~
领取以下高清学习路线原图请点击→《鸿蒙全套学习指南》纯血鸿蒙HarmonyOS基础技能学习路线图 领取以上完整高清学习路线图请点击→《鸿蒙基础入门学习指南》小编自己整理的部分学习资料包含有高清视频、开发文档、电子书籍等 以上分享的学习路线都适合哪些人跟着学习
-应届生/计算机专业 通过学习鸿蒙新兴技术入行互联网未来高起点就业。-0基础转行 提前布局新方向抓住风口自我提升获得更多就业机会。-技术提升/进阶跳槽 发展瓶颈期提升职场竞争力快速掌握鸿蒙技术享受蓝海红利。 最后
鸿蒙开发学习是一个系统化的过程从基础知识的学习到实战技能的锤炼再到对前沿技术的探索每一环节都至关重要。希望这份教程资料能帮助您快速入门并在鸿蒙开发之路上步步攀升成就一番事业。让我们一起乘风破浪拥抱鸿蒙生态的广阔未来
如果你觉得这篇内容对你有帮助我想麻烦大家动动小手给我点赞转发有你们的 『点赞和评论』才是我创造的动力。
关注我同时可以期待后续文章ing不定期分享原创知识。
想要获取更多完整鸿蒙最新VIP学习资料请点击→《鸿蒙 (Harmony OS)开发学习手册》