更新记录

1.0.0(2026-05-03) 下载此版本

初次提交


平台兼容性

uni-app(5.04)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS 鸿蒙
1.0.0 1.0.0 × × 1.0.0 1.0.0 5.1 1.0.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

laoqianjunzi-adb

Android 端 ADB 无线调试 UTS 插件。

实现说明

  • Android 侧使用 UTS + Kotlin 混编实现,核心连接与 ADB 协议能力来自内联的 Kadb 原生源码适配层。
  • 插件当前面向无线调试场景,推荐用于 Android 11+ 的无线配对与连接。
  • 插件内部会维护“已连接设备缓存”,get_devices() 返回的是当前插件进程里已经成功连接过的设备,而不是系统全量扫描结果。
  • 应用进程被系统回收后,设备缓存会丢失,需要重新执行 connectDevice();但已保存的配对证书会尽量复用。

推荐使用流程

  1. 在目标设备开启“无线调试”。
  2. 如设备需要配对,先调用 pairDevice(ip, pairPort, code)
  3. 再调用 connectDevice(ip, port) 建立连接。
  4. 连接成功后调用 get_devices() 获取当前缓存中的设备列表。
  5. 后续所有操作都使用列表中的 deviceId,通常是 ip:port
  6. 需要反复调试时,可调用 disconnectDevice(deviceId) 主动断开并移出缓存。

引入

import { adbCmd } from "@/uni_modules/laoqianjunzi-adb"

类型

type AdbDevice = {
  id: string
  status: 'offline' | 'device'
}

type AppItem = {
  pkg: string
  _isSys: boolean
}

方法

获取设备列表

/**
 * @description 获取当前插件连接缓存中的设备列表
 * @returns Promise<AdbDevice[]>
 */
adbCmd.get_devices()

配对设备

/**
 * @description 无线配对设备
 * @param ip string 设备 IP
 * @param port string 配对端口
 * @param code string 配对码
 * @returns Promise<boolean>
 */
adbCmd.pairDevice(ip, port, code)

连接设备

/**
 * @description 连接无线调试设备,成功后会写入插件设备缓存
 * @param ip string 设备 IP
 * @param port string 调试端口
 * @returns Promise<boolean>
 */
adbCmd.connectDevice(ip, port)

断开缓存设备

/**
 * @description 断开并移除缓存中的设备连接
 * @param id string 设备 ID
 * @returns Promise<boolean>
 */
adbCmd.disconnectDevice(id)

获取设备信息

/**
 * @description 读取设备属性信息
 * @param id string 设备 ID
 * @returns Promise<UTSJSONObject>
 */
adbCmd.getDeviceInfo(id)

模拟按键

/**
 * @description 发送按键事件
 * @param id string 设备 ID
 * @param code number 按键码
 * @returns Promise<boolean>
 */
adbCmd.sendKeyEvent(id, code)

模拟滑动

/**
 * @description 执行滑动手势
 * @param id string 设备 ID
 * @param x1 number 起点 X
 * @param y1 number 起点 Y
 * @param x2 number 终点 X
 * @param y2 number 终点 Y
 * @returns Promise<boolean>
 */
adbCmd.sendSwipeEvent(id, x1, y1, x2, y2)

模拟点击

/**
 * @description 执行点击手势
 * @param id string 设备 ID
 * @param x number X 坐标
 * @param y number Y 坐标
 * @returns Promise<boolean>
 */
adbCmd.sendTap(id, x, y)

获取屏幕分辨率

/**
 * @description 获取当前设备分辨率
 * @param id string 设备 ID
 * @returns Promise<number[]>
 */
adbCmd.getResolution(id)

发送文本

/**
 * @description 发送文本输入
 * @param id string 设备 ID
 * @param text string 文本
 * @returns Promise<boolean>
 */
adbCmd.sendText(id, text)

屏幕截图

/**
 * @description 让设备截图,并返回设备上的保存路径
 * @param id string 设备 ID
 * @returns Promise<string>
 */
adbCmd.screenshot(id)

拉取文件

/**
 * @description 从设备拉取文件到本地目录或 content uri
 * @param id string 设备 ID
 * @param path string 远程文件路径
 * @param dir string 本地目录路径或 content uri
 * @returns Promise<boolean>
 */
adbCmd.pullFile(id, path, dir)

推送文件

/**
 * @description 推送本地文件到设备目录
 * @param id string 设备 ID
 * @param path string 本地文件路径或 content uri
 * @param dir string 远程目录
 * @returns Promise<boolean>
 */
adbCmd.pushFile(id, path, dir)

获取应用列表

/**
 * @description 获取应用列表
 * @param id string 设备 ID
 * @returns Promise<AppItem[]>
 */
adbCmd.getAppList(id)

安装应用

/**
 * @description 安装 APK
 * @param id string 设备 ID
 * @param path string APK 本地路径或 content uri
 * @returns Promise<boolean>
 */
adbCmd.installApp(id, path)

卸载应用

/**
 * @description 卸载应用
 * @param id string 设备 ID
 * @param name string 应用包名
 * @returns Promise<boolean>
 */
adbCmd.uninstallApp(id, name)

限制说明

  • 当前只实现了 Android 端原生能力,其他平台目录仍为占位实现。
  • get_devices() 不是局域网发现,也不是 USB 枚举,只返回插件已连接缓存中的设备。
  • deviceId 建议直接使用 connectDevice() 成功后出现在列表中的值,不要手写猜测。
  • sendText() 底层依赖 adb shell input text,英文、数字、基础符号更稳定;中文、换行、特殊字符在不同 ROM 上可能表现不一致。
  • pairDevice() 依赖无线调试配对能力,通常要求 Android 11 及以上。
  • 文件相关接口支持普通文件路径,也兼容部分 content:// 场景;其中 pullFile() 更推荐传目录型 tree uri
  • 截图接口当前返回的是设备端保存路径,不会自动同步到本地。

隐私、权限声明

  1. 本插件需要申请的系统权限列表:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 本插件采集的数据、发送的服务器地址、以及数据用途说明: 插件不采集任何数据。

  2. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: 无。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。