0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发Ability Kit程序框架服务:FA模型应用配置文件

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-24 14:49 次阅读

FA模型应用配置文件

应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行解决分别提供给编译工具、应用市场和操作系统使用。

在基于FA模型开发的应用项目代码下,都存在一个config.json配置文件,常用配置项请参见[应用/组件级配置]。

应用/组件级配置

开发者在开发应用时,需要配置应用的一些标签,例如应用的Bundle名称、图标等标识特征的属性。这一章节描述了开发者在开发应用时需要配置的一些关键标签。 开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

应用包名配置

应用包名需在config.json文件中app标签下配置bundleName字段,该字段用于指定应用的包名,需保证唯一性。包名是由字母、数字、下划线(_)和点号(.)组成的字符串,必须以字母开头。支持的字符串长度为7~127字节。包名通常采用反向域名形式表示(例如,"com.example.myapplication")。建议第一级为域名后缀"com",第二级为厂商/个人名,也可以采用多级。应用名称配置可以参考[app标签说明]。

图标和标签配置

图标和标签通常一起配置,可以分为应用图标、应用标签和入口图标、入口标签。

应用图标和标签通常用于标识整个应用,可以在标识应用的界面使用该类型图标和标签。比如:

  • 设置应用中,需要展示应用列表时
  • 在隐私管理中,需要展示应用申请的权限时
  • 在状态栏显示通知消息时

入口图标和标签是应用安装完成后可以在设备桌面上显示出来的。入口图标是以Page类型的Ability为粒度,支持同一个应用存在多个入口图标和入口标签,点击后进入对应的Ability界面。比如:

  • 桌面上需要显示图标时
  • 最近任务列表中显示时

应用图标和标签配置

FA模型不支持直接配置应用图标和标签,会以符合规则的PageAbility的图标和标签作为应用图标和标签。存在多个时,则取位置靠前的Ability的icon和label作为应用的icon和label。

入口图标和标签配置

入口图标和标签配置方法

FA模型的入口图标和标签是Page类型的Ability配置的icon和label。

PageAbility的图标和标签配置请参见[PageAbility组件配置]。需在config.json文件的abilities标签下做如下配置:

  • 配置icon字段,标签值为资源文件的索引。图标需要在配置IDE的资源文件中,路径为/resource/base/media。取值示例:$media:ability_icon。
  • 配置label字段,标签值为资源文件的索引,标识Ability对用户显示的名称。取值可以是Ability名称,也可以是对该名称的资源索引,以支持多语言。

如果在该PageAbility的skills属性中,actions的取值包含 "action.system.home",entities取值中包含"entity.system.home",则该Ability的icon和label将同时作为应用的icon和label。如果存在多个符合条件的Ability,则取位置靠前的Ability的icon和label作为应用的icon和label。图标和标签配置可以参考[abilities标签说明]。

{
  ...
  "module": {
    ...
    "abilities": [
      {
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ],
        "orientation": "unspecified",
        "formsEnabled": false,
        "name": ".MainAbility",
        "srcLanguage": "ets",
        "srcPath": "MainAbility",
        "icon": "$media:icon",
        "description": "$string:MainAbility_desc",
        "label": "$string:MainAbility_label",
        "type": "page",
        "visible": true,
        "launchType": "singleton"
      },
      ...
    ]
    ...
  }
}

入口图标和标签管控规则

系统对无图标应用实施严格管控,防止一些恶意应用故意配置无入口图标,导致用户找不到软件所在的位置,无法操作卸载应用,在一定程度上保证用户终端设备的安全。

