ADBC
ADBC是ADB Client的纯python异步实现,ADBC直接跟ADB Server通信不需要靠进程调用命令行来执行ADB命令。
有以下特性:
- 支持async/await和同步调用
- 封装了一些性能测试相关的接口,供性能采集工具使用
- 以
service(服务)
为单位封装命令接口,能够跟 adb
和android shell
命令更加一致。
安装
pip install async-adbc
快速入门
使用ADBClient
ADBClient
对应的是adb
命令
note
当连接设备只有一个的时候,adb
命令可以省略-s <serialno>
,但是ADBClient
不会包含这种默认设备的命令接口。因为async-adbc
认为adb
和device
应该职责分明不应有太多的潜规则。因此用户想要操作某个设备一定要使用Device
对象下的接口,Device
下的接口相当于是帮我们默认传递了-s <serialno>
。
from async_adbc import ADBClient
adbc = ADBClient()
version = awaitadbc.version()
print(version)
devices = adbc.devices()
for device in devices:
print(device.serialno)
使用Device
Device
对象是对Android设备的抽象,所有需要指定 -s <serialno>
的操作都被封装到 Device
类中。
from async_adbc import ADBClient
adbc = ADBClient()
default_device = adbc.device()
product_model = await defualt_device.prop.get("ro.product.model")
print(product_model)
packages = await default_device.pm.list_packages()
print(packages)
ret = await default_device.shell("echo hello")
print(ret)
fps_stat = await default_device.fps.stat("PKG_NAME")
print(fps_stat)
mem_stat = await default_device.mem.stat("PKB_NAME")
print(mem_stat)
参考
- adb协议 https://github.com/kaluluosi/adbDocumentation/blob/master/README.zh-cn.md
- ppadb https://github.com/Swind/pure-python-adb