@devicefarmer/adbkit-monkey

中文文档
2.0.0发布于 2026/10/25Apache-2.0TypeScriptCommonJS零依赖构建来源已验证近 30 天下载 270.9万

Android猴子工具的节点界面.js.

中文使用文档
文档目录10 节
  1. 开始
  2. 实例
  3. API 密码
  4. 猴头
  5. 客户端
  6. 阿庇语Name
  7. 多个
  8. 更多信息
  9. 捐款
  10. 许可证

ad-猴

ad-猴 页:1 节点.js 用于与 Android 合作的界面 monkey 工具。尽管没有记录,它们可以以 TCP 模式启动猴子程序 --port 参数。 在此模式下,它接受 命令范围 这可以用来以非随机方式与UI互动. 此模式也用于内部 monkeyrunner 工具,尽管文档声称与猴子工具无关.

开始

通过国家预防机制安装:

npm install --save @devicefarmer/adbkit-monkey

adbkit-monkey需要节点.js 22或后. 它以 TypeScript 写成,并以 CommonJS JavaScript 的形式发布,并附有类型声明,所以它与两者合作 require() 和类型脚本.

实例

以下例子假设猴子已经在运行(通过 adb shell monkey --port 1080)和一个端口转发(adb forward tcp:1080 tcp:1080)已经建立.

按主按钮

var assert = require('assert');
var monkey = require('@devicefarmer/adbkit-monkey');

var client = monkey.connect({ port: 1080 });

client.press(3 /* KEYCODE_HOME */, function(err) {
  assert.ifError(err);
  console.log('Pressed home button');
  client.end();
});

拖出通知栏

var assert = require('assert');
var monkey = require('@devicefarmer/adbkit-monkey');

var client = monkey.connect({ port: 1080 });

client.multi()
  .touchDown(100, 0)
  .sleep(5)
  .touchMove(100, 20)
  .sleep(5)
  .touchMove(100, 40)
  .sleep(5)
  .touchMove(100, 60)
  .sleep(5)
  .touchMove(100, 80)
  .sleep(5)
  .touchMove(100, 100)
  .sleep(5)
  .touchUp(100, 100)
  .sleep(5)
  .execute(function(err) {
    assert.ifError(err);
    console.log('Dragged out the notification bar');
    client.end();
  });

获取显示大小

var assert = require('assert');
var monkey = require('@devicefarmer/adbkit-monkey');

var client = monkey.connect({ port: 1080 });

client.getDisplayWidth(function(err, width) {
  assert.ifError(err);
  client.getDisplayHeight(function(err, height) {
    assert.ifError(err);
    console.log('Display size is %dx%d', width, height);
    client.end();
  });
});

类型文本

请注意,您应该首先手动聚焦文本字段.

var assert = require('assert');
var monkey = require('@devicefarmer/adbkit-monkey');

var client = monkey.connect({ port: 1080 });

client.type('hello monkey!', function(err) {
  assert.ifError(err);
  console.log('Said hello to monkey');
  client.end();
});

API 密码

猴头

猴子. 连接( 选项)

用途 网易连通( ) 打开新的 TCP 连接到猴子。 结合时有用 adb forward。 。 。 .

  • 选项 任何选项 Net.connect() 接受这个建议.
  • 返回:新猴子 Client 举个例子.

猴子. 连接Stream( 流)

将猴子客户端附加到现有的猴子协议流中.

  • 流线 猴子协议 Stream。 。 。 .
  • 返回:新猴子 Client 举个例子.

客户端

执行 Api详情见下文.

活动

现有活动如下:

  • 错误 (rr) (中文(简体) ) 发生错误时被允许 .
    • 错误 一个 Error。 。 。 .
  • 结束 溪出后出.
  • 结束 溪出后出.

客户端. end ()

结束基础流/连接.

  • 回归: Client 举个例子.

客户端. multi ()

返回新的 API 包装器, 缓冲命令同时发送, 而不是单独发送 。 使用时 api.sleep(),允许执行简单的手势.

  • 回返:一个新的 Multi 举个例子 见 Multi 见下文.