如果应用确需隐藏入口图标,需要配置AllowAppDesktopIconHide应用特权。详细的入口图标及入口标签的显示规则如下。

  • HAP中包含PageAbility
    • 在config.json配置文件的abilities标签中设置了入口图标
      • 该应用没有隐藏图标的特权
        • 系统将使用该PageAbility配置的icon作为入口图标,并显示在桌面上。用户点击该图标,页面跳转到该PageAbility首页。
        • 系统将使用该PageAbility配置的label作为入口标签,并显示在桌面上,如果没有配置label,系统将使用应用的bundleName作为入口标签,并显示在桌面上。
      • 该应用具有隐藏图标的特权
        • 桌面应用查询时不返回应用信息,不会在桌面上显示对应的入口图标和标签。
    • 在config.json配置文件的abilities标签中未设置入口图标
      • 该应用没有隐藏图标的特权
        • 系统将使用系统资源中的icon作为入口图标,并显示在桌面上。用户点击该图标,页面跳转到应用管理中对应的应用详情页面。
        • 系统将使用该PageAbility配置的label作为入口标签,并显示在桌面上,如果没有配置label,系统将使用应用的bundleName作为入口标签,并显示在桌面上。
      • 该应用具有隐藏图标的特权
        • 桌面应用查询时不返回应用信息,不会在桌面上显示对应的入口图标和标签。
  • HAP中不包含PageAbility
    • 该应用没有隐藏图标的特权
      • 系统将使用系统资源中的icon作为入口图标,并显示在桌面上。用户点击该图标,页面跳转到应用管理中对应的应用详情页面。
      • 系统将使用应用的bundleName作为入口标签,并显示在桌面上。
    • 该应用具有隐藏图标的特权
      • 桌面应用查询时不返回应用信息,不会在桌面上显示对应的入口图标和标签。

应用版本声明配置

应用版本声明配置需在config.json中的app标签下配置version字段,以说明应用当前的版本号和版本名称以及应用能够兼容的最低历史版本号。

Module支持的设备类型配置

Module支持的设备类型需要在config.json文件中配置deviceType字段,如果deviceType标签中添加了某种设备,则表明当前的module支持在该设备上运行。

组件权限申请配置

组件权限申请配置需在config.json中的module标签下配置reqPermissions字段。来声明需要申请权限的名称,申请权限的原因以及权限使用的场景。

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

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

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

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

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

配置文件的内部结构

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

属性名称含义数据类型是否可缺省
[app]标识应用的全局配置信息。同一个应用的不同HAP的app配置必须保持一致。对象不可缺省。
[deviceConfig]标识应用在具体设备上的配置信息。对象不可缺省。
[module]标识HAP的配置信息。该标签下的配置只对当前HAP生效。对象不可缺省。HarmonyOSOpenHarmony鸿蒙文档籽料:mau123789是v直接拿

搜狗高速浏览器截图20240326151547.png

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
        }
      }
    ]
  }
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 框架
    +关注

    关注

    0

    文章

    403

    浏览量

    17477
  • 模型
    +关注

    关注

    1

    文章

    3229

    浏览量

    48813
  • 鸿蒙
    +关注

    关注

    57

    文章

    2345

    浏览量

    42822
