# @devicefarmer/minitouch-prebuilt 中文文档

规范地址：https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/

版本：1\.3\.3
npm 元数据更新时间：2026-11-07T15:50:47.540Z
中文译文更新时间：2026-11-12T03:23:53.398Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40devicefarmer/minitouch-prebuilt
原文对照：https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/?lang=original
项目主页：https://github.com/DeviceFarmer/minitouch#readme
源码仓库：https://github.com/DeviceFarmer/minitouch

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：213 kB，12 个文件
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2020-05-16T13:08:59.669Z
- 最新版本发布：2026-11-07T15:50:47.178Z
- 近 30 天下载量：4260（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 3 个）

## 中文简介

预建的二进制迷你口袋.

## 安装

```sh
npm install @devicefarmer/minitouch-prebuilt
```

也可以使用：`pnpm add @devicefarmer/minitouch-prebuilt`、`yarn add @devicefarmer/minitouch-prebuilt`、`bun add @devicefarmer/minitouch-prebuilt`

## README

# 小型触摸

Minitouch提供了一个套接字接口来触发Android设备上的多点触摸事件和手势. 如果开始于 [亚行](http://developer.android.com/tools/help/adb.html) 虽然任何版本都应该奏效。 唯一的例外是SDK 20 (Android Wear),它确实需要根. 我们测试的最低SDK水平为10(即Android 2.3.3.

它在HTML5多触摸事件上特别有效,与Android不同 [猴类](http://developer.android.com/tools/help/monkey.html) 工具,允许您访问整个屏幕(包括任何软件按钮).

## 大楼

所需建筑 [印度](https://developer.android.com/tools/sdk/ndk/index.html),并已知至少与NDK修订版10(2014年7月)合作. _注意NDK 15不再支持Android SDK 14级以下的任何东西,这意味着二进制可能或不会在旧设备上工作(如Android 2.3)._

我们包括 [利贝夫德夫](http://www.freedesktop.org/wiki/Software/libevdev/) 作为Git子模块, 所以首先要确定你已经拿了它.

```
git submodule init
git submodule update
```

这么说来,这只是一个问题 引用 `ndk-build`。 。 。 .

```
ndk-build
```

你现在应该有二进制了 `./libs`。 。 。 .

## 运行

你需要这样 [构建](https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/#readme-building) 先说.

### 对Android 10和上

由于新的安全政策,Minitouch默认无法处理Android 10. 工作范围是将触摸命令转发给STFService. 如果您正在使用 minitouch 独立( 没有 STF ) , 请在运行 minitouch 之前, 注意操作此服务和代理 。 关于如何做到这一点的说明 [这里](https://github.com/openstf/STFService.apk#running-the-service)。 。 。 .

### 运行迷你触摸

然后可以使用包含 [运行。 sh](https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/run.sh) 在设备上运行右二进制的脚本 。 如果您有多个设备连接, 设置 `ANDROID_SERIAL` 在运行脚本之前.

要手动运行, 您必须首先找出您的设备支持的 ABI :

```bash
ABI=$(adb shell getprop ro.product.cpu.abi | tr -d '\r')
```

_请注意,由于Android shell总是用CRLF来结束行,所以你必须像上面一样去掉CR,否则其他命令不会正常工作._

_请注意,如果你有多个设备连接,设置 `$ANDROID_SERIAL` 这会让事情变得容易一些,因为你不需要具体说明 `-s <serial>` 每次选择._

现在,将相应的二进制推入设备:

```bash
adb push libs/$ABI/minitouch /data/local/tmp/
```

请注意,对于 SDK < 16, 您必须使用 `minitouch-nopie` 未执行的可执行文件 [派伊(PIE)](http://en.wikipedia.org/wiki/Position-independent_code#Position-independent_executables) 支助。 检查 [运行。 sh](https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/run.sh) 用于脚本示例.

此时,检查一下用法可能是有益的:

```bash
adb shell /data/local/tmp/minitouch -h
```

目前,这种产出应大致如下:

```
Usage: /data/local/tmp/minitouch [-h] [-d <device>] [-n <name>] [-v] [-i] [-f <file>]
  -d <device>: Use the given touch device. Otherwise autodetect.
  -n <name>:   Change the name of of the abtract unix domain socket. (minitouch)
  -v:          Verbose output.
  -i:          Uses STDIN and doesn't start socket.
  -f <file>:   Runs a file with a list of commands, doesn't start socket.
  -h:          Show help.
```

因此,我们可以简单地在没有任何选项的情况下运行二进制,它将尝试检测一个合适的设备,并开始在抽象的unix域插座上收听. 或者,你可以开始微调 `-i` 选项和输入命令,或 `-f <file>` 从文件中读取命令.

```bash
adb shell /data/local/tmp/minitouch
```

如果您选择使用套接字, 您需要单独连接 。 除非有错误消息,二进制退出,否则我们现在应该在设备上打开一个服务器. 现在,我们只需要创造一个本地的前进,这样我们才能与之连接.

```bash
adb forward tcp:1111 localabstract:minitouch
```

现在可以使用本地端口连接到套接字. 注意目前 **一次只支持一个连接 .** 这主要是因为否则提交被破坏的事件流太容易了,混淆了驱动程序,并可能冻结设备直到重启(顺便说一句,你最有可能与 `adb reboot` (因为屏幕没有反应) 无论如何,让我们连接.

```bash
nc localhost 1111
```

下一节解释如何与"迷你"互动.

## 使用量

假设您现在已打开连接到小接头套接头, 或者您正在运行 stdin/ file 模式下的小接头 。 如果没有,就跟着 [指令](https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/#readme-running) 见上文.

迷你管协议基于LF-相隔行. 每个行是一个单独的命令,每个行以一个指定命令类型的ASCII字母开始. 然后遵循与命令相分离的参数.

当您打开连接到插座时, 您会收到一个带有元数据的信头, 您需要从插座读取。 除此以外,将没有任何答复.

当连接关闭( 或输入文件结束, 以 stdin/ file 模式) 时, minitouch 将仍然下移的任何联系人抬起, 好像您已经发送过 `r`。这仅适用于微触控驱动触摸设备本身,而不是当它向 STF Service 转发命令时 `minitouchagent`。 。 。 .

### 可从套接字读取

#### `v <version>`

示例输出 : `v 1`

协议版. 此行被保证在输出中位居第一. 版本之间的参数布局可能会有变化,所以您可能想要检查您的代码是否支持此版本 .

#### `^ <max-contacts> <max-x> <max-y> <max-pressure>`

示例输出 : `^ 2 320 480 255`

如触摸设备所报告,这给你上方的参数范围。 如果您使用更大的值, 您很可能混淆驱动程序( 可能冻结屏幕, 需要重启) 或者该值会被忽略 .

同样重要的是要注意,最大X和Y坐标可能,但通常并不匹配显示大小. 你需要找出一个良好的方法来映射 显示坐标,如果需要的话, 可能通过使用比例的屏幕坐标.

#### `$ <pid>`

示例输出 : `$ 9876`

这是迷你触摸过程的短片。 如果您想要杀死进程, 有用 .

### 可写入套接字

#### `c`

示例输入 : `c`

提交当前更改的触摸集, 使其在屏幕上播放 。 请注意,在你做出承诺之前,不会发生任何明显的事件.

不需要委员会列出所有活动联系人 。 与上一州相变已足.

多接触触碰也一样 联系人可能单独行动,甚至同样行动。 如果一个联系人移动,则不需要其他联系人.

单项承诺的接触顺序也不重要。 例如,您可以在联系人0之前列出联系人5.

但请注意,您不能有一个以上 `d`, (中文(简体) ), `m` 或者说 `u` _相同项目 `<contact>`_ 在一个承诺.

#### `r`

示例输入 : `r`

通过创建适当的触摸器重置当前触摸集的时态 `u` 事件,然后犯下。 由于事件序列无效可能导致屏幕被冻结,如果您对事件的完整性有任何疑问,您应当呼吁重置. 例如,两个 `touchstart` 同一联系人的事件非常可疑,很可能意味着你失去了一个 `touchend` 不知何故的事件.

我们试图自动丢弃明显不合秩序的事件,但有时这还不够.

如果屏幕被冻结,你就必须重启设备. 仔细使用不会发生这种情况.

#### `d <contact> <x> <y> <pressure>`

示例输入 : `d 0 10 10 50`

将触摸到的联系人列表 `<contact>` 时间 `<x>,<y>` 与 `<pressure>` 下一个任务的压力.

您不能有一个以上 `d`, (中文(简体) ), `m` 或者说 `u` _相同项目 `<contact>`_ 在一个承诺.

#### `m <contact> <x> <y> <pressure>`

示例输入 : `m 0 10 10 50`

安排联系人的触摸动作 `<contact>` 时间 `<x>,<y>` 与 `<pressure>` 下一个任务的压力.

您不能有一个以上 `d`, (中文(简体) ), `m` 或者说 `u` _相同项目 `<contact>`_ 在一个承诺.

#### `u <contact>`

示例输入 : `u 0`

计划触摸联系人 `<contact>`如果您需要联系人先移动,请使用组合 `m` 财务报告和审定财务报表 `u` 由承诺分离.

您不能有一个以上 `d`, (中文(简体) ), `m` 或者说 `u` _相同项目 `<contact>`_ 在一个承诺.

#### `w <ms>`

示例输入 : `w 50`

马上等 `<ms>` 毫秒长. 将不执行队列或做其他任何事情.

### 实例

10,10,50 压力使用单一接触.

```
d 0 10 10 50
c
u 0
c
```

长打(10, 10),50个压力使用单接接.

```
d 0 10 10 50
c
<wait in your own code>
u 0
c
```

搭载(10,10)和(20,20)同时使用两个接头的50个压力.

```
d 0 10 10 50
d 1 20 20 50
c
u 0
u 1
c
```

接住(10,10),按住(10),再按住(20,20),再按住(20,20),再放出第一次接触,最后放出第二次接触.

```
d 0 10 10 50
c
<wait in your own code>
d 1 20 20 50
c
<wait in your own code>
u 0
c
<wait in your own code>
u 1
c
```

使用单接方式从(0,0)到(100,0)刷取. 你需要等待 之间承诺 在你自己的代码以慢下来.

```
d 0 0 0 50
c
m 0 20 0 50
c
m 0 40 0 50
c
m 0 60 0 50
c
m 0 80 0 50
c
m 0 100 0 50
c
u 0
c
```

平克有从(0,100)到(50,50)和(100,0)到(50,50)两个联系人. 你需要等待 之间承诺 在你自己的代码以慢下来.

```
d 0 0 100 50
d 1 100 0 50
c
m 0 10 90 50
m 1 90 10 50
c
m 0 20 80 50
m 1 80 20 50
c
m 0 20 80 50
m 1 80 20 50
c
m 0 30 70 50
m 1 70 30 50
c
m 0 40 60 50
m 1 60 40 50
c
m 0 50 50 50
m 1 50 50 50
c
u 0
u 1
c
```

同样的,但更混乱(或自然)的订单.

```
d 1 100 0 50
c
d 0 0 100 50
c
m 1 90 10 50
m 0 10 90 50
c
m 0 20 80 50
c
m 1 80 20 50
c
m 0 20 80 50
m 1 80 20 50
c
m 0 30 70 50
c
m 1 70 30 50
c
m 1 60 40 50
c
m 0 40 60 50
c
m 0 50 50 50
m 1 50 50 50
c
u 0
c
u 1
c
```

## 捐款

见 [捐款额](https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/CONTRIBUTING.md)。 。 。 .

## 许可证

见 [自由主义](https://npmcn.com/package/%40devicefarmer/minitouch-prebuilt/LICENSE)。 。 。 .

版权所有 网络代理公司,所有权利保留.

## 常见问题

### @devicefarmer/minitouch-prebuilt 是什么？

预建的二进制迷你口袋\.

### 如何安装 @devicefarmer/minitouch-prebuilt？

在项目目录运行 npm install @devicefarmer/minitouch-prebuilt，或使用 pnpm add / yarn add / bun add。

### @devicefarmer/minitouch-prebuilt 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/devicefarmer\_\_minitouch-prebuilt 是否存在。

### @devicefarmer/minitouch-prebuilt 可以商用吗？

@devicefarmer/minitouch-prebuilt 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @devicefarmer/minitouch-prebuilt 的下载量有多少？

根据 npm 官方下载统计，@devicefarmer/minitouch-prebuilt 在 2026/10/12 – 2026/11/10 这 30 天内被下载 4,260 次，日均约 142 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @devicefarmer/minitouch-prebuilt 还在维护吗？

最新版本 1\.3\.3 发布于 2026/11/07（4 天前）；至今共发布 4 个版本，其中过去 12 个月发布了 3 个；首次发布于 2020/05/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

