赞
踩
开发一个HAP应用可以说是由多个Ability组成,那么我们直接new File创建Ability之后会在config.json的module里面添加相应的配置信息,这就需要我们去搞清楚这些配置信息有什么作用,然后可以通过修改不同的配置信息达到不同的效果;这里就创建一个新的项目进行讲解,更多的配置信息以及属性可以查阅harmonyOS官方文档。
config.json是一个HAP项目主要的配置文件,所有相关配置信息都配置在该文件下;配置文件采用JSON文件格式,每个配置项由属性和值两部分组成;属性的出现不分先后顺序,且只出现一次;值是由JSON的基础数据类型组成。
每一个config.json文件都由app、deviceConfig、module三部分组成,三个部分都不可或缺。
整个项目的全局配置信息,比如版本号、版本名称等全局信息就配置在该项下面,这里就简单列举几个常用到的配置信息进行展示:
"app": {//全局配置信息
"bundleName": "com.example.demo1",//应用包名,应用唯一标识符
"vendor": "example",//应用开发厂商的描述
"version": {
"code": 1000000,//版本号
"name": "1.0.0"//版本名称
},
"apiVersion": {//应用依赖harmonyOS的api版本
"compatible": 3,//应用运行需要的最小版本
"target": 3 //应用运行的目标版本
}
},
该配置信息表示应用运行到具体设备上的配置信息,作用于具体设备,可选值如下:
几个常用信息:
这里简单列举几条配置信息,deviceConfig更多配置信息可以查阅官方文档。
"deviceConfig": {//具体设备上的配置信息 "default": {//表示该配置使用与所有应用,可以配置成phone(手机)、tv(智能屏)、car(车机特有信息)、wearable(只能穿戴设备)等 "process": "com.huawei.example",//应用或者ability进程名称,应用所有的ability都在这个进程中运行 "directLaunch": false,//应用是否可以在设备未解锁的状态下启动(电话在未解锁下可以直接启动) "supportBackup": false,//应用是否支持备份和恢复 "network": {//网络配置 "usesCleartext": true,//应用是否允许明文网络流量(不加密的网络通信) "securityConfig": {//应用网络安全配置信息 "domainSettings": {//自定义的网域范围安全配置,支持多层嵌套 "cleartextPermitted": true,//自定义的网域是否支持明文流量传输 "domains": [{//域名配置信息 "subdomains": true,//是否包含子域 "name": "www.xxx.com"//域名名称 }] } } } } },
HAP包的配置信息,主要作用于项目内的ability文件,配置不同ability不同信息,实现不同功能。
常用配置信息:
发布的具体信息配置:
abilities相关配置信息:
skills相关配置信息:
可能不是很好理解,看到config.json文件中的配置,这里的entities的取值为entity.system.home,系统主页的意思,当前这个ability的intent的ability类型是系统主页,那么打开HAP应用的时候这个页面就是主页面,这样说就比较好理解了。
"abilities": [//表示当前模块内的所有Ability { "skills": [//ability能够接收的intent特征 { "entities": [//能够接收的intent的ability类别 "entity.system.home"//这里Ability设置可以接收的intent的类型为系统主页的类型 ], "actions": [//接收的intent的action行为 "action.system.home"//这个值代表返回主页的行为 ] } ], "orientation": "unspecified",//显示模式 unspecified(由系统判定显示方向) landscape(横屏) portrait(竖屏) "name": "com.example.demo1.MainAbility",//ability名称 "icon": "$media:icon",//ability图标资源文件 "description": "$string:mainability_description",//ability的描述 "label": "$string:entry_MainAbility",//ability对用户(显示在页面上)的名称 "type": "page",//ability的类型 page service data "formsEnabled": true,//ability是否支持表单(登录 注册提交) "launchType": "standard"//ability的启动模式 standard singleton }, }
以上就是HAP应用的config.json配置文件部分详解了,更多配置信息可以查阅官方文档进行了解。
通过应用目录结构我们可以很清楚的看到HAP项目的资源文件是存放在resources文件下面的、包括布局、图片、媒体、json文件等信息,文件结构如下:
图片、媒体、布局等文件都存放在base目录下,base目录结构:
–base
HAP的资源文件分为base目录、限定词目录以及rawfile目录,三种目录文件;而对不同文件目录访问的方式也不一样,大致可分为base目录和rawfile目录两种访问方式。
在HAP项目中,要访问base目录和限定词目录下的文件需要用到资源管理器ResourceManager进行访问,这里以访问element下面的string.json文件里面的值作为例子,操作步骤如下:
1.在string.json文件里面添加一个测试的值:
"string": [{
"name": "test_name",
"value": "我是测试名称"
},
2.获取ResourceManager实例对象:
ResourceManager resourceManager = this.getResourceManager();
3.通过资源管理器获取element下面的数据:
//getElement 获取
//ResourceTable.String 获取element下string.json文件中类型为string
//test_name 名称为test_name的元素资源
//getString 获取的值类型为String类型
String name = resourceManager.getElement(ResourceTable.String_test_name).getString();
System.out.print(name);
4.通过上面的方法创建一个存放color值的json文件并获取
//ResourceTable.Color 获取资源类型为Color
//red 值为red的资源
//getColor 资源类型为color
int color = resourceManager.getElement(ResourceTable.Color_red).getColor();
在xml布局文件中访问资源文件采用以下格式进行引用:
引用base下文件:
$type.name
引用系统文件:
$ohos:type.name
在xml文件中的text组件引用string.json和color.json里面的资源:
<Text
ohos:id="$+id:text_helloworld"
ohos:height="match_content"
ohos:width="match_content"
//系统资源 $ohos:资源类型type:资源name
ohos:background_element="$ohos:color:id_color_activated"
ohos:layout_alignment="horizontal_center"
//$资源类型type:资源name
ohos:text="$string:test_name"
//$资源类型type:资源name
ohos:text_color="$color:red"
ohos:text_size="20fp"
/>
引用rawfile资源需要通过指定文件路径和文件名称进行访问,同样需要使用到资源管理器ResourceManager,并且返回的数据是一个RawFileEntry。
//获取ResourceManager 实例
ResourceManager resourceManager = this.getResourceManager();
//通过resourceManager的getRawFileEntry方法获取rawfile文件
//文件路径为resources/rawfile/example.js
//获得的结果为RawFileEntry
RawFileEntry rawFileEntry = resourceManager.getRawFileEntry("resources/rawfile/example.js");
element下的资源文件都是以json的方式进行存放,最外层对象为该资源文件的数据类型,取值范围就是基本的数据类型,然后是一个集合,集合里面是对象,实例如下:
{
"boolean":[//资源类型type
{
"name":"exm_boolean",
"value":true
}
]
}
{
"color":[
{
"name":"red",
"value":"#ff0000"
}
]
}
{ "strarray":[ { "name":"size", "value":[ { "value":"small" }, { "value":"$string:hello" }, { "value":"large" }, { "value":"extra large" } ] } ] }
如果要创建int、string、float等数据类型就和上面的boolean、color差不多了;要创建pattern、plural、strarray等类型可以仿照上面的strarray进行创建,也可以访问官方文档,查看具体例子。
资源文件官方文档地址:资源文件官方文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。