# Ability Kit简介

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

## 使用场景

* 应用的多Module开发：应用可通过不同类型的Module（[HAP](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/hap-package)、[HAR](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/har-package)、[HSP](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/in-app-hsp)）来实现应用的功能开发。其中，HAP用于实现应用的功能和特性，HAR与HSP用于实现代码和资源的共享。
* 应用内的交互：应用内的不同组件之间可以相互跳转。比如，在移动办公应用中，通过入口UIAbility组件启动视频会议的UIAbility组件。详见[启动应用内的UIAbility组件](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/uiability-intra-device-interaction)。
* 应用间的交互：当前应用可以启动其他应用，来完成某个任务或操作。比如，在购物类应用中购买商品时，可以跳转到支付应用完成支付。详见[应用间跳转](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/link-between-apps-overview)。
* 应用的跨设备流转：通过应用的跨端迁移和多端协同，获得更好的使用体验。比如，在平板上播放的视频，迁移到智慧屏继续播放。详见[自由流转](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-hopping)。

## 能力范围

* 提供应用进程创建和销毁、应用生命周期调度能力。
* 提供应用组件运行入口、应用组件生命周期调度、组件间交互等能力。
* 提供应用上下文环境、系统环境变化监听、组件生命周期监听等能力。
* 提供启动框架能力，详见[启动框架](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-startup)。
* 提供意图框架能力，详见[意图框架概述](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/insight-intent-overview)。
* 提供应用流转能力。
* 提供多包机制、共享包、应用信息配置等能力，详见[应用程序包概述](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-package-overview)。
* 提供应用快捷方式能力，详见[快捷方式](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/typical-scenario-configuration)。
* 提供程序访问控制能力，详见[访问控制概述](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/access-token-overview)。
* 提供安全密码自动填充能力，详见[密码自动填充服务概述](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/passwordvault-overview)。

## 亮点/特征

1. **UI与业务逻辑分离**

   从架构设计层面，规范开发者编写业务逻辑和UI交互分离的开发方式。
   * 从业务逻辑层到UI：开发者在Ability中完成核心业务逻辑，将数据通过绑定机制传递至UI框架。ArkUI基于声明式语法自动渲染视图，并在状态变更时触发UI更新。
   * 从UI到业务逻辑层：通过捕获用户在UI交互中的输入后，通过事件回调或状态绑定机制，将用户行为产生的数据反向同步至Ability框架。
2. **支持应用组件级的跨端迁移和多端协同**

   [Stage模型](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ability-terminology#stage模型)实现了应用组件与UI解耦。
   * 在跨端迁移场景下，系统在多设备的应用组件之间迁移数据/状态后，UI便可利用ArkUI的声明式特点，通过应用组件中保存的数据/状态恢复用户界面，便捷实现跨端迁移。
   * 在多端协同场景下，应用组件具备组件间通信的RPC调用能力，天然支持跨设备应用组件的交互。
3. **支持多设备和多窗口形态**

   应用组件管理和窗口管理在架构层面解耦。
   * 便于系统对应用组件进行裁剪（无屏设备可裁剪窗口）。
   * 便于系统扩展窗口形态。
   * 在多设备（如桌面设备和移动设备）上，应用组件可使用同一套生命周期。
4. **平衡应用能力和系统管控成本**

   Stage模型重新定义应用能力的边界，平衡应用能力和系统管控成本。
   * 提供特定场景（如服务卡片、输入法）的应用组件，以便满足更多的使用场景。
   * 规范化后台进程管理：为保障用户体验，Stage模型对后台应用进程进行了有序治理，应用程序不能随意驻留在后台，同时应用后台行为受到严格管理，防止恶意应用行为。

## 与相关Kit的关系

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

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

## 模拟器支持情况

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

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

