ADB常用命令

一世执手 提交于 2019-11-29 04:53:17

ADB常用命令

常用命令

环境变量配置好后就可以开始使用命令了
显示系统中全部设备: adb devices
终止adb服务进程: adb kill-server
重启adb服务进程: adb start-server
查看屏幕分辨率: adb shell wm size
安装apk到sd卡: adb install -s // 比如:adb install -s baidu.apk
安装APK: adb install //比如:adb install baidu.apk
卸载APK: adb uninstall //比如:adb uninstall com.baidu.aaa
卸载app但保留数据和缓存文件: adb uninstall -k //比如:adb uninstall -k com.baidu.search

设备连接

连接设备: adb connect 192.168.1.61
断开设备: adb disconnect 192.168.1.61
列出手机装的所有app的包名: adb shell pm list packages
列出系统应用的所有包名: adb shell pm list package -s
列出除了系统应用的第三方应用包名:adb shell pm list package -3
adb shell pm list package -f keywords
adb shell pm list package -i keywords

重启到recovery,即恢复模式: adb reboot recovery
查看log: adb logcat
清除log缓存: adb logcat -c
查看bug报告: adb bugreport
获取机器MAC地址: adb shell cat /sys/class/net/wlan0/address
获取CPU序列号: adb shell cat /proc/cpuinfo
保留数据和缓存文件,重新安装apk:adb install -r //比如:adb install -r baidu.apk
清除应用数据与缓存: adb shell pm clear (apk包名)

启动应用: adb shell am start -n /.
adb shell am start -W -S com.android.calculator2/.Calculator #启动计算器
强制停止应用: adb shell am force-stop (apk包名)
删除系统应用:
adb remount (重新挂载系统分区,使系统分区重新可写)。
adb shell
cd system/app/
ls
rm *.apk
查看设备cpu和内存占用情况: adb shell top
查看占用内存前6的app: adb shell top -m 6
刷新一次内存信息,然后返回: adb shell top -n 1
查询各进程内存使用情况: adb shell procrank
杀死一个进程: adb shell kill [pid]
adb shell
ps
kill pid
ps是查看进程命令,kill pid 你想结束的进程
查看进程列表: adb shell ps
查看指定进程状态: adb shell ps -x [PID]
adb shell ps -x | grep XXX
adb shell ps | findstr XXX
adb shell kill PID

===========================

设备服务监控

查看cpu,内存状态
adb shell dumpsys meminfo package
adb shell dumpsys cpuinfo | findstr package

