使用雷电ADB批量操作模拟器
模块的作用
- 可以批量安装和操作模拟器,实现诸如批量安装app,群控等效果
- 可以接入PC游戏自动化模块,实现模拟器中控操作游戏脚本
相关代码
import os
from subprocess import Popen, PIPE
class 雷电命令:
def __init__(self):
os.putenv('Path', self.save_dir())
def save_dir(self):
with open('dir','a+') as p:
p.read()
with open('dir', 'r+') as p:
a = p.read()
if len(a) == 0:
b = self.get_dir()
p.write(b)
a = b
return a
def get_dir(self):
path_list = ['C:\\', 'D:\\', 'E:\\', 'F:\\']
for path in path_list:
for root, dirs, files, in os.walk(path):
for f in files:
if f == 'ldconsole.exe':
print('模拟器路径获取成功')
return root
assert False,'模拟器路径不存在'
def 读取命令信息(self, cmd):
res = Popen(cmd, stdout=PIPE, shell=True)
res = res.stdout.read().decode(encoding='GBK')
return res
def 启动模拟器(self, order):
self.读取命令信息('ldconsole.exe launch --index ' + order)
def 关闭模拟器(self, order):
self.读取命令信息(cmd='ldconsole.exe quit --index ' + order)
def 获取模拟器信息(self):
return self.读取命令信息('ldconsole.exe list2')
# 索引,标题,顶层窗口句柄,绑定窗口句柄,是否进入android,进程PID,VBox进程PID
def 新增模拟器(self, name):
self.读取命令信息('ldconsole.exe add --name ' + name)
def 删除模拟器(self, order):
self.读取命令信息('ldconsole.exe remove --index ' + order)
def 复制模拟器(self, name, order):
self.读取命令信息('ldconsole.exe copy --name ' + name + ' --from ' + order)
def 启动APP(self, order, packagename):
self.读取命令信息('ldconsole.exe runapp --index ' + order + ' --packagename ' + packagename)
def 关闭APP(self, order, packagename):
self.读取命令信息('ldconsole.exe killapp --index ' + order + ' --packagename ' + packagename)
def 获取包名(self, order):
return self.读取命令信息(cmd='ld.exe -s ' + str(order) + ' pm list packages')
def 安装APP(self, order, path):
self.读取命令信息('ldconsole.exe installapp --index ' + order + ' --filename ' + path)
if __name__ == '__main__':
ld = 雷电命令()
ld.启动模拟器('0')
代码待优化项目
因为我开始是想把雷电模拟器路径添加到系统环境,但是考虑到用户使用的时候比较繁琐所以用了临时系统环境,并且做了一个判断,把雷电路径存入一个文本然后再读取,这样只是第一次会加载时间比较长一点,以后就不会长时间加载。但是个人觉得比较麻烦,所以如果各位有更好的方法可以提供给我改进
本文介绍了如何使用Python结合ADB工具对雷电模拟器进行批量操作,包括批量安装应用和实现群控功能。同时,内容提到了将雷电模拟器路径整合到代码中的一种方式,以及对代码优化的探讨。
2175

被折叠的 条评论
为什么被折叠?



