openharmony 鸿蒙 changelogs-ability

2022-12-05 浏览 (1163)

元能力子系统ChangeLog

cl.ability.1 应用组件启动规则变更

元能力子系统应用组件启动规则在如下场景中存在变更:

  • 应用位于后台启动应用组件
  • 跨应用启动invisible应用组件
  • 跨应用启动FA模型的serviceAbility与dataAbility
  • 使用startAbilityByCall接口

开发者需要根据以下说明对应用进行适配。

变更影响

若未适配新规则,在上述场景下将无法启动应用组件

注意,启动应用组件是指一切启动或连接Ability的行为:
1. 启动Ability,如使用startAbility、startServiceExtensionAbility、startAbilityByCall等接口。
2. 连接Ability,如使用connectAbility、connectServiceExtensionAbility、acquireDataAbilityHelper、createDataShareHelper等接口。

关键的接口/组件变更

  • 涉及的应用组件
    • Stage模型
      • Ability
      • ServiceExtension
      • DataShareExtension
    • FA模型
      • PageAbility
      • ServiceAbility
      • DataAbility
  • 涉及接口
    • Stage模型
      • startAbility(want: Want, callback: AsyncCallback): void;
      • startAbility(want: Want, options: StartOptions, callback: AsyncCallback): void;
      • startAbility(want: Want, options?: StartOptions): Promise;
      • startAbilityByCall(want: Want): Promise;
      • startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;
      • startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback): void;
      • startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise;
      • startAbilityForResult(want: Want, callback: AsyncCallback): void;
      • startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback): void;
      • startAbilityForResult(want: Want, options?: StartOptions): Promise;
      • startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;
      • startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback): void;
      • startAbilityForResultWithAccount(want: Want, accountId: number, options?: StartOptions): Promise;
      • startServiceExtensionAbility(want: Want, callback: AsyncCallback): void;
      • startServiceExtensionAbility(want: Want): Promise;
      • startServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;
      • startServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise;
      • stopServiceExtensionAbility(want: Want, callback: AsyncCallback): void;
      • stopServiceExtensionAbility(want: Want): Promise;
      • stopServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback): void;
      • stopServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise;
      • connectAbility(want: Want, options: ConnectOptions): number;
      • connectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;
      • createDataShareHelper(context: Context, uri: string, callback: AsyncCallback): void
    • FA模型
      • startAbility(parameter: StartAbilityParameter, callback: AsyncCallback): void;
      • startAbility(parameter: StartAbilityParameter): Promise;
      • startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback): void;
      • startAbilityForResult(parameter: StartAbilityParameter): Promise;
      • acquireDataAbilityHelper(uri: string): DataAbilityHelper;
      • connectAbility(request: Want, options:ConnectOptions ): number;

适配指导

不同场景下的启动规则说明如下:

  • 应用后台启动应用组件

    • OpenHarmony 3.2-beta3 版本规则:
      • 应用位于后台时,启动应用组件不受任何限制。
    • OpenHarmony 3.2-beta4 版本新规则:
      • 当应用位于后台时,启动应用组件需鉴权,需申请的权限如下:
      • {
            "name": "ohos.permission.START_ABILITIES_FROM_BACKGROUND",
            "grantMode": "system_grant",
            "availableLevel": "system_basic",  
            "provisionEnable": true,
            "distributedSceneEnable": false
        }
        

        注:
        1. 即使启动同应用的组件,也受该规则限制。
        2. 对于API8以及之前的SDK,启动serviceAbility和dataAbility不受此规则限制。

  • 跨应用启动invisible应用组件

    • OpenHarmony 3.2-beta3 版本规则:
      • 对于APL为normal的应用,无法跨应用启动invisible的应用组件
    • OpenHarmony 3.2-beta4 版本新规则:
      • 所有应用,若需要跨应用启动invisible的应用组件,需鉴权,需申请的权限如下:
      •  {
             "name": "ohos.permission.START_INVISIBLE_ABILITY",
             "grantMode": "system_grant",
             "availableLevel": "system_core",
             "provisionEnable": true,
             "distributedSceneEnable": false
         }
        
  • 跨应用启动FA模型的serviceAbility与dataAbility

    • OpenHarmony 3.2-beta3 版本规则:
      • 可任意跨应用启动serviceAbility与dataAbility
    • OpenHarmony 3.2-beta4 版本新规则:
      • serviceAbility与dataAbility的提供方应用需配置关联启动,否则无法被跨应用拉起。(普通应用无法配置关联启动)
  • startAbilityByCall接口

    • OpenHarmony 3.2-beta3 版本规则:
      • 可任意进行Call调用
    • OpenHarmony 3.2-beta4 版本新规则:
      • 不支持同应用startAbilityByCall调用

      • 跨应用startAbilityByCall调用需鉴权,需申请的权限如下:

      • {
            "name": "ohos.permission.ABILITY_BACKGROUND_COMMUNICATION",
            "grantMode": "system_grant",
            "availableLevel": "system_basic",
            "provisionEnable": true,
            "distributedSceneEnable": false
        }
        

        注:
        使用startAbilityByCall接口同时也受上述后台启动、跨应用启动invisible规则的限制。