客户端. send( 命令, 回调)

向猴子发送原始协议命令.

  • 命令 要发送的命令。 何时 String,发出单一命令。 何时 Array,立即发送一系列命令.
  • 回调( err, 值, 命令) 当猴子响应命令时呼叫。 如果发送了多个命令,每个命令都会召回一次.
    • 错误 null 当成功的时候, Error 否则.
    • 价值 反应值,如果有的话.
    • 命令 命令是回应的.
  • 回归: Client 举个例子.

阿庇语Name

猴子 API 执行 Client 财务报告和审定财务报表 Multi。 。 。 .

api.done( 回调)

关闭当前猴子会话并允许连接新会话 .

  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.flip 关闭( 回调)

模拟关闭键盘.

  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.flip 打开( 回调)

模拟打开键盘.

  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.get(名称、召回)

获得变量的值。 使用 api.list() 以获取所支持的变量列表.

  • 名称 变相名.
  • 回调( err, 值) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
    • 价值 变量的值 .
  • 回归: Api 执行实例.

api.get AmCurrent 动作( 回调)

别名 api.get('am.current.action', callback)。 。 。 .

api.get AmCurrentCategores( 回调)

别名 api.get('am.current.categories', callback)。 。 。 .

api.get AmCurrent CompClass( 回调)

别名 api.get('am.current.comp.class', callback)。 。 。 .

api.get AmCurrent 压缩包( 回调)

别名 api.get('am.current.comp.package', callback)。 。 。 .

api.geet CurrentData( 回调)

别名 api.get('am.current.data', callback)。 。 。 .

api.get AmCurrent 包( 回调)

别名 api.get('am.current.package', callback)。 。 。 .

api.get BuildBoard( 召回)

别名 api.get('build.board', callback)。 。 。 .

api.get Build Brand( 回调)

别名 api.get('build.brand', callback)。 。 。 .

api.get BuildCpuAbi( 回调)

别名 api.get('build.cpu_abi', callback)。 。 。 .

api.get BuildDevice( 回调)

别名 api.get('build.device', callback)。 。 。 .

api.get BuildDisplay( 回调)

别名 api.get('build.display', callback)。 。 。 .

api.get BuildFingerprint (召回) (中文(简体) )

别名 api.get('build.fingerprint', callback)。 。 。 .

api.get BuildHost( 回调)

别名 api.get('build.host', callback)。 。 。 .

api.get 构建 Id( 回电)

别名 api.get('build.id', callback)。 。 。 .

api.get 构建制造商(召回)

别名 api.get('build.manufacturer', callback)。 。 。 .

api.get Build Model( 回调)

别名 api.get('build.model', callback)。 。 。 .

api.get Build Product(召回) (中文(简体) )

别名 api.get('build.product', callback)。 。 。 .

api.get Build Tags( 回调)

别名 api.get('build.tags', callback)。 。 。 .

api.get BuildType( 回调)

别名 api.get('build.type', callback)。 。 。 .

api.get Build User( 回调) (调用)

别名 api.get('build.user', callback)。 。 。 .

api.get BuildVersion 代码名( 回调)

别名 api.get('build.version.codename', callback)。 。 。 .

api.get BuildVersion 递增(召回)

别名 api.get('build.version.incremental', callback)。 。 。 .

api.get BuildVersion 释放(召回)

别名 api.get('build.version.release', callback)。 。 。 .

api.get BuildVersionSdk(回调)

别名 api.get('build.version.sdk', callback)。 。 。 .

api.get ClockMillis( 回调)

别名 api.get('clock.millis', callback)。 。 。 .

api.get 时钟时间( 回调)

别名 api.get('clock.realtime', callback)。 。 。 .

api.get 时钟升起时间( 回调)

别名 api.get('clock.uptime', callback)。 。 。 .

api.get Display 敏感度( 回调)

别名 api.get('display.density', callback)。 。 。 .

api. getDisplayHeight( 回调)

别名 api.get('display.height', callback)。请注意,高度可能排除任何虚拟主按钮行.

api.getDisplayWidth(回调)

别名 api.get('display.width', callback)。 。 。 .

