使用場景
多模擬器登錄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個模擬器多開使用正常。對於更多數量的測試如果有問題可以在文章下方留言。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/214217.html