在做android測試的時候,有時候寫幾個簡單的批處理,能夠對工作有事半功倍之效。
下面列舉部分工作過程中遇到的命令,供有需要的朋友們參考。
增加一個新的常用腳本:
@echo off echo ********************************** echo ***** 測試小工具---Not***** echo ********************************** pause adb wait-for-device adb devices :start echo "根據需要輸入對應ID(1:安裝;2:卸載;3:截圖;4:導出日誌;0:退出)" set /p str=請選擇輸入數字: if %str% == 1 goto install_app else ( if %str% == 2 goto uninstall_app else ( if %str% == 3 goto screenshot else ( if %str% == 4 goto export_log else ( if %str% == 0 goto exit )))) else ( (echo "你的輸入有誤!" && (goto start)) rem pause set DIR=C:\Users\Haochuang\Desktop cd /d %DIR% :install_app adb install -r %DIR%\hao*.apk echo "1.貨主端App已安裝!" adb install -r %DIR%\truck*.apk echo "1.司機端App已安裝!" :uninstall_app adb uninstall com.haochuang.test1; echo "1.XXX pp卸載完成!" adb uninstall com.haochuang.app2; echo "1.XXX App卸載完成!" :screenshot adb shell /system/bin/screencap -p /sdcard/screenshot.png echo "1.截圖完成!" adb pull /sdcard/screenshot.png %DIR% echo "將截圖複製到電腦盤中" :export_log adb logcat -v time > %DIR%\test.log :exit pause & exit rem ping 123.45.67.89 -n 1 -w 10000 > nul rem echo "沒有找到devices,請檢查設備是否連接成功" rem pause & exit rem 截圖 rem adb shell /system/bin/screencap -p /sdcard/screenshot.png rem 將截圖複製到電腦盤中 rem adb pull /sdcard/screenshot.png E:\download
1.安裝:
@echo off echo 等待設備連接 adb wait-for-device echo ********************************** set input=%1 echo 已連接 if "%input%" neq "" ( echo 安裝 %input% adb install -r %input% echo %1% 安裝完畢 ) else ( for /r %%i in (*.apk) do ( echo 安裝 %%i adb install -r %%i echo %%i 安裝完畢 ) ) pause
2.卸載:
@echo off echo ********************************** echo current path: %cd% set HAO01=co.truckno1.cargo set HAO02=com.yihaohuoche.truck adb wait-for-device adb uninstall %HAO01% echo "uninstall Success!" adb uninstall %HAO02% echo "uninstall Success!" pause
3.抓日誌
@echo off echo ********************************** echo ***** Test Log---Notordinary***** echo ********************************** echo current path: %cd% %cd%\bin\adb.exe wait-for-device %cd%\bin\adb.exe logcat -v time > %cd%\files\test.log echo log export succ,path: echo %cd%\files pause & exit
4.截圖
@echo off echo ********************************** echo ***** ScreenShot---NotOrdinary*** echo ********************************** echo current path: %cd% %cd%\bin\adb.exe wait-for-device %cd%\bin\adb.exe shell /system/bin/screencap -p /sdcard/cargo_screenshot.png %cd%\bin\adb.exe pull /sdcard/cargo_screenshot.png %cd%\files echo "picture export succ,path:" echo %cd%\files
用adb獲得手機裏面某個apk的應用信息、版本信息
adb shell dumpsys package com.examle.xx
adb shell dumpsys 列出所有
用adb啓動apk
adb shell am start -n NotOrdinary.test/haochuang.test.TestActivity
點火熄火等:
@echo off adb wait-for-device adb devices :start echo "根據需要輸入對應ID(1:點火;2:熄火;3:喚醒;4:初始化;0:退出)" set /p str=請選擇輸入數字: if %str% == 1 goto acc_on else ( if %str% == 2 goto acc_off else ( if %str% == 3 goto wake_up else ( if %str% == 4 goto init else ( if %str% == 0 goto exit )))) else ( (echo "你的輸入有誤!" && (goto start)) rem pause :acc_on adb shell am broadcast -a tsd.event.system.acc_on rem pause rem & exit goto start :acc_off adb shell am broadcast -a tsd.event.system.acc_off rem pause rem & exit goto start :wake_up adb shell am broadcast -a tsd.command.WAKE_UP rem pause rem & exit goto start :init adb shell am broadcast -a tsd.init.COMPLETE rem pause rem & exit goto start :exit pause & exit exit 0
安裝所有應用:
@echo off echo 等待設備連接 adb wait-for-device set input=%1 echo 已連接 if "%input%" neq "" ( echo 安裝 %input% adb install -r %input% echo %1% 安裝完畢 ) else ( for /r %%i in (*.apk) do ( echo 安裝 %%i adb install -r %%i echo %%i 安裝完畢 ) ) pause
啓動系統設置:
@echo off adb wait-for-device adb shell am start com.android.settings/.Settings
啓動桌面應用:
@echo off adb wait-for-device adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME
啓動服務:
@echo off :loop adb wait-for-device adb shell am startservice -a com.tuyou.tsd.cardvr.service.VideoRec ::ping 127.0.0.1 -n 10 > nul ::goto loop
開始錄製視頻:
@echo off adb wait-for-device adb shell am broadcast -a tsd.event.cardvr.start_record
停止錄製視頻:
@echo off adb wait-for-device adb shell am broadcast -a tsd.event.cardvr.stop_record
auto test monkey:
@set %repeat=0 :BEGIN @set /a repeat=repeat+1 @adb shell monkey --ignore-crashes --monitor-native-crashes -v 320000 > monkey_%repeat%.txt @ping -n 8 127.0>nul @adb reboot @ping -n 40 127.0>nul @goto BEGIN
安裝應用:
@echo off echo *********************************************** echo ***** 設備端App安裝工具---Notordinary ***** echo *********************************************** pause adb devices set DIR=E:\AutoBuild\Version_20150817 cd /d %DIR% G: adb install -r %DIR%\TSD-Launcher*.apk echo "1.Launcher 已安裝!" adb install -r %DIR%\TSD-SystemSetting*.apk echo "2.設置 已安裝!" adb install -r %DIR%\TSD-VoiceAssistant*.apk echo "3.語音助手 已安裝!" adb install -r %DIR%\TSD-Update*.apk echo "4.更新 已安裝!" adb install -r %DIR%\TSD-CarDVR*.apk echo "5.行車記錄 已安裝!" adb install %DIR%\TSD-Nav*.apk echo "6.導航 已安裝!" adb install -r %DIR%\TSD-MUSIC*.apk echo "7.音頻 已安裝!" adb install -r %DIR%\TSD-Podcast*.apk echo "8.播客 已安裝!" adb install -r %DIR%\TSD-News*.apk echo "9.新聞 已安裝!" rem ping 123.45.67.89 -n 1 -w 10000 > nul rem echo "沒有找到devices,請檢查設備是否連接成功" pause & exit
卸載應用:
@echo off
echo ***********************************************
echo ***** XXX設備端App卸載工具---Notordinary *****
echo ***********************************************
pause
adb uninstall com.test.hao;
echo "1.Launcher 已卸載!"
adb uninstall com.test.hao.settings;
echo "2.設置 已卸載!"
adb uninstall com.test.hao.voice;
echo "3.語音助手 已卸載!"
adb uninstall com.test.hao.updatesoft;
echo "4.更新 已卸載!"
adb uninstall com.test.hao.cardvr;
echo "5.行車記錄 已卸載!"
adb uninstall com.test.hao.navigation;
echo "6.導航 已卸載!"
adb uninstall com.test.hao.audio;
echo "7.音頻 已卸載!"
adb uninstall com.test.hao.podcast;
echo "7.播客 已卸載!"
adb uninstall com.test.hao.news;
echo "7.新聞 已卸載!"
rem ping 123.45.67.89 -n 1 -w 10000 > nul
rem echo "沒有找到devices,請檢查設備是否連接成功"
pause & exit
在使用過程中,遇到可能需要點火熄火等操作,需要重複去敲adb shell命令,不如寫成批處理,如下;
@echo off adb wait-for-device adb devices :start echo # "根據需要輸入對應ID(1:點火;2:熄火;3:喚醒;4:初始化;)" set /p str=請選擇輸入數字: if %str% == "1" goto acc_on if %str% == "2" goto acc_off if %str% == "3" goto wake_up if %str% == "4" goto init :acc_on echo "開始點火" adb shell am broadcast -a tsd.event.system.acc_on echo "點火完成" pause & exit :acc_off adb shell am broadcast -a tsd.command.WAKE_UP pause & exit :wake_up adb shell am broadcast -a tsd.command.WAKE_UP pause & exit :init adb shell am broadcast -a tsd.init.COMPLETE pause & exit exit 0
截圖:
@echo off rem ok---------------- adb shell /system/bin/screencap -p /sdcard/screenshot.png adb pull /sdcard/screenshot.png C:\Users\HaoChuang\Desktop\ rem ok---------------- rem ================================ rem adb shell /system/bin/screencap -p /sdcard/screenshot.png rem -------------1-------------- rem 方法一:設置變量 rem adb shell aa = date '+%m%d%H%M%S' rem adb shell mv /sdcard/screenshot.png /sdcard/screenshot_$aa.png rem -------------1-------------- rem -------------2-------------- rem 方法一:直接修改 rem adb shell /system/bin/screencap -p /sdcard/screenshot.png rem adb shell mv /sdcard/screenshot.png /sdcard/screenshot_`date '+%m%d%H%M%S'`.png rem remn adb pull /sdcard/screenshot_`date '+%m%d%H%M'`*.png C:\Users\HaoChuang\Desktop\ rem -------------2-------------- rem ================================
如上,測試可用。
附錄:
路徑相關:參考:http://blog.csdn.net/mangmang2012/article/details/7048945
1. .bat文件中獲取bat文件所在目錄的參數爲 %~dp0 %~dp0 “d”爲Drive的縮寫,即爲驅動器,磁盤、“p”爲Path縮寫,即爲路徑,目錄 cd是轉到這個目錄,不過我覺得cd /d %~dp0還好些 選項語法: ~0 -刪除任何引號("),擴充%0 %~f0 -將%0擴充到一個完全合格的路徑名(“f”是file,即文件) %~d0 -僅將%0擴充到一個驅動器號 %~p0 -僅將%0擴充到一個路徑 %~n0 -僅將%0擴充到一個文件名(“n”是name文件名) %~x0 -僅將%0擴充到一個文件擴展名 %~s0 -擴充的路徑只含有短名(“s”爲Short,短的) %~a0 -將%0擴充到文件的文件屬性(“a”爲attribute,即屬性) %~t0 -將%0擴充到文件的日期/時間(“t”time) %~z0 -將%0擴充到文件的大小(Size大小) %~$PATH:0 -查找列在路徑環境變量的目錄,並將%0擴充 到找到的第一個完全合格的名稱。如果環境變量名 未被定義,或者沒有找到文件,此組合鍵會擴充到 空字符串 可以組合修飾符來得到多重結果: %~dp0 -僅將%0擴充到一個驅動器號和路徑 %~nx0 -僅將%0擴充到一個文件名和擴展名 %~fs0 -僅將%0擴充到一個帶有短名的完整路徑名 %~dp$PATH:0 -查找列在路徑環境變量的目錄,並將%I擴充 到找到的第一個驅動器號和路徑。 %~ftza0 -將%0擴充到類似輸出線路的DIR %0爲當前批處理文件 如果0換成1爲第一個文件,2爲第2個 **************************************************** %0代指批處理文件自身 %~d0是指批處理所在的盤符 %~dp0是盤符加路徑 cd %~dp0就是進入批處理所在目錄 2.添加永久環境變量 用reg add 向HKLM\system\controlset001\control\session manager\environment添加變量即可 如:添加添加值爲hedalixin變量NAME reg add "HKLM\system\controlset\control\session manager\environment" /v NAME /t REG_SZ /d hedalixin
×××××××××××××××××××××××
殺進程類:
#!/bin/bash PROID=`ps -fe|grep 包名|awk '{print $2}' | head -n 1` kill -9 $PROID
兩步操作:
adb shell ps -fe|grep uiautomator
獲取到PID之後
adb shell kill $PID$
×××××××××××××××××××××××××
在控制檯輸入命令$adb shell pm
可以看到adb shell pm的相關用法,詳細信息請自己看輸出
要看一個apk文件的相關信息最簡單實用的方法是:
aapt dump badging [yourapp.apk]
如果只是想查看手機上應用的packageName,則輸入命令:
adb shell pm list packages
如果想知道應用對應的apk文件在手機上的安裝位置則可以在上面的命令後加-f參數
adb shell pm list packages -f
×××××××××××××××××××××××××
其他常見adb命令:http://www.cnblogs.com/SharkBin/p/3993231.html
更多,待繼續補充。