当前位置: 首页 > news >正文

Lua ADB 接口文档

adb 源码的基础上封装了一个lua访问adb的接口文档,以下是adb基本操作接口

Lua ADB 接口文档

模块引入

local luaadb = require("luaadb")  -- 引入 ADB 模块
local currentdevice = "192.168.1.81:5555"  -- 全局设备 ID(可配置)

1. 设备管理

listDevices()

列出所有连接的设备。

  • 返回值: string (JSON 格式设备列表)
local devices = luaadb.listDevices()
print("Devices: " .. devices)

tcpip(port)

切换设备到 TCP/IP 模式。

  • 参数: port (int, 默认 5555)
  • 返回值: string (执行结果)
local result = luaadb.tcpip(currentdevice, 5555)
print("TCP/IP Mode: " .. result)

connect(addr)

通过网络连接设备。

  • 参数: addr (string, 如 "192.168.1.81:5555")
  • 返回值: int (0=成功, 非0=失败)
local status = luaadb.connect("192.168.1.81:5555")
print("Connect Status: " .. status)

disconnect(addr)

断开设备连接。

  • 参数: addr (string)
  • 返回值: int (0=成功)
luaadb.disconnect("192.168.1.81:5555")

2. 文件操作

pull(remotePath, localPath)

从设备拉取文件。

  • 参数:
    • remotePath (string, 设备路径)
    • localPath (string, 本地路径)
  • 返回值: int (0=成功)
luaadb.pull("/sdcard/test.txt", "./test.txt", currentdevice)

push(localPath, remotePath)

推送文件到设备。

  • 参数:
    • localPath (string)
    • remotePath (string)
  • 返回值: int (0=成功)
luaadb.push("./test.txt", "/sdcard/test.txt", currentdevice)

pushDir(localPath, remotePath)

推送整个目录到设备。

  • 参数: 同 push
  • 返回值: int (0=成功)
luaadb.pushDir("./mydir", "/sdcard/mydir", currentdevice)

3. Shell 命令

runShellCommand(commandAndArgs)

执行 ADB Shell 命令。

  • 参数: commandAndArgs (string, 如 "pm list packages")
  • 返回值: string (命令输出)
local output = luaadb.runShellCommand("pm list packages", currentdevice)
print("Packages: " .. output)

runCommandTimeout(cmd, timeout)

带超时的 Shell 命令。

  • 参数:
    • cmd (string)
    • timeout (long long, 毫秒)
  • 返回值: string (输出或超时错误)
local result = luaadb.runCommandTimeout(currentdevice, "dumpsys battery", 5000)
print("Battery Info: " .. result)

4. 应用管理

pmListPackages(isthird)

列出设备上的应用。

  • 参数: isthird (bool, true=仅第三方应用)
  • 返回值: string (JSON 格式应用列表)
local apps = luaadb.pmListPackages(currentdevice, true)
print("Third-party Apps: " .. apps)

install(localpath)

安装 APK。

  • 参数: localpath (string, 本地 APK 路径)
  • 返回值: int (0=成功)
luaadb.install(currentdevice, "./app.apk", "-r -t")  -- -r 替换, -t 允许测试包

uninstall(packagename)

卸载应用。

  • 参数: packagename (string, 如 "com.example.app")
  • 返回值: string (执行结果)
luaadb.uninstall(currentdevice, "com.example.app")

forceStopApp(packagename)

强制停止应用。

  • 参数: 同 uninstall
  • 返回值: string (结果)
luaadb.forceStopApp(currentdevice, "com.example.app")

5. 输入模拟

inputkeyevent(keycode)

模拟按键事件。

  • 参数: keycode (string, 如 "KEYCODE_HOME")
  • 返回值: string (结果)
luaadb.inputkeyevent(currentdevice, "KEYCODE_HOME")

click(x, y)

模拟屏幕点击。

  • 参数: x, y (int)
  • 返回值: string (结果)
luaadb.click(currentdevice, 500, 1000)

swipe(x1, y1, x2, y2, duration)

模拟滑动。

  • 参数:
    • x1, y1 (起始坐标)
    • x2, y2 (结束坐标)
    • duration (int, 毫秒)
  • 返回值: string (结果)
