# Ability Kit简介

Ability Kit（程序框架服务）提供了应用程序开发和运行的应用模型。开发者可以基于应用模型，实现不同类型的应用组件，更加简单高效地完成应用生命周期管理、组件间交互、进程线程管理等业务逻辑，无需关注底层实现细节。

#### 使用场景

*   应用的多Module开发：应用可通过不同类型的Module（HAP、HAR、HSP）来实现应用的功能开发。其中，HAP用于实现应用的功能和特性，HAR与HSP用于实现代码和资源的共享。
*   应用内的交互：应用内的不同组件之间可以相互跳转。比如，在移动办公应用中，通过入口UIAbility组件启动视频会议的UIAbility组件。详见启动应用内的UIAbility组件。
*   应用间的交互：当前应用可以启动其他应用，来完成某个任务或操作。比如，在购物类应用中购买商品时，可以跳转到支付应用完成支付。详见应用间跳转。
*   应用的跨设备流转：通过应用的跨端迁移和多端协同，获得更好的使用体验。比如，在平板上播放的视频，迁移到智慧屏继续播放。详见自由流转。

#### 能力范围

*   提供应用进程创建和销毁、应用生命周期调度能力。
*   提供应用组件运行入口、应用组件生命周期调度、组件间交互等能力。
*   提供应用上下文环境、系统环境变化监听、组件生命周期监听等能力。
*   提供启动框架能力，详见启动框架。
*   提供意图框架能力，详见意图框架概述。
*   提供应用流转能力。
*   提供多包机制、共享包、应用信息配置等能力，详见应用程序包概述。
*   提供应用快捷方式能力，详见快捷方式。
*   提供程序访问控制能力，详见访问控制概述。
*   提供安全密码自动填充能力，详见密码自动填充服务概述。

#### 亮点/特征

1.  **UI与业务逻辑分离**
    
    从架构设计层面，规范开发者编写业务逻辑和UI交互分离的开发方式。
    
    *   从业务逻辑层到UI：开发者在Ability中完成核心业务逻辑，将数据通过绑定机制传递至UI框架。ArkUI基于声明式语法自动渲染视图，并在状态变更时触发UI更新。
    *   从UI到业务逻辑层：通过捕获用户在UI交互中的输入后，通过事件回调或状态绑定机制，将用户行为产生的数据反向同步至Ability框架。
2.  **支持应用组件级的跨端迁移和多端协同**
    
    Stage模型实现了应用组件与UI解耦。
    
    *   在跨端迁移场景下，系统在多设备的应用组件之间迁移数据/状态后，UI便可利用ArkUI的声明式特点，通过应用组件中保存的数据/状态恢复用户界面，便捷实现跨端迁移。
    *   在多端协同场景下，应用组件具备组件间通信的RPC调用能力，天然支持跨设备应用组件的交互。
3.  **支持多设备和多窗口形态**
    
    应用组件管理和窗口管理在架构层面解耦。
    
    *   便于系统对应用组件进行裁剪（无屏设备可裁剪窗口）。
    *   便于系统扩展窗口形态。
    *   在多设备（如桌面设备和移动设备）上，应用组件可使用同一套生命周期。
4.  **平衡应用能力和系统管控成本**
    
    Stage模型重新定义应用能力的边界，平衡应用能力和系统管控成本。
    
    *   提供特定场景（如服务卡片、输入法）的应用组件，以便满足更多的使用场景。
    *   规范化后台进程管理：为保障用户体验，Stage模型对后台应用进程进行了有序治理，应用程序不能随意驻留在后台，同时应用后台行为受到严格管理，防止恶意应用行为。

#### 与相关Kit的关系

ArkUI：在Ability Kit的UIAbility组件中，可以使用ArkUI提供的组件、事件、动效、状态管理等能力。

ArkTS：ArkTS提供了语言运行时相关能力。

#### 模拟器支持情况

本Kit支持模拟器开发，但与真机存在部分能力差异，具体如下：

*   不支持拉起垂类应用面板。
*   不支持以免安装方式拉起元服务。
*   不支持使用App Linking实现应用间跳转。
*   不支持使用Deep Linking拉起应用选择框。由于模拟器无应用选择框，当使用Deep Linking匹配到多个应用时，无法弹出应用选择框。
*   模拟器上支持安装未经签名的应用，同时针对使用受限开放的权限，将自动放行，不会进行权限授权校验。而真机上会对应用签名与权限授权状态进行校验。
*   不支持安装签名Profile类型为发布的应用。
*   在基于NDK开发的应用中，如果应用依赖的动态链接库（.so文件）与模拟器的CPU架构不兼容，模拟器将不支持该应用安装，详情请参考HarmonyOS ABI。