HarmonyOS 应用开发之FA模型与Stage模型应用组件

应用配置文件概述(FA模型)

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

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

  • 应用的软件Bundle名称,应用的开发厂商,版本号等应用的基本配置信息,这些信息被要求设置在app这个字段下。

  • 应用的组件的基本信息,包括所有的Ability,设备类型,组件的类型以及当前组件所使用的语法类型。

  • 应用在具体设备上的配置信息,这些信息会影响应用在设备上的具体功能。

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

配置文件的内部结构

config.json由app、deviceConfig和module三个部分组成,缺一不可。

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

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": ".EntryAbility","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": "multiton"}],"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}}]}
}

FA模型与Stage模型应用组件互通综述

API 8及以前的接口基于FA模型提供;从API 9开始,主推Stage模型。FA模型与Stage模型是两套不同的应用模型,他们拥有各自的组件。FA模型提供三种应用组件,分别是PageAbility、ServiceAbility和DataAbility。Stage模型提供了两种应用组件,分别是UIAbility和ExtensionAbility。

由于FA模型与Stage模型不能在应用内混合开发(见下图),当一个设备(系统)内包含两种模型应用时(下图中"场景三"),可能涉及两种模型应用组件间的互通,本文将介绍相关互通指导。

图1 FA模型与Stage模型应用组件共存场景

FA模型与Stage模型应用组件互通场景及开发者关注点请参考下表。

表1 FA模型与Stage模型应用组件互通概览

互通场景开发者关注点
FA模型启动Stage模型UIAbility只需要把want中的bundleName和abilityName替换成Stage模型UIAbility的bundleName和abilityName。
FA模型绑定Stage模型ServiceExtensionAbility只需要把want中的bundleName和abilityName替换成Stage模型ServiceExtensionAbility的bundleName和abilityName。
FA模型访问Stage模型DataShareExtensionAbility无需做代码修改。但需了解DataShareHelper和DataAbilityHelper对外接口的兼容情况。
Stage模型启动FA模型PageAbility只需要把want中的bundleName和abilityName替换成FA模型PageAbility的bundleName和abilityName。
Stage模型绑定FA模型ServiceAbility只需要把want中的bundleName和abilityName替换成FA模型ServiceAbility的bundleName和abilityName。
Stage模型访问FA模型DataAbility不支持此种访问。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESD保护二极管ESD9B3.3ST5G 以更小的空间实现强大的保护 车规级TVS二极管更给力

什么是汽车级TVS二极管? TVS二极管是一种用于保护电子电路的电子元件。它主要用于电路中的过电压保护,防止电压过高而损坏其他部件。TVS二极管通常被称为“汽车级”是因为它们能够满足汽车电子系统的特殊要求。 在汽车电子系统中,由于车辆启…

SEO文章写作器,批量写作原创SEO收录文章

在当今数字化时代,搜索引擎优化(SEO)已经成为了网站获得流量和曝光度的关键手段之一。而在SEO领域中,内容的质量和原创性是至关重要的。为了应对不断增长的内容需求,越来越多的人开始转向AI写作生成器,这些…

ChatGPT如何升级为GPT-4在国内

通过 WildCard 可以把ChatGPT升级为GPT-4 地址 1: 2155 Bailey Hill Rd 城市: Eugene 邮编: 97405 州: Oregon ChatGPT Plus/Team 一键升级,几分钟即可自动升级到 ChatGPT Plus。 选择我的邮箱账号符合要求 复制这个页面的链接即可 复制上面的link 到请在…

基于springboot实现房产销售系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现房产销售系统演示 摘要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了房产销售系统…

CI/CD实战-jenkins结合ansible 7

配置主机环境 在jenkins上断开并删除docker1节点 重新给master添加构建任务 将server3,server4作为测试主机,停掉其上后面的docker 在server2(jenkins)主机上安装ansible 设置jenkins用户到目标主机的免密 给测试主机创建用户并…

MySQL8 搭建集群方案文档

MySQL8.0.21 InnoDB Cluster 从零搭建集群方案详细文档 InnoDB集群 本文档分享新版本MySQL 8.0.21 Innodb Cluster集群搭建过程 ~ MySQL InnoDB Cluster为MySQL提供了完整的高可用性解决方案。通过使用MySQL Shell附带的AdminAPI, 您可以轻松地配置和管理一组至少…

【力扣hot100】128-最长连续序列、283-移动零