cl.ability.2 跨设备应用组件启动规则变更(仅支持系统应用)

元能力子系统跨设备应用组件启动规则在如下场景中存在变更:

  • 应用位于后台启动应用组件
  • 跨应用启动invisible应用组件
  • 跨应用启动FA模型的serviceAbility

开发者需要根据以下说明对应用进行适配。

变更影响

若未适配新规则,在上述场景下将无法启动应用组件

注意,启动应用组件是指一切启动或连接Ability的行为:
1. 启动Ability,如使用startAbility、startAbilityForResult、startAbilityByCall等接口。
2. 连接Ability,如使用connectAbility等接口。

关键的接口/组件变更

  • 涉及的应用组件
    • Stage模型
      • Ability
      • ServiceExtension
    • FA模型
      • PageAbility
      • ServiceAbility
  • 涉及接口
    • Stage模型
      • startAbility(want: Want, callback: AsyncCallback): void;
      • startAbilityByCall(want: Want): Promise;
      • startAbilityForResult(want: Want, callback: AsyncCallback): void;
      • connectAbility(want: Want, options: ConnectOptions): number;
    • FA模型
      • startAbility(parameter: StartAbilityParameter, callback: AsyncCallback): void;
      • startAbility(parameter: StartAbilityParameter): Promise;
      • startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback): void;
      • startAbilityForResult(parameter: StartAbilityParameter): Promise;
      • connectAbility(request: Want, options:ConnectOptions ): number;

适配指导

不同场景下的启动规则说明如下:

  • 应用后台启动应用组件

    • OpenHarmony 3.2-beta3 版本规则:
      • 应用位于后台时,启动应用组件不受任何限制。
    • OpenHarmony 3.2-beta4 版本新规则:
      • 当应用位于后台时,启动应用组件需鉴权,需申请的权限如下:
      • {
            "name": "ohos.permission.START_ABILITIES_FROM_BACKGROUND",
            "grantMode": "system_grant",
            "availableLevel": "system_basic",  
            "provisionEnable": true,
            "distributedSceneEnable": false
        }
        

        注:
        1. 即使启动同应用的组件,也受该规则限制。
        2. 对于API8以及之前的SDK,启动serviceAbility不受此规则限制。

  • 跨应用启动invisible应用组件

    • OpenHarmony 3.2-beta3 版本规则:
      • 无法跨应用启动invisible的应用组件
    • OpenHarmony 3.2-beta4 版本新规则:
      • 若需要跨应用启动invisible的应用组件,需鉴权,需申请的权限如下:
      •  {
             "name": "ohos.permission.START_INVISIBLE_ABILITY",
             "grantMode": "system_grant",
             "availableLevel": "system_core",
             "provisionEnable": true,
             "distributedSceneEnable": false
         }
        
  • 跨应用启动FA模型的serviceAbility

    • OpenHarmony 3.2-beta3 版本规则:
      • 可任意跨应用启动serviceAbility
    • OpenHarmony 3.2-beta4 版本新规则:
      • serviceAbility的提供方应用需配置关联启动,否则无法被跨应用拉起。(普通应用无法配置关联启动)
      • 关联启动配置
      •  {
             "bundleName": "",
             "app_signature": ["xxxxxxxxxxxxxxxxxxx"],
             "associatedWakeUp": true
         }
        

