赞
踩
由于雷电模拟器的命令行工具非常适合第三方代码控制,所以越来越多的人开始使用雷电模拟器进行脚本、逆向等软件的开发。但是也有很多人不清楚用程序控制雷电模拟器的原理和方法。所以我以比较容易入门的Python代码为例,从原理到方法讲解一下雷电模拟器的控制过程。
安装好雷电模拟器之后,大家可以在安装目录下面找到ldconsole.exe和ld.exe两个命令行程序。此外,启动雷电模拟器之后,可以在共享文件夹→高级选项里面找到一个Windows路径。这个路径和模拟系统里面/sdcard/Pictures路径,两者是想通的。即在模拟器中复制文件到/sdcard/Pictures路径下,对应的Windows路径下面也会多出一个这样的路径。这个对于识图脚本来说,是非常的友好——因为在模拟器中截图无需经过dump步骤,就可以直接在控制主机上读到图并进行处理。此外两边甚至能够动态、高效的传递共享文件,这个功能就完爆其他模拟器。
下面说说ld和ldconsole两个命令。Ld命令用来执行adb命令,但是和普通adb不同的是,你无需知道模拟器设备的序列号,而是直接可以通过序号来发命令。而且目标不存在能够很快反馈。这个可以加快脚本的效率,并且提高脚本的稳定性——因为不存在也不会崩溃。此外ld命令的连接非常稳定,不会受到物理USB线的影响,不会时断时续不稳定。这个对一些要长期跑的脚本来说,简直就是致命吸引。
ldconsole也是一个很不错的工具,可以控制模拟器参数的设定,包括imei,序列号,手机号分辨率等等参数,还可以检测和控制模拟器的启动和关闭。甚至能够模拟输入,按键,滑动等操作。而且这种模拟操作是模拟器本身的开发接口,比adb要更稳定和灵敏,非常适合开发人员使用。
综上,雷电模拟器的控制原理,其实是通过控制命令行接口来控制模拟器的行为。
- class Dnconsole:
- # 请根据自己电脑配置
- console = 'D:\\Changzhi\\dnplayer2\\ldconsole.exe '
- ld = 'D:\\Changzhi\\dnplayer2\\ld.exe '
- share_path = 'C:/Users/zerglurker/Documents/雷电模拟器/Pictures'
-
- @staticmethod
- def get_list():
- cmd = os.popen(Dnconsole.console + 'list2')
- text = cmd.read()
- cmd.close()
- info = text.split('\n')
- result = list()
- for line in info:
- if len(line) > 1:
- dnplayer = line.split(',')
- result.append(DnPlayer(dnplayer))
- return result
-
- @staticmethod
- def list_running() -> list:
- result = list()
- all = Dnconsole.get_list()
- for dn in all:
- if dn.is_running() is True:
- result.append(dn)
- return result
-
- @staticmethod
- def is_running(index: int) -> bool:
- all = Dnconsole.get_list()
- if index >= len(all):
- raise IndexError('%d is not exist&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。