您当前的位置:首页 > 手机百科 > 华为

HarmonyOS应用基础知识

时间:2020-09-14 11:36:52  来源:  作者:

App

HarmonyOS的应用软件包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开。

一个HAP是由代码、资源、第三方库及应用配置文件组成的模块包,可分为entry和feature两种模块类型,如图1所示。

  • entry:应用的主模块。一个APP中,对于同一设备类型必须有且只有一个entry类型的HAP,可独立安装运行。
  • feature:应用的动态特性模块。一个APP可以包含一个或多个feature类型的HAP,也可以不含。只有包含Ability的HAP才能够独立运行。

图1 APP逻辑视图

HarmonyOS应用基础知识

 

Ability

Ability是应用所具备的能力的抽象,一个应用可以包含一个或多个Ability。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。

库文件

库文件是应用依赖的第三方代码形式,存放在libs目录,是.so文件。

资源文件

应用的资源文件(字符串、图片、音频等)存放于resources目录下,便于开发者使用和维护,详见资源文件分类。

配置文件

配置文件 (config.json) 是应用的Ability信息,用于声明应用的Ability,以及应用所需权限等信息,详见应用配置文件。

pack.info

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

  • delivery-with-install: 用于标识该HAP是否需要在主动安装时进行安装。
  • name:HAP文件名。
  • module-type:模块类型,entry或feature。
  • device-type:用于标识支持该HAP运行的设备类型。

应用配置文件

简介

应用的每个HAP的根目录下都存在一个“config.json”配置文件,主要涵盖以下三个方面:

  • 应用的全局配置信息,包含应用的包名、生产厂商、版本号等基本信息。
  • 应用在具体设备上的配置信息。
  • HAP包的配置信息,包含每个Ability必须定义的基本属性(如包名、类名、类型以及Ability提供的能力),以及应用访问系统或其他应用受保护部分所需的权限等。

文件约定

配置文件“config.json”采用JSON文件格式,由属性和值两部分构成:

  • 属性属性出现顺序不分先后,且每个属性最多只允许出现一次。
  • 每个属性的值为JSON的基本数据类型(数值、字符串、布尔值、数组、对象或者null类型)。如果属性值需要引用资源文件,可参见资源文件。

配置文件的元素

此部分提供“config.json”文件中所有属性的详细解释。

配置文件的内部结构

应用的配置文件“config.json”中由“app”、“deviceConfig”和“module”三个部分组成,缺一不可。配置文件的内部结构说明参见表1。

表1 配置文件的内部结构说明

HarmonyOS应用基础知识

 

app对象的内部结构

app对象包含应用的全局配置信息,内部结构说明参见表2。

表2 app对象的内部结构说明

HarmonyOS应用基础知识

 

app示例:

"app": {
    "bundleName": "com.huawei.hiworld.example", 
    "vendor": "huawei", 
    "version": {
        "code": 2, 
        "name": "2.0"
    }    "apiVersion": {
        "compatible": 3, 
        "target": 3
    }}

deviceConfig对象的内部结构

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

表3 deviceConfig对象的内部结构说明

HarmonyOS应用基础知识

 

default、car、tv、wearable、liteWearable、smartVision等对象的内部结构说明,可参见表4。

表4 default/car/tv/wearable等对象的内部结构说明

HarmonyOS应用基础知识

 

表5 network对象的内部结构说明

HarmonyOS应用基础知识

 

表6 securityConfig对象的内部结构说明

HarmonyOS应用基础知识

 

deviceConfig示例:

 "deviceConfig": {
    "default": {
        "process": "com.huawei.hiworld.example", 
        "directLaunch": false, 
        "supportBackup": false,
        "network": {
            "usesCleartext": true, 
            "securityConfig": {
                "domainSettings": {
                    "cleartextPermitted": true, 
                    "domains": [
                        {
                            "subDomains": true, 
                            "name": "example.ohos.com"
                        }
                    ]
                }
            }
        }
    }
}

module对象的内部结构

