前言
在测试APP时,我们常常会用到adb命令来协助测试,那么adb命令到底是什么?有什么用?怎么用?
今天我就整理了一些工作中常用的adb知识点,希望对大家有所帮助。
ADB学习全攻略
ADB是什么?
adb即Android Debug Bridge(安卓调试桥)。它就是一个命令行窗口,用于电脑端与模拟器或者真实设备交互。
常用操作有:
-
把文件发送到android设备,或从android拖拽文件到本地
-
在android设备上安装/卸载应用
-
启动应用
-
把APP的日志导出到本地
-
截屏、录像
思考:
上面说的这几点能否有其他方式替代,若有,区别是什么?
ADB怎么使用?
1、adb是无需安装的。找度娘搜索adb,然后下载工具压缩包,解压并添加环境变量,然后就可以在dos环境下使用了。
2、之后,用usb连接电脑和手机(或模拟器),并开启Android 设备的开发者选项和 USB 调试模式。
3、此时就可以在dos窗口输入cmd devices 命令检查是否可以正常使用了。
常见问题
adb devices 没有设备:可借助驱动精灵检查手机驱动,驱动安装好之后重启电脑。
adb devices unauthorized :解决办法:将手机设置->辅助功能->开发者模式->撤销usb调试授权,重新打开开发者模式。
常用命令
1、查看adb版本
adb version
2、查询pc链接的所有android 设备
adb devices
3、装包
-
如果在电脑D盘下面有个a.apk文件,只需要一行命令就安装到手机上:
-
adb install d:/a.apk
-
如果已经安装了这个程序,可以通过以下命令覆盖安装:adb install -r d:/a.apk
-
保留数据和缓存文件,重新安装 apk
-
adb install -r a.apk
-
安装包在android设备中
-
adb shell pm install apk在移动端的路径
4、卸载包
-
adb uninstall 包名
-
卸载软件但是保留配置和缓存文件:
-
adb uninstall -k 包名
-
如果机器上有多个模拟器或真机,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。
-
在emulator-5554模拟器上安装ebook.apk
-
adb -s emulator-5554 install ebook.apk
-
在真机上安装ebook.apk
-
adb -s HT9BYL904399 install ebook.apk
-
在emulator-5554模拟器上重新安装ebook.apk
-
adb -s emulator-5554 install -r ebook.apk
-
在真机上重新安装ebook.apk
-
adb -s HT9BYL904399 install -r ebook.apk
-
在emulator-5554模拟器上卸载ebook.apk(不保留数据和缓冲目录)
-
adb -s emulator-5554 uninstall ebook包名
-
在真机上卸载ebook.apk(保留数据和缓冲目录)
-
adb -s HT9BYL904399 uninstall -k ebook包名
5、包管理,如何知道一个app包名呢
包名(Package name)在Android系统中是判断一个App的唯一标识,不同的App可以有同样的名字,但是它的包名不可以相同。
例如我们可以自己编译生成一个App也叫“微信”,但是我们的App的包名不能为com.tencent.mm
(微信的包名为这个),如果指定的包名和微信一致,那么手机上只允许安装这两个App中的其中一个。说到这很多人就会有疑问,如果有人恶意做了一个和微信内容一模一样的App,名字和包名都和微信一样,那怎么分辨呢?Android中为了防止这样的情况,还做了一个叫签名的东西,微信的签名一般我们是没有的,所以就可以通过签名来标识出这款App到底是谁的了。
-
1、看源代码。当有源代码的时候,可以到工程目录下的 “AndroidManifest.xml”文件下查看package这一项。
-
2、adb命令查看列出手机装的所有 app 的包名:
-
adb shell pm list packages
-
3.列出系统应用的所有包名:
-
adb shell pm list packages -s
-
4.列出除了系统应用的第三方应用包名:
-
adb shell pm list packages -3
-
5.推测一个包中可能带有的关键字:
-
adb shell dumpsys activity | findstr mFocusedActivity
-
6.清除应用数据与缓存
-
adb shell pm clear 应用包名
6、文件相关
-
1、接收电脑文件
-
语法:adb push local remote
-
案例:adb push d:/a.txt /sdcard/
-
把电脑 D 盘下的 a.txt 文件推送到手机 sdcard 目录下
-
2、上传文件到电脑
-
语法:adb pull remote local
-
案例:adb pull /sdcard/a.txt d:/
-
上传位于/sdcard/目录下的 a.txt 文件到电脑的 D 盘根目录下
7、截屏、录屏
-
1.截屏
-
adb shell screencap /sdcard/a.png
-
adb shell /system/bin/screencap -p /sdcard/a.png
-
2.使用adb进行屏幕录像
-
adb shell screenrecord /sdcard/a.mp4
-
通过ctrl+c停止录制,你可以在sdcard目录下查看。妈妈再也不担心我到处找录制视频的软件了。
8、shell
-
进入shell
-
adb shell
-
退出shell
-
exit
9、手机信息收集
-
获取序列号
-
adb get-serialno
-
获取 MAC 地址
-
adb shell cat /sys/class/net/wlan0/address
-
查看设备型号
-
adb shell getprop ro.product.model
-
查看 Android 系统版本
-
adb shell getprop ro.build.version.release
-
查看屏幕分辨率
-
adb shell wm size
-
查看屏幕密度
-
adb shell wm density
-
查看permissions
-
adb shell pm list permissions
-
查看系统的危险权限dangerous permissions
-
adb shell pm list permissions -d -g
10、adb服务器杀死和启动
-
adb kill-server
-
adb start-server
-
场景:比如希望移动adb文件夹,或者adb命令得不到想要的内容时
11、与进程相关:
-
列出当前进程
-
adb shell ps | findstr 包名
-
杀死某个包的进程
-
adb shell am force-stop 包名
12、与性能相关的一些内容
-
获取内存:
-
adb shell dumpsys meminfo 包名
-
获取cpu:
-
adb shell dumpsys cpuinfo | findstr 包名
-
adb shell top -n 1 | findstr 包名
-
获取流畅度相关:
-
adb shell dumpsys gfxinfo 包名
13、app的启动停止
如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。
activity的获取方式见14条。
-
在emulator-5554模拟器上运行ebook.apk
-
adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main
-
在真机上运行ebook.apk
-
adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main
-
其中Main是ebook.apk的主Activity。相当于Windows应用程序的主窗体或Web应用程序的主页面。am是shell命令。
14、与Activity操作等相关
-
1.查看当前显示的activity
-
adb shell dumpsys activity | findstr "mFocusedActivity"
-
结果:
-
mFocusedActivity: ActivityRecord{93a4f9 u0 com.youdao.note/.activity2.MainActivity t36}
-
注意:我们只需要这一部分:com.youdao.note/.activity2.MainActivity即包名+activity
-
2.找到当前手机内的top Activity:
-
adb shell dumpsys activity top | findstr ACTIVITY
-
3.启动某一个Activity:
-
adb shell am start activity路径
-
adb shell am start com.youdao.note/.activity2.MainActivity
15、查看8080端口是哪个应用占用
netstat -ano|findstr "8080"
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。