在做android测试的时候,有时候写几个简单的批处理,能够对工作有事半功倍之效。
下面列举部分工作过程中遇到的命令,供有需要的朋友们参考。
增加一个新的常用脚本:
@echo off echo ********************************** echo ***** 测试小工具---HaoChuang ***** 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---HaoChuang ***** 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---HaoChuang *** 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 haochuang.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 ***** XXX设备端App安装工具---HaoChuang ***** 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卸载工具---HaoChuang *****
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 ================================
如上,测试可用。
附录:
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
×××××××××××××××××××××××××