华为鸿蒙开发——开发及引用静态共享包(HAR)、应用配置文件

2023-12-08 05:36

本文主要是介绍华为鸿蒙开发——开发及引用静态共享包(HAR)、应用配置文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 简述
  • 一、创建HAR模块
  • 二、编译HAR模块
  • 三、应用配置文件(Stage模型)
  • 四、应用配置文件(FA模型)
    • 1、配置文件的内部结构
      • (1)app
      • (2)deviceConfig
      • (3)module
  • 五、资源分类与访问
    • 分类

简述

HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

一、创建HAR模块

步骤一:点击工程目录顶部,右击
在这里插入图片描述
步骤二:进入页面,点击static library,之后点击next
在这里插入图片描述
创建成功!
在这里插入图片描述

二、编译HAR模块

按照图中操作:
在这里插入图片描述
编译构建的HAR可在模块下的build目录下获取,包格式为*.har。
在这里插入图片描述

三、应用配置文件(Stage模型)

在基于Stage模型开发的应用项目代码下,都存在一个app.json5及一个或多个module.json5这两种配置文件。
app.json5主要包含以下内容:

  • 应用的全局配置信息,包含应用的包名、开发厂商、版本号等基本信息。
  • 特定设备类型的配置信息。

app.json5示例:

{"app": {"bundleName": "com.application.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name","description": "$string:description_application","minAPIVersion": 9,"targetAPIVersion": 9,"apiReleaseType": "Release","debug": false,"car": {"minAPIVersion": 8,}},
}
属性名称含义构成及是否可省
bundleName标识应用的Bundle名称,用于标识应用的唯一性。该标签不可缺省。字符串以字母、数字、下划线和符号“.”组成。
bundleType标识应用的Bundle类型,用于区分应用或者原子化服务。该标签可选值为app和atomicService :该标签可以缺省,缺省为app。
debug标识应用是否可调试,该标签由IDE编译构建时生成。布尔值 / 该标签可以缺省,缺省为false。
icon标识应用的图标,标签值为图标资源文件的索引。该标签不可缺省。
label标识应用的名称,标签值为字符串资源的索引。该标签不可缺省。
description标识应用的描述信息,标签值是字符串类型(最大255个字节)或对描述内容的字符串资源索引。该标签可缺省,缺省值为空。
vendor标识对应用开发厂商的描述。该标签的值是字符串类型(最大255个字节)。该标签可以缺省,缺省为空。
versionCode标识应用的版本号,该标签值为32位非负整数。此数字仅用于确定某个版本是否比另一个版本更新,数值越大表示版本越高。开发者可以将该值设置为任何正整数,但是必须确保应用的新版本都使用比旧版本更大的值。该标签不可缺省。
versionName标识应用版本号的文字描述,用于向用户展示。该标签仅由数字和点构成,推荐采用“A.B.C.D”四段式的形式。四段式推荐的含义如下所示。 第一段:主版本号/Major,范围0-99,重大修改的版本,如实现新的大功能或重大变化。 第二段:次版本号/Minor,范围0-99,表示实现较突出的特点,如新功能添加或大问题修复。 第三段:特性版本号/Feature,范围0-99,标识规划的新版本特性。 第四段:修订版本号/Patch,范围0-999,表示维护版本,修复bug。标签最大字节长度为127。该标签不可缺省。
minAPIVersion标识应用运行需要的SDK的API最小版本。由build-profile.json5中的compatibleSdkVersion生成。
targetAPIVersion标识应用运行需要的API目标版本。由build-profile.json5中的compileSdkVersion生成。
apiReleaseType标识应用运行需要的API目标版本的类型,采用字符串类型表示。取值为“CanaryN”、“BetaN”或者“Release”,其中,N代表大于零的整数。Canary:受限发布的版本。Beta:公开发布的Beta版本。Release:公开发布的正式版本。该字段由DevEco Studio读取当前使用的SDK的Stage来生成。该标签可缺省,由IDE生成并覆盖。
multiProjects标识当前工程是否支持多个工程的联合开发。布尔值
car标识对car设备做的特殊配置,可以配置的属性字段有上文提到的:minAPIVersion、distributedNotificationEnabled。如果使用该属性对car设备做了特殊配置,则应用在car设备中会采用此处配置的属性值,并忽略在app.json5公共区域配置的属性值该标签可缺省,缺省时car设备使用app.json5公共区域配置的属性值。