luaadb.swipe(currentdevice, 300, 1000, 300, 500, 300)  -- 向上滑动

6. 权限管理

pmgrant(packagename, permission)

授予应用权限。

  • 参数:
    • packagename (string)
    • permission (string, 如 "android.permission.CAMERA")
  • 返回值: string (结果)
luaadb.pmgrant(currentdevice, "com.example.app", "android.permission.CAMERA")

pmrevoke(packagename, permission)

撤销应用权限。

  • 参数: 同 pmgrant
  • 返回值: string (结果)
luaadb.pmrevoke(currentdevice, "com.example.app", "android.permission.CAMERA")

7. 系统信息

getProperty(name)

获取系统属性。

  • 参数: name (string, 如 "ro.build.version.sdk")
  • 返回值: string (属性值)
local sdk = luaadb.getProperty(currentdevice, "ro.build.version.sdk")
print("SDK Version: " .. sdk)

getAllProperty()

获取所有系统属性。

  • 返回值: string (JSON 格式属性列表)
local props = luaadb.getAllProperty(currentdevice)
print("All Properties: " .. props)

wmsize()

获取屏幕分辨率。

  • 返回值: string (如 "1080x1920")
local size = luaadb.wmsize(currentdevice)
print("Screen Size: " .. size)

8. 高级功能

root()

尝试以 Root 权限重启 ADB。

  • 返回值: string (结果)
local rootStatus = luaadb.root(currentdevice)
print("Root Status: " .. rootStatus)

remount()

重新挂载 /system 为可写。

  • 返回值: string (结果)
local remountStatus = luaadb.remount(currentdevice)
print("Remount Status: " .. remountStatus)

完整示例

local luaadb = require("luaadb")
local currentdevice = "192.168.1.81:5555"-- 1. 连接设备
luaadb.connect(currentdevice)-- 2. 安装 APK
luaadb.install(currentdevice, "./app.apk", "-r")-- 3. 启动应用
luaadb.startappByPackageName(currentdevice, "com.example.app")-- 4. 模拟点击
luaadb.click(currentdevice, 500, 1000)-- 5. 卸载应用
luaadb.uninstall(currentdevice, "com.example.app")-- 6. 断开连接
luaadb.disconnect(currentdevice)

注意事项

  1. 设备 ID:全局变量 currentdevice 可配置,避免硬编码。
  2. 错误处理:检查返回值(如 int 类型接口返回 0 表示成功)。
  3. 超时控制:对耗时操作(如 install)建议使用 runCommandTimeout
http://www.dtcms.com/a/276227.html

相关文章:

  • RMSNorm实现
  • 2.单例模式
  • Vim的magic模式
  • blender uv小技巧
  • Python 包管理新时代:深入了解 `uv` 的使用与实践
  • OpenVela之模拟器调试
  • 【kubernetes】--Controller(StatefulSet)
  • 【PTA数据结构 | C语言版】链式队列的3个操作
  • Git常用命令一览
  • pyqt5界面开发学习
  • 034_多态的实现(编译时 / 运行时)
  • 洛谷 P11961 [GESP202503 五级] 原根判断-提高+/省选-
  • Vue工程化
  • Spring Boot 基础入门与实战:从框架理解到项目搭建
  • 如何检测自动化设备中的直线导轨品质是否优良?
  • Oracle 数据库实战项目
  • SAC : 具有随机Actor的离策略最大熵深度强化学习
  • Android开发中RxJava的使用与原理
  • 杨娇兽の阴谋
  • 基于springboot+Vue的二手物品交易的设计与实现
  • 休闲项目策划与设计实训室:赋能实践育人的重要平台
  • 【学习笔记】Nginx常用安全配置
  • arcgis投影后数据显示问题记录
  • 以电商平台性能测试为例,详细描述Jmeter性能测试步骤,及如何确定用户并发数、用户启动时间、循环次数的设置
  • 算法练习6-大数乘法(高精度乘法)
  • jenkins部署vue前端项目
  • 【TA/Unity】Shader基础结构
  • TCP套接字
  • 网络配置综合实验全攻略(对之前学习的总结)
  • 医学AI前沿论坛第6期|目前主流的医学AI基础模型有哪些?我们应该如何在有限的数据下构建高性能的基础模型?