python使用adb批量操作模拟器

本文介绍了如何使用Python结合ADB工具对雷电模拟器进行批量操作,包括批量安装应用和实现群控功能。同时,内容提到了将雷电模拟器路径整合到代码中的一种方式,以及对代码优化的探讨。
部署运行你感兴趣的模型镜像

使用雷电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')

代码待优化项目

​ 因为我开始是想把雷电模拟器路径添加到系统环境,但是考虑到用户使用的时候比较繁琐所以用了临时系统环境,并且做了一个判断,把雷电路径存入一个文本然后再读取,这样只是第一次会加载时间比较长一点,以后就不会长时间加载。但是个人觉得比较麻烦,所以如果各位有更好的方法可以提供给我改进

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值