查看后台services信息: adb shell service list
查看当前内存占用: adb shell cat /proc/meminfo
查看IO内存分区: adb shell cat /proc/iomem
将system分区重新挂载为可读写分区:adb remount
从本地复制文件到设备: adb push 路径
从设备复制文件到本地: adb pull 路径
列出目录下的文件和文件夹,等同于dos中的dir命令:adb shell ls
进入文件夹,等同于dos中的cd 命令: adb shell cd
重命名文件: adb shell rename path/oldfilename path/newfilename
删除system/avi.apk: adb shell rm /system/avi.apk
删除文件夹及其下面所有文件: adb shell rm -r
移动文件: adb shell mv path/file newpath/file
设置文件权限: adb shell chmod 777 /system/fonts/DroidSansFallback.ttf
新建文件夹: adb shell mkdir path/foldelname
查看文件内容: adb shell cat
查看wifi密码: adb shell cat /data/misc/wifi/*.conf
获取设备名称: adb shell cat /system/build.prop
查看ADB帮助: adb help

monkey

==============================================
跑monkey: adb shell monkey -v -p your.package.name 500

跑monkey并写入日志: adb shell monkey -p -s seed_value your.package.name -v -v 500 > monkey.log
-v表示日志级别,有-v ,-v -v , -v -v -v 三个级别

跑monkey并写入日志: adb shell monkey -p -s seed_value your.package.name -v -v --throttle 1000 20 > monkey.log

==============================================================
adb shell
adb connect 127.0.0.1:62001
adb devices

adb install
查看当前运行的程序:包名
adb shell dumpsys activity | find “mFocusedActivity”

查询当前运行的apk的入口aapt:类名–apk所在位置
aapt dump badging E:\android\apk\1.apk

找到关键字launchable-activity:
launchable-activity: name=‘com.ltqh.qh.activity.guide.SplashActivity’ label=’’ icon=’’
得到对应的apk的入口,具有唯一性。

adb shell pm list package 查看安装的应用
adb shell pm list package -3 查看安装的第三方包
adb shell
adb devices
adb pull
adb push
adb logcat -c#清理操作前的日志
adb logcat
adb install
adb uninstall

======================
android -->monkey
ios---->xcode 插件:instument
第三方工具:GT工具:可用于android,ios 性能测试

monkey.jar
monkye 模拟用户触摸屏幕,滑动trackball,按键等操作来对设备上的程序进行压力测试,检测程序多久时间会发生异常
一般在产品稳定后,没有什么bug时,一般会用Monkey去测试app的稳定性,健壮性(是否发生闪退,崩溃)及手机出厂时的整机测试
adb shell monkey {+命令参数:} 次数

adb shell monkey -help /-help

monkey -p 后面接对应的包名(前台运行app,命令行adb shell dumpsys activity | find “mFocusedActivity” 来查看正在运行的app)
-s 用于指定伪随机数生成器的seed值,如果seed值相同,则两次monkey测试所产生的事件序列也相同,用于问题重现
-v 表示日志级别,
(-v -v -v 一般测试中使用三级-v来输出日志)
–throttle ms(毫秒),用于指定用户操作(即事件)间的时间延迟,单位毫秒
–ignore-crash --ignore-timeouts 这里是在monkey测试的过程中遇到crash或者timeout的情况下忽略掉,若不设置,出现crash或者timeout时monkey测试会终止,这里是为了防止monkey测试终止
–ignore-security-excetions
次数 1000 表示事件次数,根据测试经验,对于 单个应用程序这个次数设置100000次就可以了,如果是整机500000
–pct-touch 80 #指定事件的百分比

运用monkdy 命令进行app压测

monkey主要针对ui压力测试

一,脚本编写:

启动应用程序:
LaunchActivity(“包名”,“类名”)
eg:LaunchActivity(“com.moon.moonle”,“入口名”)
页面等待时间
UserWait(2000)
点击按钮,进入登录页面:
Tap(x,y)
UserWait(2000)
输入手机号码
DispatchString(13533334446)
点击密码输入框
Tap(x,y)
输入密码:
DispatchString(123455)
点击登录按钮
Tap(347,610)
每次运行结束,要关闭当前应用,达到消除登陆输入信息
RunCmd(am force-stop com.moon.moonle)

二,adb推送脚本到手机端

连接手机,或模拟器
adb connect 127.0.0.1:62001
推送脚本到手机端
adb push d:\monkeyscript.txt /data/local/tmp
运行脚本
adb shell -f /data/local/tmp/monkeyscript.txt

================================
===获得当前运行的app
adb shell dumpsys activity | find “mFocusedActivity”

mFocusedActivity: ActivityRecord{3c7c6b77 u0 io.manong.developerdaily/io.touti
ao.android.ui.activity.SubjectDetailActivity t39}
取得包名:io.manong.developerdaily

==运行500次 (真实测试次数可能是500/4 = 125次左右,因为monkey不是一个稳定性的测试工具,实际次数可能1/5-1/4的设置次数)
adb shell monkey -v -v -v 500 > E:\android\log\monkey\monkey01.txt

==指定前台app,进行测试
adb shell monkey -v -v -v -p io.manong.developerdaily 500 > E:\android\log\monkey\monkey02.txt

==指定seed值 101
adb shell monkey -v -v -v -p io.manong.developerdaily -s 101 500 > E:\android\log\monkey\monkey03.txt

=指定事件间隔1000ms=1s
adb shell monkey -v -v -v -p io.manong.developerdaily -s 101 --throttle 1000 500 > E:\android\log\monkey\monkey04.txt

==忽略崩溃与超时
adb shell monkey -v -v -v -p io.manong.developerdaily -s 101 --throttle 1000 --ignore-crash --ignore-timeouts 500 > E:\android\log\monkey\monkey05.txt

=========================================

三、日志抓取

抓取日志:adb logcat / adb shell logcat
日志:crash
ANR
excetion
>monkey.log #重定向日志
日志统计工具

 持续集成-jenkins环境搭建
 svn + mavent + tomcat + jenkins 
 tomcat user.xml

adb --help
adb devices
adb pull 手机路径 本地路径 #拉取手机文件到本地
adb pull /sdcard/server.log d:\androidlog\

adb push 本地路径 手机路径 #本地文件推送到手机

adb logcat --打印日志

adb install XX.apk
adb install -r ,安装并保留数据,便于测试
adb uninstall xx.apk
adb uninstall -k 卸载app并保留数据和缓存文件,便于测试

adb shell dumpsys activity | find “mFocusedActivity” 查看当前运行的应用,包名

adb sorch
adb connect/disconnect IP:端口 连接设备:
adb connect/disconnect 通过wifi 进行远程连接手机进行调试

adb ,ddms

======================================
日志:logcat

EG:
07-29 01:37:57.538 W/System.err( 2765): com.imooc.net.exception.ApiException: token expire

日志(五部分组成)
1,日志时间:
2,优先级:

-------V-verbose(最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品)–线上产品要关闭
-------D-debug(调试,用于调试信息,可以在发布产品中关闭,比较常见)–线上产品要关闭
-------I-info(信息,一般提示性的消息)
-------W-warning(警告)
-------E-error(错误,已经出现可影响运行的错误,比如crash时输出的日志)

主要关注E级别日志

============
3,标签(tag)标明日志发起者和方便日志的过滤筛选
4,PID(进行ID)
5,正文,本日志的产体内容

anr:
崩溃:有提示框,需重新获取日志,
闪退:直接退出。

抓取通讯系统相关日志
adb logcat -b radio > e:\android\log\logcat_radio.txt

adb logcat > e:\android\log\logcat_main.txt

adb logcat -v time > e:\android\log\logcat_time.txt
–出现异常,要重新获取最新日志
–崩溃日志:crash 关键字: fatal exception:main
adb logcat -v time > e:\android\log\logcat_crash.txt
–ANR 关键字: NRE in 包名
–data/anr/traces.txt文件
adb logcat -v time > e:\android\log\logcat_nr.txt

adb pull /data/anr/traces.txt > e:\android\log\

—NR 提交文件logcat.txt + traces.txt 两个文件,

traces只能保留最新一份的NR日志信息,最新日志覆盖旧日志
采用dropbox来记录多个traces日志信息
–adb shell
进入dropbox目录
–cd /data/system/dropbox ls
–adb pull /data/system/dropbox e:\android\log\dropbox

–logcat 与traces是两个不同模块,故日志写入时间不同步,存在少许差异
dropbox目录可能由于各厂商问题,优化掉了,只能查看traces.txt文件

=========================

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!