module对象包含HAP包的配置信息,内部结构说明参见表7。

表7 module对象的内部结构说明

HarmonyOS应用基础知识

 

module示例:

"module": {
    "package": "com.example.myapplication.entry", 
    "name": ".MyOHOSAbilityPackage", 
    "description": "$string:description_application", 
    "supportedModes": [
        "drive"
    ],     ],     "deviceType": [
        "car"
    ],     "distro": {
        "deliveryWithInstall": true, 
        "moduleName": "ohos_entry", 
        "moduleType": "entry"
    },     "abilities": [
        ...    ],     "shortcuts": [
        ...    ],    "js": [
        ...    ],     "reqPermissions": [
        ...    ],     "defPermissions": [
        ...    ]}

表8 distro对象的内部结构说明

HarmonyOS应用基础知识

 

distro示例:

"distro": {
    "deliveryWithInstall": true, 
    "moduleName": "ohos_entry", 
    "moduleType": "entry"
} 

表9 abilities对象的内部结构说明

HarmonyOS应用基础知识

 


HarmonyOS应用基础知识

 


HarmonyOS应用基础知识

 


HarmonyOS应用基础知识

 


HarmonyOS应用基础知识

 

abilities示例:

"abilities": [
    {        "name": ".MainAbility", 
        "description": "$string:description_main_ability", 
        "icon": "$media:hiworld.png", 
        "label": "HiMusic", 
        "type": "page", 
        "formEnabled": false, 
        "launchType": "standard", 
        "orientation": "unspecified", 
        "permissions": [
        ],         "visible": false, 
        "skills": [
            {                "actions": [
                    "action.system.home"
                ],                 "entities": [
                    "entity.system.home"
                ]            }        ],         "configChanges": [
            "locale", 
            "layout", 
            "fontSize", 
            "orientation"
        ],         "directLaunch": false, 
        "process": "string", 
        "backgroundModes": [
            "dataTransfer", 
            "audioPlayback", 
            "audioRecording", 
            "pictureInPicture", 
            "voip", 
            "location", 
            "bluetoothInteraction", 
            "wifiInteraction", 
            "screenFetch"
        ],     }]

表10 skills对象的内部结构说明

HarmonyOS应用基础知识

 

skills示例:

"skills": [
    {        "actions": [
            "action.system.home"
        ],         "entities": [
            "entity.system.home"
        ],        "uris": [
            {                 "scheme": "http",
                 "host": "www.xxx.com",
                 "port": "8080",
                 "path": "query/student/name",
                 "type": "text"
             }         ]    }]

表11 form对象的内部结构说明

HarmonyOS应用基础知识

 

form示例:

"form": {
    "formEntity": [
        "homeScreen", 
        "searchbox"
    ], 
    "minHeight": 100, 
    "maxHeight": 200, 
    "minWidth": 100, 
    "maxWidth": 200
}

表12 js对象的内部结构说明

HarmonyOS应用基础知识

 

js示例:

"js": [
    {        "name": "default", 
        "pages": [            
            "pages/index/index",
            "pages/detail/detail"
        ],                 "window": {
            "designWidth": 750,
            "autoDesignWidth": false
        }    }]

表13 shortcuts对象的内部结构说明

HarmonyOS应用基础知识

 

示例:

"shortcuts": [
    {        "shortcutId": "id",
        "label": "$string:shortcut",
        "intents": [
            {                "targetBundle": "com.huawei.hiworld.himusic",
                "targetClass": "com.huawei.hiworld.himusic.entry.MainAbility"
            }        ]    }]

配置文件示例

以JSON文件为config.json的一个简单示例,该示例的应用声明为三个Ability。

