华为鸿蒙开发——开发及引用静态共享包(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

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2