五、系统安全
前面说了这么多分布式,用户做的事情在多个设备上这么花式切换,安全问题怎么保证呢?
HarmonyOS 的安全标准:“正确的人,通过正确的设备,正确地使用数据。”
1.正确的人如何确定?
零信任:每次跨设备访问,都要进行身份认证。
协同认证:让高安全等级的设备协助低安全的等级的设备完成安全认证,比如网页可认证 IDE。
2.正确的设备
安全启动:保证运行的应用是完整并未经篡改的。
设备证书认证:安全设备可预置证书。
3.正确的使用数据
数据生成:数据从一生成就开始为其设置保护等级,存储使用
传输都受保护等级管理。
数据使用:敏感数据只能在可信任环境中使用。
数据传输:多设备是可信并且建立的信任关系并验证后,才可
进行数据传输。
六、鸿蒙应用基础概念
应用发布形式:
以 APP Pack 的形式发布,一个 Pack 由多个 HAP(Ability Package)和描述每个 HAP 属性的 pack.info 组成。
一个 HAP 由代码,资源,第三方库和配置文件组成。
模块类型:
entry:主模块,应用中有且仅有一个,可单独运行。
feature:动态特性模块,模块中包含 ablity 才可独立运行。
HAP 包中的文件目录类型:
库文件:lib 目录下。
资源文件:resource 目录下。
配置文件:config.json,声明应用的全局配置信息,版本号,厂商等,具体设备的配置信息和 ability 属性,以及所需权限。
pack.info:包含 HAP 属性说明信息。
七、配置文件详解:
前面说了配置文件 config.json 里一共包含三部分,这三部分缺一不可。
1.app:应用全局配置信息(字段含义我都写在了注释里)
示例:
"app": {
//包名
"bundleName": "com.huawei.hiworld.example",
//开发商
"vendor": "huawei",
//版本
"version": {
//开发版号
"code": 2,
//对外版号
"name": "2.0"
}
//HarmonyOS 的 API 版本
"apiVersion": {
//最小适用版本
"compatible": 3,
//目标版本
"target": 3
}
}
2.deviceConfig:包含具体设备的应用配置信息
示例:
"deviceConfig": {
//default是所有设备通用的配置信息,如果要对特定的设//备设置需要写明,比如car是车机,tv是智慧屏
"default": {
//该应用的所有 Ability //都运行在这个进程中(手机不可用)
"process": "com.huawei.hiworld.example",
//应用可未解锁直接启动(手机不可用)
"directLaunch": false,
//是否可备份(手机不可用)
"supportBackup": false,
//网络配置
"network": {
//支持明文网络流量
"usesCleartext": true,
//网络安全配置
"securityConfig": {
//网域范围
"domainSettings": {
//网域范围是否可用明文流量
"cleartextPermitted": true,
//域名配置
"domains": [
{
//是否有子域名
"subDomains": true,
//域名名称
"name": "example.ohos.com"
}
]
}
}
}
}
}
3.moudle:HAP 包配置信息。
示例:
"module": {
//HAP包名
"package": "com.example.myapplication.entry",
//HAP类名
"name": ".MyOHOSAbilityPackage",
//HAP描述(手机不可用)
"description": "$string:description_application",
//支持运行模式(手机不可用)
"supportedModes": [
//驾驶(手机不可用)
"drive"
],
],
//ability的运行设备
"deviceType": [
"car"
],
//发布描述(手机不可用)
"distro": {
//当前HAP是否随应用安装
"deliveryWithInstall": true,
//当前HAP名称
"moduleName": "ohos_entry",
//当前HAP类型(entry或feature)
"moduleType": "entry"
},
//模块内所有的ability
"abilities": [
{
//ability名称
"name": ".MainAbility",
//ability描述
"description":
"$string:description_main_ability",
//ability图标索引
"icon": "$media:hiworld.png",
//ability对用户显示的名称
"label": "HiMusic", //表示ability的类别,page表示是FA,用于与用户交//互;service表示后台运行的任务;data表示提供数//据访问
"type": "page",
//是否提供form能力
"formEnabled": false,
//ability启动模式,standard:一般场景;singleton
//:ability只能有一个实例,如全局唯一性的:来电 //界面
"launchType": "standard",
//横竖屏显示,unspecified系统自动判断。
"orientation": "unspecified",
//其他ability调用此ability时需要的权限
"permissions": [
],
//是否可被其他ability调用
"visible": false,
//能够接收的intent特征
"skills": [
{
//能够接收intent的action值
"actions": [
"action.system.home"
],
//能够接收intent的ability类别
"entities": [
"entity.system.home"
]
}
],
//Ability 关注的系统配置集合
"configChanges": [
"locale",
"layout",
"fontSize",
"orientation"
],
//Ability 是否支持在设备未解锁状态直接启动
"directLaunch": false,
//应用或者 Ability 的进程名
"process": "string",
//后台服务的类型
"backgroundModes": [
//数据传输
"dataTransfer",
//音频输出
"audioPlayback",
//音频输入
"audioRecording",
//小窗口播放视频
"pictureInPicture",
//视频电话
"voip",
//定位、导航
"location",
//蓝牙扫描
"bluetoothInteraction",
//wifi扫描
"wifiInteraction",
//录屏
"screenFetch"
],
}
],
//应用的快捷方式
"shortcuts": [
{
//快捷方式的ID
"shortcutId": "id",
//快捷方式标签信息
"label": "$string:shortcut",
//intent信息集合
"intents": [
{
//快捷方式所在包名
"targetBundle": "com.huawei.hiworld.himusic",
//快捷方式目标类名
"targetClass": "com.huawei.hiworld.himusic.entry.MainAbility"
}
]
}
],
//JS模块集合
"js": [
...
],
//运行时向系统申请的权限
"reqPermissions": [
...
],
//用户需要申请的权限
"defPermissions": [
...
]
}