128. 最长连续序列 import java.util.*;public class Test {public static void main(String[] args) {int[] nums {0, 3, 7, 2, 5, 8, 4, 6, 0, 1};int res new Solution().longestConsecutive(nums);System.out.println(res);} }class Solution {public int longestConsecu…

【Entity Framework】创建并配置模型

【Entity Framework】创建并配置模型 文章目录 【Entity Framework】创建并配置模型一、概述二、使用fluent API配置模型三、分组配置四、对实体类型使用EntityTypeConfigurationAttribute四、使用数据注释来配置模型五、实体类型5.1 在模型中包含类型5.2 从模型中排除类型5.3 …

Java基础学习: JDK动态代理

文章目录 一、什么是JDK动态代理二、JDK动态代理的特点三、JDK动态代理类如何使用四、JDK动态代理原理分析1、创建代理对象2、生成代理类 一、什么是JDK动态代理 JDK动态代理是Java提供的一种动态生成代理类和代理对象的技术。它主要利用Java的反射机制实现,在运行…

国产AI大模型推荐(一)

文心一言 主要功能: 各种类型的问答、各种文本创作、推理与数学计算、写代码、聊天交流、图片生成等。 链接:文心一言 讯飞星火 特点: 内容生成能力:我可以进行多风格多任务长文本生成,例如邮件、文案、公文、作文、对…

HTTPS传输过程

HTTPS:超文本传输安全协议 相较于HTTP明文传输,HTTPS增加了SSL/TLS进行了加密增加了通信的安全性。 SSL和TLS是两个不同的加密方法,SSL是TLS的前身,现在绝大多数浏览器使用的是TLS,所以着重了解以下TLS的概念即可。 首…

centos 7 安装磐维(PanWeiDB)数据库(单机)

前置环境准备 文件系统环境要求 文件系统环境所要求的扇区必须为512bytes,查看方法如下: [rootdevops-core-highapp3-b-32 ~]#df -h /apps/ [rootdevops-core-highapp3-b-32 ~]#ll /dev/mapper/vg--docker-lvapp [rootdevops-core-highapp3-b-32 ~]#f…

EfficientNetV2:谷歌又来了,最小的模型,最高的准确率,最快的训练速度 | ICML 2021

论文基于training-aware NAS和模型缩放得到EfficientNetV2系列,性能远优于目前的模型。另外,为了进一步提升训练速度,论文提出progressive learning训练方法,在训练过程中同时增加输入图片尺寸和正则化强度。从实验结果来看&#…

【docker】nexus 本地 maven配置

1、这篇文章中说明了如何搭建私服 【docker】搭建Nexus私服-CSDN博客文章浏览阅读2次。4、点击登陆(账号:admin 秘密:在容器内 /nexus-data/admin.password 文件中)注意我的端口号是 10002,注意你的端口号。7、设置maven-central…

MSTP环路避免实验(华为)

思科设备参考:MSTP环路避免实验(思科) 一,技术简介 MSTP(多生成树协议),MSTP解决了STP和RSTP没有考虑vlan的问题,STP和RSTP将所有的vlan共享为一个生成树实例,无法实现…

获取电商数据的几种方法分享

在数字化时代,电商数据已经成为企业决策的重要依据。无论是市场趋势的洞察、用户行为的分析,还是产品优化和营销策略的制定,都离不开电商数据的支持。本文将分享几种获取电商数据的有效方法,力求在干货满满的同时,也不…

Linux系统网络的实时性评估

目录 1.使用 cyclictest 测试系统实时性2.测试系统通信实时性2.1 PingPlotter2.2 使用 ping 测试通讯实时性 3. 使用 iperf 测试带宽4.网络性能测试 1.使用 cyclictest 测试系统实时性 安装cyclictest sudo apt-get update sudo apt-get install rt-testscyclictest -p 99 -i…

代码第三十六天:需要添加的硬币的最小数量

需要添加的硬币的最小数量 题目要求: 解题思路 为方便描述,把 0 也算作可以得到的数。 假设现在得到了区间 [ 0 , s − 1 ] [0,s−1] [0,s−1] 中的所有整数,如果此时遍历到整数 x c o i n s [ i ] xcoins[i] xcoins[i],那么…

win10 安装kubectl,配置config连接k8s集群

安装kubectl 按照官方文档安装:https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/ curl安装 (1)下载curl安装压缩包: curl for Windows (2)配置环境变量: 用户变量: Path变…

Python之Opencv教程(2):图像边缘检测

1、什么是边缘检测 OpenCV中的边缘检测是一种常见的图像处理技术,用于检测图像中物体边缘的位置。常用的边缘检测算法包括Sobel算子、Scharr算子、Laplacian算子和Canny边缘检测算法等。下面将介绍使用OpenCV实现这些边缘检测算法的方法。 2、边缘检测的作用 边缘…