为有牺牲多壮志,敢教日月换新天。

HarmonyOS:应用程序框架基础

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen
➤原文地址:https://www.cnblogs.com/strengthen/p/18472993
➤如果链接不是为敢技术的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

一、应用程序框架概述
应用程序框架是连接开发者与用户的桥梁,对开发者而言,使用应用程序框架所提供的能力,如应用进程创建与销毁, 应用组件运行入口,声明周期调度,组件间交互等是实现用户功能等关键。

提到应用程序框架,不得不将应用模型一并进行介绍。
1、应用程序框架:是一种编程框架,可以用来简化应用程序的开发过程,提高代码的可重用性和可维护性。可以帮助开发人员更快速、更高效地开发应用程序。
2、应用模型:是应用程序框架行为的一种抽象描述,应用模型是描述这些行为的一个统一的语言,是一个顶层设计的概念,来描述应用程序应该满足哪些行为规范。
3、应用程序框架和应用模型之间的关系:应用模型是抽象,而应用程序框架是具体的实现方式。

二、Stage应用模型设计思想
Stage应用模型是HarmonyOS目前主推且会长期演进的应用模型,其设计有以下出发点:
1、为复杂应用设计而生。
(1)、Stage模型中多个应用组件,是共享同一个ArkTS引擎实例,应用组件之间可以方便地共享对象和状态,这样同时可以减少复杂应用运行时对内存的占用。
(2)、另外在开发时,采用面向对象的开发方式,可以使得复杂应用代码可读性高,易维护性好,可拓展性强。
2、原生支持应用组件级的跨端迁移和多端协同。
(1)、Stage模型提供了应用组件间通信的RPC调用能力,因此在不同设备的应用组件,可以便携的迁移数据和状态。
(2)、并且由于UI与UIAbility之间分离,这样便可以利用ArkUI的声明式特点,通过组件中数据和状态的变化,更新用户界面。从而实现跨端迁移和多端协同。
3、支持多设备和多窗口形态。
(1)、Stage模型在架构层面实现了应用组件管理和窗口管理的解耦,为系统提供了对应用组件进行裁剪以及扩展窗口形态的能力,
(2)、同时Stage模型为应用组件设计了一套生命周期,来适应不同的设备,提供统一的生命周期管理。这样可以减小应用组件在不同设备上的行为差异。
4、平衡应用能力和系统管控的成本。
(1)、Stage模型拥有后台应用程序的治理机制,应用程序不能随意地驻留在后台,同时应用后台行为会收到管理,防止一些恶意的应用行为。
(2)、Stage模型还为卡片服务、输入法服务等提供了特定的应用组件,以满足更多的开发场景,

三、工程目录结构介绍
在基于Stage模型的应用项目中,大致有三种文件类型:资源文件、配置文件、ArkTS文件。

ArkTS源码文件目录:像一些页面文件、Ability类、常量类等,主要存放在模块的ets目录下。

entryability目录:放置的是当前模块中定义的Ability组件,例如:UIAbility组件,就是一种包含UI的应用组件,可以用来与用户交互。

EntryAbility文件是entry模块的入口UIAbility组件。

在 EntryAbility.ets文件中,提供了一些生命周期回调供使用,例如:可以通过回调函数onWindowStageCreate,指定当前UIAbility组件需要加载的页面。

pages目录:主要放置当前模块的页面文件。

例如:该目录下的Index文件,在 EntryAbility.ets文件中设置模块的入口文件。

每个项目的工程目录下必须包含应用配置文件,这些配置文件会向编译工具、操作系统和应用市场提供应用的基本信息,

在基于Stage模型的开发的工程下,都存在一个app.json5的应用级配置文件。

app.json5配置文件提供了应用的配置信息,如:应用的唯一标识、版本好、应用图标、应用名称等信息。

每个模块都有一个module.json5模块级配置文件。

module.json5文件包含模块的基础配置,例如:模块名称、模块类型以及当前模块可以运行在哪类设备上。另外还定义了当前模块的应用组件的配置信息,主要包含:UIAbility的名称、基本描述、入口代码路径等,并且这些配置信息只针对当前模块下的UIAbility生效。此外 ,还包括模块的路由表信息,主要定义了跳转页面的名称、页面所在模块名称、页面路径等路由配置信息。另外,如果程序运行时需要访问网络或者需要常驻后台的权限,则需要向系统申请权限信息,对应着requestPermissions字段。

依赖管理配置文件:oh-package.json5,其主要定义了名称、版本号、简介、作者以及代码中依赖的三方库等信息。

应用项目中的资源文件。在开发过程中,经常需要用到颜色、字体、间距、图片、多媒体等资源。

Stage模型中根据资源等路径,可以将其分为应用级资源和模块级资源。

应用级资源:可以被项目中所有的模块引用,其放置在AppScope下的resources目录下。

模块级资源:放置在各模块下的resources目录下。

element目录:主要放置颜色、数字、字符串等一些元素资源。

media目录:主要放置图片、音频、视频文件等媒体资源。

profile目录:主要放置一些自定义的配置文件。如页面配置、卡片配置等。DevEco Studio默认会在profile目录下,生成一个main_pages配置文件。该文件定义了模块页面的路由集合。

中英文目录:包含了模块所用到的一些中英文资源。应用运行时会根据设备的语言环境,进行优先匹配资源。

rawfile目录:可以存放各类资源文件。但是这些资源文件会被直接打包进应用,不会经过编译过程。在开发过程中,可以根据需要来选择使用哪一类资源存放。

 

posted @ 2024-10-17 20:22  为敢技术  阅读(5)  评论(0编辑  收藏  举报