{
    "app": {
        "bundleName": "com.huawei.hiworld.himusic",
        "vendor": "huawei",
        "version": {
            "code": 2, 
            "name": "2.0"
        }        "apiVersion": {
            "compatible": 3, 
            "target": 3
        }    },    "deviceConfig": {
        "default": {
        }    },    "module": {
        "package": "com.huawei.hiworld.himusic.entry",
        "name": ".MainApplication",
        "supportedModes": [
            "drive"
        ],        "distro": {
            "moduleType": "entry",
            "deliveryWithInstall": true,
            "moduleName": "hap-car"
        },        "deviceType": [
            "car"
        ],         "abilities": [
            {                "name": ".MainAbility",
                "description": "himusic main ability",
                "icon": "$media:ic_launcher",
                "label": "HiMusic",
                "launchType": "standard",
                "orientation": "unspecified",
                "visible": true,
                "skills": [
                    {                        "actions": [
                            "action.system.home"
                        ],                        "entities": [
                            "entity.system.home"
                        ]                    }                ],                "type": "page",
                "formEnabled": false
            },            {                "name": ".PlayService",
                "description": "himusic play ability",
                "icon": "$media:ic_launcher",
                "label": "HiMusic",
                "launchType": "standard",
                "orientation": "unspecified",
                "visible": false,
                "skills": [
                    {                        "actions": [
                            "action.play.music",
                            "action.stop.music"
                        ],                        "entities": [
                            "entity.audio"
                        ]                    }                ],                "type": "service",
                "formEnabled": false,
                "backgroundModes": [
                    "audioPlayback"
                ]            },            {                "name": ".UserADataAbility",
                "type": "data",
                "uri": "dataability://com.huawei.hiworld.himusic.UserADataAbility",
                "visible": true
            }        ],        "reqPermissions": [{
                "name": "ohos.permission.DISTRIBUTED_DATASYNC",
                "reason": "",
                "usedScene": {
                    "ability": [
                        "com.huawei.hiworld.himusic.entry.MainAbility",
                        "com.huawei.hiworld.himusic.entry.PlayService"
                    ],                    "when": "inuse"
                }            }        ]    }}