收藏 人收藏

    评论

    相关推荐

    OpenHarmony开发Ability架构

    FA模型综述整体架构OpenHarmony用户程序开发本质上就是开发Ability。OpenH
    发表于 05-12 15:12

    鸿蒙服务万能卡片开发-stage模型fa模型的卡片区别

    。 module.json5:Stage模型模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/
    发表于 05-22 14:20

    鸿蒙应用模型:【Ability Kit】简介

    Ability Kit程序框架服务)提供了应用程序开发
    的头像 发表于 05-29 14:41 638次阅读
    <b class='flag-5'>鸿蒙</b>应用<b class='flag-5'>模型</b>:【<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>】简介

    鸿蒙开发:【Stage模型应用配置文件

    应用配置文件中包含应用配置信息、应用组件信息、权限信息、开发者自定义信息等,这些信息在编译构建、分发和运行解决分别提供给编译工具、应用市场和操作系统使用。
    的头像 发表于 06-15 09:15 1666次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>:【Stage<b class='flag-5'>模型</b>应用<b class='flag-5'>配置文件</b>】

    鸿蒙开发Ability Kit程序框架服务FA模型与Stage模型应用组件互通综述

    FA模型与Stage模型是两套不同的应用模型,他们拥有各自的组件。FA模型提供三种应用组件,分别
    的头像 发表于 06-24 16:43 517次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>与Stage<b class='flag-5'>模型</b>应用组件互通综述

    鸿蒙开发Ability Kit程序框架服务FA模型启动Stage模型UIAbility

    本文介绍FA模型的三种应用组件如何启动Stage模型的UIAbility组件。
    的头像 发表于 06-25 16:00 361次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>启动Stage<b class='flag-5'>模型</b>UIAbility

    鸿蒙开发Ability Kit程序框架服务FA模型绑定Stage模型ServiceExtensionAbility

    本文介绍FA模型的三种应用组件如何绑定Stage模型的ServiceExtensionAbility组件。
    的头像 发表于 06-25 10:43 290次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>绑定Stage<b class='flag-5'>模型</b>ServiceExtensionAbility

    鸿蒙开发Ability Kit程序框架服务FA模型访问Stage模型DataShareExtensionAbility

    无论FA模型还是Stage模型,数据读写功能都包含客户端和服务端两部分。
    的头像 发表于 06-25 14:30 385次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>访问Stage<b class='flag-5'>模型</b>DataShareExtensionAbility

    鸿蒙开发Ability Kit程序框架服务:Stage模型启动FA模型PageAbility

    本小节介绍Stage模型的两种应用组件如何启动FA模型的PageAbility组件。
    的头像 发表于 06-26 09:50 361次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:Stage<b class='flag-5'>模型</b>启动<b class='flag-5'>FA</b><b class='flag-5'>模型</b>PageAbility

    鸿蒙开发Ability Kit程序框架服务:Stage模型绑定FA模型ServiceAbility

    本小节介绍Stage模型的两种应用组件如何绑定FA模型ServiceAbility组件。
    的头像 发表于 06-25 21:47 301次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:Stage<b class='flag-5'>模型</b>绑定<b class='flag-5'>FA</b><b class='flag-5'>模型</b>ServiceAbility

    鸿蒙开发Ability Kit程序框架服务FA模型切换Stage模型概述

    本文介绍如何将一个FA模型开发的声明式范式应用切换到Stage模型
    的头像 发表于 06-26 14:40 336次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换Stage<b class='flag-5'>模型</b>概述

    鸿蒙开发Ability Kit程序框架服务FA模型切换Stage模型指导 配置文件差异

    FA模型应用在[config.json文件]中描述应用的基本信息,一个应用工程中可以创建多个Module,每个Module中都有一份config.json文件。config.json由
    的头像 发表于 06-27 09:50 433次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换Stage<b class='flag-5'>模型</b>指导 <b class='flag-5'>配置文件</b>差异

    鸿蒙开发Ability Kit程序框架服务FA模型切换Stage模型指导 app和deviceConfig的切换

    为了便于开发者维护应用级别的属性配置,Stage模型将config.json中的app和deviceConfig标签提取到了app.json5中进行配置,并对部分标签名称进行了修改,具
    的头像 发表于 06-27 10:01 346次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换Stage<b class='flag-5'>模型</b>指导 app和deviceConfig的切换

    鸿蒙开发Ability Kit程序框架服务FA模型切换Stage模型指导 module的切换

    FA模型切换到Stage模型时,开发者需要将config.json文件module标签下的配置
    的头像 发表于 06-27 14:16 450次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:<b class='flag-5'>FA</b><b class='flag-5'>模型</b>切换Stage<b class='flag-5'>模型</b>指导 module的切换

    鸿蒙开发Ability Kit程序框架服务:声明权限

    应用在申请权限时,需要在项目的配置文件中,逐个声明需要的权限,否则应用将无法获取授权。
    的头像 发表于 07-01 09:22 334次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服务</b>:声明权限