cl.ability.3 API异常处理方式变更

元能力部分接口使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。

变更影响

基于此前版本开发的应用,需适配变更接口的错误信息返回方式,否则会影响原有业务逻辑。

关键接口/组件变更

为适配统一的API异常处理方式,对元能力相关接口进行废弃(下表中 原接口 列内容,其中的API9接口将被删除,API8及以前的接口将被标注为废弃),并新增对应接口(下表中 新接口 列内容)。新增接口支持统一的错误码异常处理规范,功能上与原接口保持一致。

原接口新接口
@ohos.ability.wantConstant.d.ts@ohos.app.ability.wantConstant.d.ts
@ohos.application.Ability.d.ts@ohos.app.ability.UIAbility.d.ts
@ohos.application.AbilityConstant.d.ts@ohos.app.ability.AbilityConstant.d.ts
@ohos.application.abilityDelegatorRegistry.d.ts@ohos.app.ability.abilityDelegatorRegistry.d.ts
@ohos.application.AbilityLifecycleCallback.d.ts@ohos.app.ability.AbilityLifecycleCallback.d.ts
@ohos.application.abilityManager.d.ts@ohos.app.ability.abilityManager.d.ts
@ohos.application.AbilityStage.d.ts@ohos.app.ability.AbilityStage.d.ts
@ohos.application.appManager.d.ts@ohos.app.ability.appManager.d.ts
@ohos.application.Configuration.d.ts@ohos.app.ability.Configuration.d.ts
@ohos.application.ConfigurationConstant.d.ts@ohos.app.ability.ConfigurationConstant.d.ts
@ohos.application.context.d.ts@ohos.app.ability.common.d.ts
@ohos.application.EnvironmentCallback.d.ts@ohos.app.ability.EnvironmentCallback.d.ts
@ohos.application.errorManager.d.ts@ohos.app.ability.errorManager.d.ts
@ohos.application.ExtensionAbility.d.ts@ohos.app.ability.ExtensionAbility.d.ts
@ohos.application.formBindingData.d.ts@ohos.app.form.formBindingData.d.ts
@ohos.application.FormExtension.d.ts@ohos.app.form.FormExtensionAbility.d.ts
@ohos.application.formHost.d.ts@ohos.app.form.formHost.d.ts
@ohos.application.formInfo.d.ts@ohos.app.form.formInfo.d.ts
@ohos.application.formProvider.d.ts@ohos.app.form.formProvider.d.ts
@ohos.application.missionManager.d.ts@ohos.app.ability.missionManager.d.ts
@ohos.application.quickFixManager.d.ts@ohos.app.ability.quickFixManager.d.ts
@ohos.application.ServiceExtensionAbility.d.ts@ohos.app.ability.ServiceExtensionAbility.d.ts
@ohos.application.StartOptions.d.ts@ohos.app.ability.StartOptions.d.ts
@ohos.application.Want.d.ts@ohos.app.ability.Want.d.ts
@ohos.wantAgent.d.ts@ohos.app.ability.wantAgent.d.ts

适配指导

如上所述,仅将老接口平移到了新的namespace中,所以可以通过修改import来解决适配问题:

如原先接口使用了@ohos.application.missionManager

import missionManager from '@ohos.application.missionManager';

可以通过直接修改import,来切换到新的namespace上:

import missionManager from '@ohos.app.ability.missionManager';

此外还需要适配异常处理,具体参考新接口的接口文档。

cl.ability.4 接口变更

对元能力部分接口名进行了变更。

关键的接口/组件变更