Tags:HarmonyOS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
新科技,新技术对于追随潮流年轻一族的来说可以轻松玩转,但对于老年群体来说总会有些力不从心。今天和大家分享华为鸿蒙HarmonyOs2.0对于老年群体更方便的几个使用方法,我们一起...【详细内容】
2021-12-21  Tags: HarmonyOS  点击:(7)  评论:(0)  加入收藏
鸿蒙开始于 2012 年,虽一开始定位于物联网方向,但到如今,已经发展为一款可兼容 Android 应用的跨平台操作系统. 最新的 2.0 的官方描述是: HarmonyOS 是新一代的智能终端操...【详细内容】
2021-06-18  Tags: HarmonyOS  点击:(352)  评论:(0)  加入收藏
HarmonyOS开发初体验,一步一步来,从零开始!1、下载安装,这个不必多说。下载和安装等2、启动运行 安装后就可以双击启动了,安装基本就是傻瓜式安装,一路next就可以了。启动后的页面...【详细内容】
2021-06-18  Tags: HarmonyOS  点击:(153)  评论:(0)  加入收藏
一、设计布局<Button ohos:height="match_content" ohos:width="match_parent" ohos:id="$+id:GetAPPInfo" ohos:padding="5fp" ohos:top_margin="10fp"...【详细内容】
2021-05-14  Tags: HarmonyOS  点击:(308)  评论:(0)  加入收藏
与其天天看华为怎么被禁,天天聊鸿蒙OS怎样怎样,不如来点实际的,加入成为华为开发者!安卓的开发者们入坑了吗?华为要打造自己独立的生态,迫不得已,逼出来的国产OS终究要来。 Harmony...【详细内容】
2020-10-12  Tags: HarmonyOS  点击:(1082)  评论:(0)  加入收藏
APPHarmonyOS的应用软件包以APP Pack(Application Package)形式发布,它是由一个或多个HAP(HarmonyOS Ability Package)以及描述每个HAP属性的pack.info组成。HAP是Ability的部署...【详细内容】
2020-09-14  Tags: HarmonyOS  点击:(455)  评论:(0)  加入收藏
Harmonyos的正确写法,应该是HarmonyOS,根据搜索引擎可以了解到,其中文含义是“鸿蒙”,是华为自主研发的操作系统。在中国的古语里,鸿蒙又作“鸿濛”,意指宇宙形成前的混沌状态,成...【详细内容】
2020-05-19  Tags: HarmonyOS  点击:(35)  评论:(0)  加入收藏
▌简易百科推荐
解决华为手机录屏没有声音的方法如下:1、开启麦克风权限。华为手机的录屏软件工作时若想获取声源,就必须为它打开麦克风权限。操作方法:通过桌面依次点击设置、应用和服务、应...【详细内容】
2021-12-20  玩手机的张先生    Tags:录屏   点击:(5)  评论:(0)  加入收藏
前些天,有一位网友咨询我,说他的华为手机总是提示内存不够用了,而且还开始卡顿,问我怎么办?碰到这种情况,我们只需要给华为手机“减肥”就可以了,也就是“清理内存”,就能有效解决问...【详细内容】
2021-12-10  码不亭蹄    Tags:华为   点击:(12)  评论:(0)  加入收藏
当我们的手机用久了就会出现内存不足的现象,需要清理手机上的垃圾。今天教大家华为手机正确清理垃圾方法,轻松腾出10个GB。 1、手机管家手机管家是手机自带的清理垃圾软件,也是...【详细内容】
2021-12-10  干货百宝箱    Tags:华为   点击:(22)  评论:(0)  加入收藏
大家有没有发现,现在的华为手机语音助手真的越来越好用了,不仅可以通过语音来操作华为手机的很多常规功能,如:打电话、发短信、发微信等等,而且还提供了很多好玩的互动游戏,赶紧随...【详细内容】
2021-11-23  码不亭蹄    Tags:华为手机   点击:(33)  评论:(0)  加入收藏
先,在手机上端下划,在控制中心找到华为分享。 长按华为分享, 进入设置, 打开共享至电脑开关,点击电脑的网络(或网上邻居),即可在电脑上看到你的手机。双击手机图标,输入用户名,密码,...【详细内容】
2021-11-17  城里员外    Tags:华为手机   点击:(21)  评论:(0)  加入收藏
现在指关节截屏、隔空截屏等一些功能都是华为手机的常规操作。使用华为手机的人都知道,华为手机有很多非常好用的功能,而且目前在华为鸿蒙系统的加持下,华为手机又多了一些令人...【详细内容】
2021-11-16  盼小暖    Tags:华为手机   点击:(36)  评论:(0)  加入收藏
手机使用一段时间后,总感觉电池耗电快,手机卡顿,续航差,对于经常玩游戏的朋友来说,一天三充都不够用,给大家带来了很多不便!无论是苹果手机还是安卓手机,都难逃此劫。手机电池一般的...【详细内容】
2021-11-01  迅维手机快修    Tags:华为手机   点击:(30)  评论:(0)  加入收藏
作为继苹果ios、安卓系统后的第三个主流操作系统,围绕华为鸿蒙系统的生态建设一直备受各界关注。自今年6月HarmonyOS 2正式上线,截至今日,已有超过1.5亿智能机、平板、手表、智...【详细内容】
2021-10-25    《财经》新媒体  Tags:华为   点击:(34)  评论:(0)  加入收藏
几天前写了一篇名为《华为P系列机型中,哪一款最好用,P30、P40还是P50?》的文章,受到了大家的喜欢,有很多朋友在文章下面的评论区留言,希望我能再写一篇关于华为Mate系列的文章,在经...【详细内容】
2021-10-22  念心数码科技    Tags:Mate系列   点击:(56)  评论:(0)  加入收藏
可能是这3个设置没关闭, 赶紧自查下。[惊喜] 1、微信自动下载 微信这个功能,如果没有关闭的话 不论是浏览过的照片 还是使用微信拍摄的照片、视频 都会自动保存;[惊喜] 2、QQ...【详细内容】
2021-10-14      Tags:华为手机   点击:(71)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条