多开模拟器读取同一文本不重复

使用场景

多模拟器登录app,账号密码保存在同一个文本中,读取方式是读一行删一行,理论上来说是没问题,但是实际操作会出现多个模拟器读取到同一个账号密码,这期代码就是解决这个问题的。

实现原理

我把读取文本的过程分成几个阶段:先报名、再排队,最后依次读取。

具体来讲是这样的,“先报名”就是模拟器把自己的序号(imsi码)传入到共享文件夹里面,“再排队”是按照先后顺序把模拟器的imsi码写入到文本里面,“依次读取”指的是从存imsi文本中的第一个imsi码的模拟器开始读取,第一个读完了,第二个读,依次类推。

代码过程

①获取模拟器的imsi码

Dim imsi=Device.GetImsi()

②新建一个imsi存储文本

If dir.Exist("/sdcard/pictures/imsi.txt")=0 Then 
    file.write ("/sdcard/pictures/imsi.txt")
End If

③使用追加命令把模拟式imsi码写入文本

file.Append "/sdcard/pictures/imsi.txt", imsi & "\n"

④读取文本中的imsi码

dim arr=file.ReadLines("/sdcard/pictures/imsi.txt")

⑤判断读取文本后的imsi中,第一个是不是本机imsi码

If arr(0) = imsi Then

⑥如果上一步判断成立,开始执行读取文本,已经读后删除文本

Dim txt=file.readline("/sdcard/pictures/a.txt",1)            
Delay 50
file.DeleteLine "/sdcard/pictures/a.txt", 1
Delay 50

⑦删除imsi文本中第一个imsi码,这个过程表示当前模拟器读取完成,其他模拟器就可以读取文本了。

file.DeleteLine "/sdcard/pictures/imsi.txt", 1

⑧假设第⑤步的判断不成立,也就是有别的模拟器排在前面,那么就要循环第④至⑦步,一直轮到当前模拟器可以读取文本为止,同时退出循环。

核心内容

通常我们使用多模拟器的时候会用到模拟器自带的同步器功能,这个时候只需要操作一个模拟器,其他模拟器就和它完成同样的操作,当我们使用同步器启动脚本时,所有脚本同时开启,同一时间读取文本,这个时候就会出现同一个账号密码被多个模拟器读取。

我们这期文章中使用了一个“缓冲”文本,先把要读取的模拟器imsi码存起来,然后按顺序执行,就把原本的“同步读取”变成了“异步读取”,有效防止脚本读取到重复的文本。

备注

本期这个操作逻辑的代码,我封装测试了4个模拟器多开使用正常。对于更多数量的测试如果有问题可以在文章下方留言

转载自微信公众号:3分钟学堂

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注