1# 3.2 beta3相对于3.2 beta2变更详细说明 2 3## 包管理子系统 4 5Beta3版本上增加了预置应用特权管控能力,可以分为两部分:预置应用权限管控和预置应用的配置方法。 6应用特权是指应用所具备的一些高等级的特殊能力,比如限制应用不可被卸载、应用内数据不可被删除等。 7OpenHarmony提供通用的应用特权和可由设备厂商针对不同设备单独配置的应用特权。OpenHarmony支持在不同产品上对预置应用进行差异化配置,设备厂商可根据需要对预置应用进行配置。此外,OpenHarmony根据GetCfgDirList获得系统支持的预置目录,如system、chipset、sys_prod、chip_prod;并且按照返回的顺序越靠后优先级越高,如chip_prod的优先级高于system的优先级。 8 9### 预置应用安装方式变更 10 11当前预置应用的安装方式由自动扫描目录/system/app下面的hap安装,变更为通过白名单配置方式安装。在install_list.json中配置app-dir的hap才会被自动安装,并成为预置应用。 12 13**变更影响** 14 15不涉及js及native接口,对开发应用无影响。 16 17**关键的接口/组件变更** 18 19无 20 21**适配指导** 22 23在[/system/etc/app/install_list.json](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/preinstall-config/install_list.json)文件中配置相关字段,app_dir表示hap所在的目录,removable表示hap安装后是否可卸载。如下所示: 24 25```json 26{ 27 "install_list" : [ 28 { 29 "app_dir" : "/system/app/com.ohos.systemui", 30 "removable" : false 31 }, 32 { 33 "app_dir" : "/system/app/demo.hap", 34 "removable" : true 35 } 36 ] 37} 38``` 39 40### 通用应用特权管控变更 41 42通用的应用特权是指应用在不同设备类型上都可以获得的特权,可分为以下几种: 43| 权限 | 描述 | 44| ---------------- | ------------------------------------------------------------ | 45| AllowAppDataNotCleared | 是否允许应用数据被删除 | 46| AllowAppMultiProcess | 是否允许应用多进程 | 47| AllowAppDesktopIconHide | 是否允许隐藏桌面图标 | 48| AllowAbilityPriorityQueried | 是否允许Ability配置查询优先级 | 49| AllowAbilityExcludeFromMissions | 是否允许Ability不在任务栈中显示 | 50| AllowAppUsePrivilegeExtension | 是否允许应用使用ServiceExtension、DataExtension | 51| AllowFormVisibleNotify | 是否允许桌面卡片可见 | 52 53上述特权之前通过config.json或者module.json进行配置,并结合是否为预置应用和系统应用进行区分,本次变更为根据签名证书和预置白名单的方式进行配置,其它方式均无效。 54 55**变更影响** 56 57不涉及js及native接口,如果开发的应用中使用上述特权,那就需要应用开发者申请对应的特权,申请及配置方式可参考[应用配置指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-app-privilege-config-guide.md)。 58 59**关键的接口/组件变更** 60 61无 62 63**适配指导** 64 65可参考[应用配置指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-app-privilege-config-guide.md) 66 67```json 68{ 69 "version-name": "1.0.0", 70 ... 71 "bundle-info": { 72 "developer-id": "OpenHarmony", 73 ... 74 }, 75 "issuer": "pki_internal", 76 "app-privilege-capabilities": ["AllowAppDataNotCleared", "AllowAppDesktopIconHide"] // 应用的数据不允许被删除且允许隐藏桌面图标 77} 78``` 79 80### 产品化应用特权管控变更 81除了通用应用特权外,设备厂商还可以为各类设备额外定义允许配置的特权项,包括: 82 83| 权限 | 类型 | 默认值 | 描述 | 84| --------------------- | -------- | ------ | ------------------------------------------------- | 85| removable | bool | true | 是否允许应用被卸载,仅预置应用生效 | 86| keepAlive | bool | false | 是否允许应用常驻 | 87| singleton | bool | false | 是否允许应用安装到单用户下(U0) | 88| allowCommonEvent | string[] | - | 是否允许静态广播拉起 | 89| associatedWakeUp | bool | false | 是否允许FA模型应用被关联唤醒 | 90| runningResourcesApply | bool | false | 是否允许应用运行资源申请(CPU、事件通知、蓝牙等) | 91 92上述特权之前通过config.json或者module.json进行配置,并结合是否为预置应用和系统应用进行区分,本次变更为根据预置白名单[install_list_capability.json](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/preinstall-config/install_list_capability.json)的方式进行配置,其它方式均无效。 93 94**变更影响** 95 96不涉及js及native接口,如果开发的应用中使用上述特权,那就需要应用开发者申请对应的特权,可参考[配置方式](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-app-privilege-config-guide.md#%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F-1)。 97 98**关键的接口/组件变更** 99 100无 101 102**适配指导** 103 104可参考[配置方式](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-app-privilege-config-guide.md#%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F-1) 105 106```json 107{ 108 "install_list": [ 109 { 110 "bundleName": "com.example.kikakeyboard", 111 "singleton": true, // 应用安装到单用户下 112 "keepAlive": true, // 应用常驻 113 "runningResourcesApply": true, // 运行资源申请(CPU、事件通知、蓝牙等) 114 "associatedWakeUp": true, // FA模型应用被关联唤醒 115 "app_signature" : ["8E93863FC32EE238060BF69A9B37E2608FFFB21F93C862DD511CBAC"], // 当配置的证书指纹和hap的证书指纹一致才生效 116 "allowCommonEvent": ["usual.event.SCREEN_ON", "usual.event.THERMAL_LEVEL_CHANGED"] 117 } 118} 119``` 120 121### 预授权白名单增加指纹信息校验 122 123预授权文件[install_list_permissions.json](https://gitee.com/openharmony/vendor_hihope/blob/master/rk3568/preinstall-config/install_list_permissions.json)在开发板上的路径由system/etc/permission变更为system/etc/app/。新增字段app_signature,表示hap的指纹信息,可以配置多个指纹信息。在授权时,指纹信息匹配成功才能授权。 124 125**变更影响** 126 127不涉及js及native接口,如果开发的应用中使用了预授权能力,需要在预授权文件中增加指纹信息,未配置会导致预授权失败。 128 129**关键的接口/组件变更** 130 131无 132 133**适配指导** 134可参考: 135```json 136{ 137[ 138 { 139 "bundleName" : "com.ohos.screenshot", 140 "app_signature" : ["8E93863FC32EE238060BF69A9B37E2608FFFB21F93C862DD511CBAC9F30024B5"], 141 "permissions" : [ 142 { 143 "name" : "ohos.permission.MEDIA_LOCATION", 144 "userCancellable" : true 145 }, 146 { 147 "name" : "ohos.permission.READ_MEDIA", 148 "userCancellable" : true 149 }, 150 { 151 "name" : "ohos.permission.WRITE_MEDIA", 152 "userCancellable" : true 153 } 154 ] 155 } 156} 157``` 158 159## ArkUI子系统 160 161### 修复FA模型下编译构建release hap模式的公共模块变量共享问题 162 163两个页面依赖同一个文件的对象(foodData)时,当页面A修改了这个对象,当页面B读取这个对象时,获取到的是页面A修改后的值,从而实现了公共模块对象共享。 164 165**变更影响** 166 167FA模型下的公共模块变量共享之前是作为需求交付的,在中间某个版本开始,编译release的hap该功能缺失,编译debug的hap一直是正常的,在830版本修复了编译release hap模式下的公共模块变量共享功能。 168 169不影响应用编译,无需适配接口。 170 171**关键的接口/组件变更** 172 173无 174 175### 状态变量多种数据类型声明使用限制。 176 177状态变量比如@State、@Provide、 @Link和@Consume等,定义数据类型时,只能同时由简单数据类型或对象引用数据类型其中一种构成。 178 179示例: 180 181```ts 182@Entry 183@Component 184struct Index { 185 //错误写法: @State message: string | Resource = 'Hello World' 186 @State message: string = 'Hello World' 187 188 build() { 189 Row() { 190 Column() { 191 Text(`${ this.message }`) 192 .fontSize(50) 193 .fontWeight(FontWeight.Bold) 194 } 195 .width('100%') 196 } 197 .height('100%') 198 } 199} 200``` 201 202**变更影响** 203 204当定义的状态变量类型中同时包含简单类型和对象引用数据类型时,编译报错提示不支持。 205 206**关键的接口/组件变更** 207 208当定义的状态变量类型中同时包含简单类型和对象引用数据类型时,需修改为只含有其中一种,如上述示例代码所示。 209 210## 全球化子系统 211 212### 针对color.json中颜色值,增加合法性校验 213 214针对color.json中颜色值,增加合法性校验,其校验规则如下: 215 216- 使用十六进制颜色码,格式如下: 217 - #rgb:red(0-f) green(0-f) blue(0-f) 218 - #argb:transparency(0-f) red(0-f) green(0-f) blue(0-f) 219 - #rrggbb: red(00-ff) green(00-ff) blue(00-ff) 220 - #aarrggbb: transparency(00-ff) red(00-ff) green(00-ff) blue(00-ff) 221- 使用$引用应用中已定义的资源,格式如下: 222 - $color:xxx 223 224**变更影响** 225 226不符合上述校验规则,将在编译时报错。 227 228**关键的接口/组件变更** 229 230无