# WMPF 技术原理

WMPF 是微信小程序硬件框架 ( WeChat Mini-Program Framework ) 的简称，该运行环境能让硬件在脱离微信客户端的情况下运行微信小程序，目前已支持 Android ，未来会支持到更多的平台。

想要顺利地运行小程序，你需要安装两个 apk ，并使其同时运行：

* WMPF Service apk：小程序框架的运行环境，又称 WMPF 框架，以 apk 的方式运行在安卓系统中，由微信侧提供
* WMPF Client apk：Service 的调用方，又称 Launcher ，以 apk 的方式运行在安卓系统中，是小程序的容器。

Client 可以作为设备的“桌面”，用户可以从“桌面”启动小程序或者 App 。当用户点击“桌面上”的小程序入口（你可以自行定义入口样式），Client 就会触发 Service 调起对应的小程序。

## WMPF 合作角色

完整的 WMPF 应用包括微信小程序、WMPF Service 、WMPF Client 、设备操作系统以及相关的驱动程序，分别由小程序开发者、硬件设备开发者和设备软件开发者进行开发：

![](https://res8.wxqcloud.qq.com.cn/wxdoc/fe6b36a8-148d-4d10-9005-3f320179e8d4.png) 

如图所示，WMPF 接入方可以分为三种：

### 硬件设备开发者

硬件设备开发者一般是指设备的研发和生产商，为下游客户提供具备合理的硬件功能、操作系统（ Android ）和驱动软件的硬件设备。

如果你是一家智能跑步机的生产商，你可以通过 WMPF 来结合小程序的能力，从而创造出属于你的硬件设备的独特能力，例如结合屏幕画面控制跑步机的速度和坡度，实现趣味场景跑步能力；或者和另一台智能跑步机上运动的微信好友完成竞速挑战。

如果你专精于硬件的研发和生产，不熟悉 Android 开发，可以寻找其他设备软件开发者来帮助你完成 WMPF Client 的开发。但必须配合软件开发者对设备进行注册。

如果你的团队有 Android 开发工程经验，也可尝试自行开发 WMPF Client 。

### 设备软件开发者

WMPF Client 又称 WMPF Launcher ，以 apk 的方式运行在安卓系统中，是小程序的容器。开发者需要先完成[详细接入流程](process)中的所有步骤，然后再参考“[快速上手](quick-start)”部分完成 WMPF Client 的开发。

开发者需要在 Client 中放置小程序的入口（ icon 或卡片 ），当用户点击触发时调用对应的接口启动 WMPF Service 来运行小程序。开发者在完成相关注册流程后，可以在「微信终端合作平台」上绑定所需使用的小程序。只有经过绑定的小程序才可以通过 WMPF 启动。

开发者如果在 Client apk 上删除了某个小程序的入口（ icon 或卡片），用户就无法启动该小程序了；因此，开发者可以通过放置入口的方式来允许或禁止用户启动某个小程序。

关于未在小程序中定义的特殊安卓接口，部分常用硬件（如[打印机](printer)、[设备 SN 码](device-sn)）可以直接进行接口调用，与小程序完成通信；其他未定义的外接硬件，也可通过[WMPF 调用通道](invoke-channel)实现小程序和硬件的通信。

一般而言，在「微信终端合作平台」上绑定过的小程序可以运行在 WMPF 设备上。但已经发布到微信上使用的小程序已针对手机屏幕进行了 UI 设计的适配，如果你的设备屏幕尺寸、比例、分辨率、方向和手机差异较大，直接运行小程序的体验可能较差；可以通过专用接口调整小程序的显示区域，或者寻找合适的小程序开发者开发适应屏幕要求的小程序。

### 小程序开发者

小程序开发者可以将已在微信上发布的小程序授权给 WMPF 硬件使用，也可以针对硬件的特殊需要，定制开发专用小程序。小程序开发者若不愿意被 WMPF 硬件使用，可使用小程序登录[微信公众平台](https://mp.weixin.qq.com/)，然后前往「设置 - 基本设置 - 隐私与安全」关闭相关功能。

在基于 WMPF 硬件开发自己的小程序时，开发者可以通过调用与 `wx.xxx` 相似的 `wmpf.xxx` 接口，  完成小程序与 WMPF Client 端的通信，从而实现在 WMPF 下特有的功能。

WMPF 硬件具备部分手机未支持的能力，也有少量已在手机上成熟支持的接口在 WMPF 尚未稳定支持，开发者需要阅读[WMPF 小程序能力说明](description)了解开发规范。

## 注意

在理解 WMPF 技术原理之后，还应该清楚 WMPF 中的各种名词概念。详细文档请访问：[名词解释](glossary)。
