在博主加入的軟件測試技術交流群日常提問中,看到有個成員提了個這樣的問題:
能不能通過腳本來實現多台設備同時安裝 App?
這個問題之前我有見過,在實際工作中這個需求確實挺常見,比如我想要在很多台設備中安裝很多的 APK,手動一個個的安裝過程挺痛苦。既然大家都有這樣的述求,所以就干脆寫篇文章解決大家的問題。
☆Pluto:大佬們,怎么寫腳本運行安裝apk包到手機呀?有教程嘛?
☆ 我:不需要寫腳本,通過adb install命令就可以了
☆Pluto:頻繁安裝的話,是不是用腳本來安裝會快點
☆我:通過腳本會更加方便
☆ Pluto:幾台手機能同時安裝嘛?
☆我:那你要寫代碼通過多線程去安裝了
實現過程
核心技術解決方案:
adb 命令 + 多進程/多線程
采用的腳本語言:
Java、Python、Shell、bat 都可
因為 Shell 與 bat 直接可以與 adb 命令交互,效率更高,筆者所用的是 Windows 平台機器,所以本篇文章采用的 bat 腳本實現。
1、識別多設備信息
要想要在多台設備上執行,我們需要得到對應的設備信息,而由於 adb install 命令可以通過-s 參數指定設備:
adb -s deviceName install XXApk
所以我們這里需要得到設備的 deviceName。
思路:adb devices 命令結果保存在本地文件中
adb devices > devices.txt
2、獲取當前目錄下所有的 APK 文件
這里通過 bat 腳本實現非常簡單,對應的腳本如下:
dir *.apk /b > apks.txt
同時我們也選擇將所有的 apk 文件信息保存到本地的 apks.txt 文件中。
3、循環遍歷設備列表執行安裝
for /f "skip=1 delims=device" %%i in (devices.txt) do ( start adb_install %%i )
解釋:
for /f in (devices.txt)
表示循環遍歷 devices.txt 文件中的文本內容
"skip=1 delims=device"
- skip=1 表示跳過第一行,因為 adb devices 輸出的結果中第一行為 List of devices attached,我們需要跳過處理;
- delims=device 表示通過 device 分隔符切分字符串,比如 127.0.0.1:62001 device 切分之后的結果為 127.0.0.1:62001
%%i
表示對每一行的文本內容切分之后的結果,如 127.0.0.1:62001,即設備名
start adb_install %%i
這里我們通過 start 命令重新啟動一個單獨的命令行窗口,然后在里面執行 adb_install.bat 腳本,並且攜帶設備名參數
4、安裝過程(adb_install.bat)
對應的腳本內容如下:
@echo off echo --------------start install apks to %1--------------------
for /f %%i in (apks.txt) do ( echo install %%i to %1... adb -s %1 install -r %%i ) echo -----------------%1 finished install----------------------
這里我們通過循環遍歷所有的 apk 文件進行安裝,調用 adb install 命令,其中-r 參數表示如果應用已安裝,還是會再強制安裝。
對應的腳本文件及使用方式
目錄結構如下:
multi_install.bat 文件對應的腳本內容:
@echo off echo ------------multi install apks start--------------------
echo get all devices... adb devices > devices.txt echo get all apks... dir *.apk /b > apks.txt for /f "skip=1 delims=device" %%i in (devices.txt) do ( start adb_install %%i ) exit
adb_install.bat 文件對應的腳本內容:
@echo off echo --------------start install apks to %1--------------------
for /f %%i in (apks.txt) do ( echo install %%i to %1... adb -s %1 install -r %%i ) echo -----------------%1 finished install----------------------
使用步驟:
1.確保設備已經通過 adb 連接上(adb devices 命令能夠檢測到設備)
2.將所需安裝的 apk 文件放置與腳本同目錄下
3.雙擊執行 multi_install.bat 即可
執行效果:
好文推薦
軟件測試人員必讀的經典書籍(附電子書),前阿里大佬給我推薦...