api.keyDown( 键代码, 回调)

发送下键事件 。 应该与 api.keyUp()。注意: api.press() 自动执行两个事件.

  • 键代码 这个 密钥代码。所有猴子都支持数字密钥代码,一些猴子支持从密钥名称自动转换到密钥代码(例如. 'home' 改为 KEYCODE_HOME) (中文(简体) ). 但这对数字密钥是行不通的。 最便携的方法就是简单地使用数字密钥代码.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.keyUp( 键代码, 回调)

发送密钥事件 。 应该与 api.keyDown()。注意: api.press() 自动执行两个事件.

  • 键代码 见 api.keyDown()。 。 。 .
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.list( 回调)

列表支持的变量 .

  • 调用( err, vars) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
    • 火星 一组支持的可变名称,用于 api.get()。 。 。 .
  • 回归: Api 执行实例.

api.press( 键代码, 回调)

发送密钥新闻事件 .

  • 键代码 见 api.keyDown()。 。 。 .
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.quit( 回调)

关闭当前猴子会话并退出猴子.

  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.sleep( ms, 回调)

睡眠的时间给定。 可以用来模拟手势.

  • 分钟 多少毫秒的睡眠时间.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.tap(x,y,回调)

给定坐标.

  • 页:1 X坐标.
  • 尔 Y坐标.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.touchDown( x, y, 回调)

在给定坐标上发送一个触地下移事件.

  • 页:1 X坐标.
  • 尔 Y坐标.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.touchMove(x,y,回调)

在给定坐标上发送触摸移动事件.

  • 页:1 X坐标.
  • 尔 Y坐标.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.touchUp(x,y,回调)

在给定坐标上发送触摸事件 .

  • 页:1 X坐标.
  • 尔 Y坐标.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api. trackball( x, y, 回调)

在给定坐标上发送轨道球事件.

  • 页:1 X坐标.
  • 尔 Y坐标.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.type(文本,回调)

键入给定文本.

  • 文本 文本 String。请注意,只有字符 密钥代码 可输入存在。 也注意到正在使用的任何综合海洋生态系统可能改变或不会改变案文.
  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

api.wake( 召回)

从睡眠中唤醒设备并允许用户输入.

  • 回调( err) 猴子回应时打来的.
    • 错误 null 当成功的时候, Error 否则.
  • 回归: Api 执行实例.

多个

缓冲 Api 命令并同时交付,以更好地控制时间.

全部执行 Api 方法,但没有最后 callback 参数.

multi. execut( 召回)

发送所有缓冲命令 .

  • 回调( err, 值) 当猴子响应了所有命令(即只在结尾一次)时调用.
    • 错误 null 当成功的时候, Error 否则.
    • 数值 所有响应值的数组, 与单个相同 Api 回应.

更多信息

捐款

见 捐款额。 。 。 .

许可证

见 自由主义。 。 。 .

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

版本与发布记录

@devicefarmer/adbkit-monkey 共发布 5 个版本,首次发布于 2020/05/16;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.0latest2026/10/2518 天前
1.2.12022/06/054 年前
1.2.02021/09/225 年前
1.1.02021/03/085 年前
1.0.12020/05/166 年前

关于 @devicefarmer/adbkit-monkey 的常见问题

@devicefarmer/adbkit-monkey 是什么?

Android猴子工具的节点界面.js.

如何安装 @devicefarmer/adbkit-monkey?

在项目目录运行 npm install @devicefarmer/adbkit-monkey,或使用 pnpm add / yarn add / bun add。

@devicefarmer/adbkit-monkey 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@devicefarmer/adbkit-monkey 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@devicefarmer/adbkit-monkey 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@devicefarmer/adbkit-monkey 可以商用吗?

@devicefarmer/adbkit-monkey 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@devicefarmer/adbkit-monkey 的下载量有多少?

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

@devicefarmer/adbkit-monkey 还在维护吗?

最新版本 2.0.0 发布于 2026/10/25(18 天前);至今共发布 5 个版本,其中过去 12 个月发布了 1 个;首次发布于 2020/05/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。