赞
踩
应用厂商会根据不同的部署环境,不同的目标人群,不同的运行环境等,将同一个应用定制为不同的版本,如国内版、国际版、普通版、VIP版、免费版、付费版等。针对以上场景,DevEco Studio支持通过少量的代码差异化配置处理,在编译构建过程中实现一个应用构建出不同的目标产物版本,从而实现源代码、资源文件等的高效复用。
本案例展示如何将工程打包成不同版本,并单独配置资源文件,实现定制多目标构建产物功能。
在了解HarmonyOS应用的多目标构建产物如何定制前,先了解product和target的概念:
每一个Entry/Feature模块均支持定制不同的target,通过在模块中的build-profile.json5文件中实现差异化定制,当前支持设备类型(deviceType)、源码集(source)、资源(resource)、C++依赖的.so(buildOption)的定制。
每一个target对应一个定制的HAP,因此,在定制HAP多目标构建产物前,应提前规划好需要定制的target名称。例如,以本工程为例,定义一个默认版和适配tablet版,源码参考:build_profile.json5。示例如下:
- {
- ...
- "targets": [
- {
- // 默认版target名称。
- "name": "default",
- "runtimeOS": "HarmonyOS",
- },
- {
- // tablet版target名称。
- "name": "tablet_target",
- "runtimeOS": "HarmonyOS",
- }
- ]
- }
每一个target均可以指定支持的设备类型deviceType,也可以不定义。如果不定义,则该target默认支持config.json或module.json5中定义的设备类型。
例如,在上述定义的2个target中,分别定义default默认支持所有设备类型,tablet版本只支持tablet设备。
- {
- ...
- "targets": [
- {
- // 未定义deviceType,默认支持config.json或module.json5中定义的设备类型。
- "name": "default",
- "runtimeOS": "HarmonyOS"
- },
- {
- "name": "tablet_target",
- "runtimeOS": "HarmonyOS",
- "config": {
- "deviceType": [
- // 定义支持的设备类型为tablet,支持的设备类型必须在config.json或module.json5中已经定义。
- "tablet"
- ]
- }
- }
- ]
- }
在module.json5中定义设备类型的示例如下:
- {
- "module": {
- ...
- "deviceTypes": [
- "default",
- "tablet"
- ],
- }
- }
对于source源码集的定制,Stage模型支持对pages源码目录的page页面进行定制。示例如下:
- {
- "targets": [
- {
- // 会员版target名称
- "name": "tablet_target",
- "runtimeOS": "HarmonyOS",
- "source": {
- // 定义stage模型中tablet版本target的pages源码文件,可根据需求选择区别于默认版本的源码文件。
- "pages": [
- "pages/TabletEntryView"
- ]
- }
- }
- ]
- }
每个target使用的资源文件可能存在差异,在开发过程中,开发者可以将每个target所使用的资源存放在不同的资源目录下。
本工程为ArkTS工程,仅支持对main目录下的资源文件目录(resource)进行定制。示例如下:
- {
- "targets": [
- {
- "name": "default",
- "runtimeOS": "HarmonyOS",
- },
- {
- // 会员版target名称
- "name": "tablet_target",
- "runtimeOS": "HarmonyOS",
- "resource": {
- // 定义tablet版本使用的资源文件目录,该功能在API 9及以上版本的工程中生效,可根据需求选择区别于默认版本的资源文件。
- "directories": [
- "./src/main/resources"
- ]
- }
- }
- ]
- }
APP用于应用/服务上架发布,针对不同的应用场景,可以定制不同的product,每个product中支持对bundleName、签名信息以及包含的target进行定制。
每一个product对应一个定制的APP包,因此,在定制APP多目标构建产物前,应提前规划好需要定制的product名称。例如定义tablet product包。 源码参考:build-profile.json5。示例如下:
- {
- "app": {
- "products": [
- {
- "name": "default",
- "signingConfig": "default",
- "compileSdkVersion": '4.1.0(11)',
- "compatibleSdkVersion": '4.1.0(11)',
- "runtimeOS": "HarmonyOS"
- },
- {
- "name": "tablet_product",
- // 定义tablet版本的包名
- "bundleName": "com.north.commonappdevelopmenttablet",
- // 定义tablet版本的签名文件信息
- "signingConfig": "tablet",
- "compileSdkVersion": '4.1.0(11)',
- "compatibleSdkVersion": '4.1.0(11)',
- "runtimeOS": "HarmonyOS"
- }
- ],
- },
- }
com.north.commonappdevelopmenttablet
,针对每个定义的product,均可以定制不同的bundleName。如果product未定义bundleName,则采用工程默认的bundleName。- {
- "app": {
- "bundleName": "com.north.commonappdevelopmenttablet",
- ...
- }
- }
针对每个定义的product,均可以定制不同的signingConfig签名文件,如果product未定义signingConfig,则构建生成未签名的APP包。
首先需要在签名配置界面或工程的build-profile.json5文件中配置签名信息:
开发者可以选择需要将定义的target分别打包到哪一个product中,每个product可以指定一个或多个target,同时每个target也可以打包到不同的product中, 但是同一个module的不同target不能打包到同一个product中。
本工程前面定义了default和tablet两个版本的target,此时需要将不同的target打包到不同的product中,源码参考:build-profile.json5。示例如下:
- {
- "modules": [
- {
- "name": "entry",
- "srcPath": "./product/entry",
- "targets": [
- {
- // 将default target 打包到default版本的APP中
- "name": "default",
- "applyToProducts": [
- "default"
- ]
- },
- {
- // 将tablet target 打包到tablet_product版本的APP中
- "name": "tablet_target",
- // 设置该target适用于tablet_product版本的APP
- "applyToProducts": [
- "tablet_product"
- ]
- }
- ]
- }
- ]
- }
每个target对应一个HAP,每个product对应一个APP包,在编译构建时,如果存在多product或多target时,可以指定编译具体的包。方法如下:
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员,可以直接领取这份资料
获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
HarmonOS基础技能
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
OpenHarmony北向、南向开发环境搭建
获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。