2024年最新『HarmonyOS』探索HarmonyOS应用(1),HarmonyOS鸿蒙开发环境页面设计

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

从代码可以看到,MyApplication继承自AbilityPackage,而AbilityPackage用来初始化每个HAP的基类

1.3库文件


库文件是应用依赖的第三方代码(例如so、jar、bin、har等二进制文件),存放在libs目录,如下图所示

image-20220706234316037

1.4pack.info


描述应用软件包中每个HAP的属性,由IDE编译生成,应用市场根据该文件进行拆包和HAP的分类存储。HAP的具体属性包括:

  • delivery-with-install: 表示该HAP是否支持随应用安装。“true”表示支持随应用安装;“false”表示不支持随应用安装。

  • name:HAP文件名。

  • module-type:模块类型,entry或feature。

  • device-type:表示支持该HAP运行的设备类型。

image-20220706234722581

2.应用配置文件

=======================================================================

HarmonyOS应用的每个HAP的根目录下都存在一个“config.json”配置文件,如下图所示:

config.json文件内容主要涵盖以下三个方面:

  • 应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。

  • 应用在具体设备上的配置信息,包含应用的备份恢复、网络安全等能力。

  • HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型以及Ability提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。

image-20220706235150893

2.1配置文件组成


JSON

1.JSON是什么?

  • JSON(JavaScript Object Notation, JS对象表示)是一种轻量级的数据交换格式

  • JSON类似于XML,但比XML更小、更快、更易解析

  • JSON使用Javascript语法来描述数据对象,但是JSON仍然独立于语言和平台:JSON解析器和JSON库支持许多不同的编程语言,目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

  • JSON具有自我描述性,更易理解

2.JSON语法

JSON语法是JavaScript对象表示语法的子集:数据在名称/值对、数据由逗号分隔、大括号 {} 保存对象、中括号[]保存数组,数组可以包含多个对象。具体来说就是:

  • JSON数据的书写格式是:key : value,比如:"name" : "starry陆离"

  • JSON名都是字符串,用""包围;而JSON值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true 或 false)、数组(在中括号中)、对象(在大括号中)、null。

  • JSON数字可以是整型或者浮点型,比如:"age":20

  • JSON对象在大括号{}中书写,比如:{"name":"starry陆离", "gender":"男", age:20 }

  • JSON数组在中括号[]中书写,数组可包含多个对象,比如:"students":[ {"name":"zhangsan"}, {"name":"lisi"}]

  • JSON 布尔值可以是true或者false,比如:"married":true

  • JSON 可以设置null值,比如:{ "runoob":null }

2.2配置文件元素


DevEco Studio提供了两种编辑“config.json”文件的方式。在“config.json”的编辑窗口中,可在右上角切换代码编辑视图可视化编辑视图

配置文件的内部结构

​ config.json由app、deviceConfig和module三个部分组成,缺一不可。具体如下所示:

  • app:表示应用的全局配置信息。同一个应用的不同HAP包的app配置必须保持一致。数据类型为对象,不可缺省。

  • deviceConfig:表示应用在具体设备上的配置信息。数据类型为对象,不可缺省。

  • module:表示HAP包的配置信息。该标签下的配置只对当前HAP包生效。数据类型对象,不可缺省。

image-20220707000137877

2.2.1app对象的内部结构