模块名类名方法/属性/枚举/常量变更类型
@ohos.application.AbilityCalleronRelease(callback: OnReleaseCallBack): void;废弃
@ohos.app.ability.UIAbilityCalleron(type: "release", callback: OnReleaseCallBack): void;新增
@ohos.application.AbilityAbilitydump(params: Array<string>): Array<string>;废弃
@ohos.app.ability.UIAbilityUIAbilityonDump(params: Array<string>): Array<string>;新增
@ohos.application.appManagerappManagerfunction registerApplicationStateObserver(observer: ApplicationStateObserver): number;废弃
@ohos.application.appManagerappManagerfunction registerApplicationStateObserver(observer: ApplicationStateObserver, bundleNameList: Array<string>): number;废弃
@ohos.application.appManagerappManagerfunction unregisterApplicationStateObserver(observerId: number, callback: AsyncCallback<void>): void;废弃
@ohos.application.appManagerappManagerfunction unregisterApplicationStateObserver(observerId: number): Promise<void>;废弃
@ohos.app.ability.appManagerappManagerfunction on(type: "applicationState", observer: ApplicationStateObserver): number;新增
@ohos.app.ability.appManagerappManagerfunction on(type: "applicationState", observer: ApplicationStateObserver, bundleNameList: Array<string>): number;新增
@ohos.app.ability.appManagerappManagerfunction off(type: "applicationState", observerId: number, callback: AsyncCallback<void>): void;新增
@ohos.app.ability.appManagerappManagerfunction off(type: "applicationState", observerId: number): Promise<void>;新增
@ohos.application.errorManagererrorManagerfunction registerErrorObserver(observer: ErrorObserver): number;废弃
@ohos.application.errorManagererrorManagerfunction unregisterErrorObserver(observerId: number, callback: AsyncCallback<void>): void;废弃
@ohos.application.errorManagererrorManagerfunction unregisterErrorObserver(observerId: number): Promise<void>;废弃
@ohos.app.ability.errorManagererrorManagerfunction on(type: "error", observer: ErrorObserver): number;新增
@ohos.app.ability.errorManagererrorManagerfunction off(type: "error", observerId: number, callback: AsyncCallback<void>): void;新增
@ohos.app.ability.errorManagererrorManagerfunction off(type: "error", observerId: number): Promise<void>;新增
@ohos.application.missionManagermissionManagerfunction registerMissionListener(listener: MissionListener): number;废弃
@ohos.application.missionManagermissionManagerfunction unregisterMissionListener(listenerId: number, callback: AsyncCallback<void>): void;废弃
@ohos.application.missionManagermissionManagerfunction unregisterMissionListener(listenerId: number): Promise<void>;废弃
@ohos.app.ability.missionManagermissionManagerfunction on(type: "mission", listener: MissionListener): number;新增
@ohos.app.ability.missionManagermissionManagerfunction off(type: "mission", listenerId: number, callback: AsyncCallback<void>): void;新增
@ohos.app.ability.missionManagermissionManagerfunction off(type: "mission", listenerId: number): Promise<void>;新增
@ohos.application.FormExtensionFormExtensiononCreate(want: Want): formBindingData.FormBindingData;废弃
@ohos.application.FormExtensionFormExtensiononCastToNormal(formId: string): void;废弃
@ohos.application.FormExtensionFormExtensiononUpdate(formId: string): void;废弃
@ohos.application.FormExtensionFormExtensiononVisibilityChange(newStatus: { [key: string]: number }): void;废弃
@ohos.application.FormExtensionFormExtensiononEvent(formId: string, message: string): void;废弃
@ohos.application.FormExtensionFormExtensiononDestroy(formId: string): void;废弃
@ohos.application.FormExtensionFormExtensiononShare?(formId: string): {[key: string]: any};废弃
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonAddForm(want: Want): formBindingData.FormBindingData;新增
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonCastToNormalForm(formId: string): void;新增
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonUpdateForm(formId: string): void;新增
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonChangeFormVisibility(newStatus: { [key: string]: number }): void;新增
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonFormEvent(formId: string, message: string): void;新增
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonRemoveForm(formId: string): void;新增
@ohos.app.form.FormExtensionAbilityFormExtensionAbilityonShareForm?(formId: string): {[key: string]: any};新增
@ohos.application.formHost.d.tsformHostfunction castTempForm(formId: string, callback: AsyncCallback<void>): void;废弃
@ohos.application.formHost.d.tsformHostfunction castTempForm(formId: string): Promise<void>;废弃
@ohos.app.form.formHost.d.tsformHostfunction castToNormalForm(formId: string, callback: AsyncCallback<void>): void;新增
@ohos.app.form.formHost.d.tsformHostfunction castToNormalForm(formId: string): Promise<void>;新增
@ohos.application.ServiceExtensionAbilityServiceExtensionAbilitydump(params: Array<string>): Array<string>;废弃
@ohos.app.ability.ServiceExtensionAbilityServiceExtensionAbilityonDump(params: Array<string>): Array<string>;新增
application/AbilityContextAbilityContextconnectAbility(want: Want, options: ConnectOptions): number;废弃
application/AbilityContextAbilityContextconnectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;废弃
application/AbilityContextAbilityContextdisconnectAbility(connection: number, callback: AsyncCallback<void>): void;废弃
application/AbilityContextAbilityContextdisconnectAbility(connection: number): Promise<void>;废弃
application/UIAbilityContextUIAbilityContextconnectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;新增
application/UIAbilityContextUIAbilityContextconnectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;新增
application/UIAbilityContextUIAbilityContextdisconnectServiceExtensionAbility(connection: number, callback: AsyncCallback<void>): void;新增
application/UIAbilityContextUIAbilityContextdisconnectServiceExtensionAbility(connection: number): Promise<void>;新增
application/ApplicationContextApplicationContextregisterAbilityLifecycleCallback(callback: AbilityLifecycleCallback): number;废弃
application/ApplicationContextApplicationContextunregisterAbilityLifecycleCallback(callbackId: number, callback: AsyncCallback<void>): void;废弃
application/ApplicationContextApplicationContextunregisterAbilityLifecycleCallback(callbackId: number): Promise<void>;废弃
application/ApplicationContextApplicationContextregisterEnvironmentCallback(callback: EnvironmentCallback): number;废弃
application/ApplicationContextApplicationContextunregisterEnvironmentCallback(callbackId: number, callback: AsyncCallback<void>): void;废弃
application/ApplicationContextApplicationContextunregisterEnvironmentCallback(callbackId: number): Promise<void>;废弃
application/ApplicationContextApplicationContexton(type: "abilityLifecycle", callback: AbilityLifecycleCallback): number;新增
application/ApplicationContextApplicationContextoff(type: "abilityLifecycle", callbackId: number, callback: AsyncCallback<void>): void;新增
application/ApplicationContextApplicationContextoff(type: "abilityLifecycle", callbackId: number): Promise<void>;新增
application/ApplicationContextApplicationContexton(type: "environment", callback: EnvironmentCallback): number;新增
application/ApplicationContextApplicationContextoff(type: "environment", callbackId: number, callback: AsyncCallback<void>): void;新增
application/ApplicationContextApplicationContextoff(type: "environment", callbackId: number): Promise<void>;新增
application/ServiceExtensionContextServiceExtensionContextconnectAbility(want: Want, options: ConnectOptions): number;废弃
application/ServiceExtensionContextServiceExtensionContextconnectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;废弃
application/ServiceExtensionContextServiceExtensionContextdisconnectAbility(connection: number, callback: AsyncCallback<void>): void;废弃
application/ServiceExtensionContextServiceExtensionContextdisconnectAbility(connection: number): Promise<void>;废弃
application/ServiceExtensionContextServiceExtensionContextconnectServiceExtensionAbility(want: Want, options: ConnectOptions): number;新增
application/ServiceExtensionContextServiceExtensionContextconnectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;新增
application/ServiceExtensionContextServiceExtensionContextdisconnectServiceExtensionAbility(connection: number, callback: AsyncCallback<void>): void;新增
application/ServiceExtensionContextServiceExtensionContextdisconnectServiceExtensionAbility(connection: number): Promise<void>;新增

你可能感兴趣的鸿蒙文章

harmony 鸿蒙分布式调度子系统ChangeLog

harmony 鸿蒙基础通信WIFI子系统ChangeLog

harmony 鸿蒙帐号子系统ChangeLog

harmony 鸿蒙定制子系统ChangeLog

harmony 鸿蒙位置服务子系统ChangeLog

harmony 鸿蒙多媒体子系统ChangeLog

harmony 鸿蒙事件通知子系统ChangeLog

harmony 鸿蒙用户IAM子系统Changelog

  • 所属分类: 后端技术
  • 本文标签: 软件 鸿蒙
  • 版权声明: 本文链接 https://seaxiang.com/blog/8ba20a1b731947dc84cbc89e061b9418