module.json5主要包含以下内容:

  • Module的基本配置信息,例如Module名称、类型、描述、支持的设备类型等基本信息。
  • 应用组件信息,包含UIAbility组件和ExtensionAbility组件的描述信息。
  • 应用运行过程中所需的权限信息。

module.json5实例:
查表:
module表格

四、应用配置文件(FA模型)

每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向HarmonyOS的编译工具、HarmonyOS操作系统和应用市场提供描述应用的基本信息

应用配置文件需申明以下内容:

  • 应用的软件包名称,应用的开发厂商,版本号等应用的基本配置信息,这些信息被要求设置在app这个字段下。
  • 应用的组件的基本信息,包括所有的Ability,设备类型,组件的类型以及当前组件所使用的语法类型。
  • 应用在具体设备上的配置信息,这些信息会影响应用在设备上的具体功能。

在FA模型的应用开发过程中,需要在config.json配置文件中对应用的包结构进行声明。

1、配置文件的内部结构

config.jsonappdeviceConfigmodule三个部分组成,缺一不可。

属性名称含义是否可缺省
app标识应用的全局配置信息。同一个应用的不同HAP的app配置必须保持一致不可缺省
deviceConfig标识应用在具体设备上的配置信息不可缺省
module标识HAP的配置信息。该标签下的配置只对当前HAP生效不可缺省

(1)app

app对象内部结构

(2)deviceConfig

deviceConfig对象内部结构

(3)module

module对象内部结构

config.json实例:

{"app": {"vendor": "example","bundleName": "com.example.demo","version": {"code": 1000000,"name": "1.0.0"}},"deviceConfig": {},"module": {"mainAbility": ".MainAbility_entry","deviceType": ["tablet"],"commonEvents": [{"name": ".MainAbility","permission": "ohos.permission.GET_BUNDLE_INFO","data": ["com.example.demo","100"],"events": ["install","update"]}],"abilities": [{"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}],"orientation": "unspecified","visible": true,"srcPath": "MainAbility_entry","name": ".MainAbility_entry","srcLanguage": "ets","icon": "$media:icon",// $string:MainAbility_entry_desc为资源索引"description": "$string:MainAbility_entry_desc","formsEnabled": false,// $string:MainAbility_entry_label为资源索引"label": "$string:MainAbility_entry_label","type": "page","launchType": "standard"}],"distro": {"moduleType": "entry","installationFree": false,"deliveryWithInstall": true,"moduleName": "myapplication"},"package": "com.example.myapplication","srcPath": "","name": ".myapplication","js": [{"mode": {"syntax": "ets","type": "pageAbility"},"pages": ["pages/index"],"name": ".MainAbility_entry","window": {"designWidth": 720,"autoDesignWidth": false}}]}
}

五、资源分类与访问

应用开发中使用的各类资源文件,需要放入特定子目录中存储管理。资源目录的示例如下所示,base目录、限定词目录、rawfile目录称为资源目录,element、media、profile称为资源组目录。
说明
stage模型多工程情况下,共有的资源文件放到AppScope下的resources目录。

分类

  • 应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表现。
  • 系统资源:开发者直接使用系统预置的资源定义(即分层参数,同一资源ID在设备类型、深浅色等不同配置下有不同的取值)。

这篇关于华为鸿蒙开发——开发及引用静态共享包(HAR)、应用配置文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/468694

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使