​ app对象包含应用的全局配置信息,内部结构说明如下:

  • bundleName:表示应用的包名,用于标识应用的唯一性。包名是由字母、数字、下划线(_)和点号(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节。包名通常采用反域名形式表示(例如,“com.example.myapplication”)。建议第一级为域名后缀“com”,第二级为厂商/个人名,第三级为应用名,也可以采用多级。

  • vendor:表示对应用开发厂商的描述。字符串长度不超过255字节。该值可缺省,缺省值为空。

  • version:表示应用的版本信息

    • name:表示应用的版本号,用于向应用的终端用户呈现。

    • code:表示应用的版本号,仅用于HarmonyOS管理该应用,不对应用的终端用户呈现。

    • minCompatibleVersionCode:表示应用可兼容的最低版本号,用于在跨设备场景下,判断其他设备上该应用的版本是否兼容。 格式与version.code字段的格式要求相同。

  • smartWindowSize:该标签用于在悬浮窗场景下表示应用的模拟窗口的尺寸。配置格式为“正整数*正整数”,单位为vp。正整数 取值范围为[200,2000]。

  • smartWindowDeviceType:表示应用可在哪些设备上使用模拟窗口打开。取值为:智能手机phone、平板tablet、智慧屏tv

  • targetBundleList:表示允许以免安装方式拉起的其他HarmonyOS应用,列表取值为每个HarmonyOS应用的bundleName,多个 bundleName之间用英文“,”区分,最多配置5个bundleName。如果被拉起的应用不支持免安装方式,则拉起失败。

2.2.2deviceConfig对象的内部结构

​ deviceConfig包含在具体设备上的应用配置信息,可以包含default、phone、tablet、tv、car、wearable、liteWearable和smartVision等属性。default标签内的配置是适用于所有设备通用,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。

  • default:表示所有设备通用的应用配置信息,不可缺省。

  • phone:表示手机类设备的应用信息配置。

  • tablet:表示平板的应用配置信息。

  • tv:表示智慧屏特有的应用配置信息。

  • car:表示车机特有的应用配置信息。

  • wearable:表示智能穿戴特有的应用配置信息。

  • liteWearable:表示轻量级智能穿戴特有的应用配置信息。

  • smartVision:表示智能摄像头特有的应用配置信息。

2.2.3module对象的内部结构

​ module对象包含HAP包的配置信息,内部结构说明如下:

  • mainAbility:表示HAP包的入口ability名称。该标签的值应配置为“module > abilities”中存在的Page类型ability的名称。该标签仅适用于手机、平板、智慧屏、车机、智能穿戴。

  • package:表示HAP的包结构名称,在应用内应保证唯一性。采用反向域名格式(建议与HAP的工程目录保持一致)。字符串长度不超过127字节。该标签仅适用于手机、平板、智慧屏、车机、智能穿戴。

  • name:表示HAP的类名。采用反向域名方式表示,前缀需要与同级的package标签指定的包名一致,也可采用“.”开头的命名方式。字符串长度不超过255字节。该标签仅适用于手机、平板、智慧屏、车机、智能穿戴。

  • distroFilter:表示应用的分发规则。该标签用于定义HAP包对应的细分设备规格的分发策略,以便在应用市场进行云端分发应用包时做精准匹配。该标签可配置的分发策略维度包括API Version、屏幕形状、屏幕分辨率。在进行分发时,通过deviceType与这三个属性的匹配关系,唯一确定一个用于分发到对应设备的HAP。

3.资源文件

=====================================================================

resources目录包括两大类目录,一类为base目录限定词目录,另一类为rawfile目录

base目录与限定词目录

  1. 组织形式

  2. 按照两级目录形式来组织,目录命名必须符合规范,以便根据设备状态去匹配相应目录下的资源文件。

  3. 一级子目录为base目录和限定词目录

    • base目录(resources.base)是默认存在的,当应用的resources资源目录中没有与设备状态匹配的限定词目录时,会自动引用该目录中的资源文件。

    • 限定词目录需要开发者自行创建。目录名称由一个或多个表征应用场景或设备特征的限定词组合而成。上图中的resources.en、resources.zh、resources.en_GB-vertical-car-mdpi都是限定词目录。

  4. 二级子目录为资源目录,用于存放字符串、颜色、布尔值等基础元素以及媒体、动画、布局等资源文件。

    • base>element:包括字符串、整型数、颜色、样式等资源的json文件。每个资源均由json格式进行定义。

    • base>graphic:xml类型的可绘制资源,如SVG(Scalable Vector Graphics)可缩放矢量图形文件、Shape基本的几何图形(如矩形、圆形、线等)等。

    • base>layoutxml格式的界面布局文件

    • base>media:多媒体文件,如图形、视频、音频等文件,支持的文件格式包括:.png、.gif、.mp3、.mp4等。

    • base>profile:用于存储任意格式的原始资源文件。区别在于rawfile不会根据设备的状态去匹配不同的资源,需要指定文件路径和文件名进行引用。

  5. 编译方式

  6. 目录中的资源文件会被编译成二进制文件,并赋予资源文件ID。

  7. 引用方式

    通过指定资源类型(type)和资源名称(name)来引用,

rawfile目录

  1. 组织形式

  2. 支持创建多层子目录,目录名称可以自定义,文件夹内可以自由放置各类资源文件。rawfile目录的文件不会根据设备状态去匹配不同的资源。

  3. 编译方式

  4. 目录中的资源文件会被直接打包进应用,不经过编译,也不会被赋予资源文件ID。

  5. 引用方式

    通过指定文件路径和文件名来引用。

资源类型(type)和资源名称(name)来引用,

rawfile目录

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ame)来引用,

rawfile目录

[外链图片转存中…(img-tVd08898-1715709999120)]
[外链图片转存中…(img-lNfisoTS-1715709999121)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值