1. adb devices
主要作用:查看当前已连接的设备,连接到计算机的Android设备或者模拟器将会以列表的形式显示。
输出格式:[serialNumber][state]
l 如果当前没有模拟器或者设备运行,adb则会返回List of devices attached为空
l offline:表明设备没有连接到计算机或无响应
l device:设备已经连接到计算机。注意,该状态并不表示Android设备可用,当Android设备处于启动阶段时,若连接成功也会返回该状态。
2. adb install
主要作用:将指定的apk文件安装到设备上,
常用参数:
adb install –r 覆盖安装
adb install –s 安装到SD卡
adb install –rs覆盖安装到SD卡
adb –s
当有多个设备连接时,可以用下面的命令来直接选定设备进行安装。
adb [-d|-e|-s
d:真机(多个设备中只有一个真机时适用)
e:模拟器(多个设备中只有一个模拟器时适用)
s:序列号
adb –d install ./test.apk
adb –s emulator-5556 install ./test.apk
3. adb uninstall <包名>
主要作用:卸载设备上的指定程序
查看包名路径:/data/app,系统安装包路径:/sys/data,这两个路径下文件的查看都需要root权限
adb uninstall –k <包名>
adb shell pm uninstall –k <包名>
卸载程序但是保留其配置和缓存文件,即/data/data/packname下的数据与/sdcard/程序名 的数据
4. adb push/pull
主要作用:复制文件
1)adb push <本地路径><设备路径>
把pc上的文件或文件夹复制到设备中。
adb push /home/test.apk /sdcard/
2)adb pull <设备路径><本地路径>
把设备上的文件或文件夹复制到电脑
adb pull /sdcard/log/test.xls /home/
Pull命令后可不输入本地地址,不输入时文件会复制到当前终端所在目录
5. 关闭和启动adb服务
sudo –s
adb kill-server //关闭adb服务
adb start-server //启动adb服务
6. sudo –i和sudo –s的区别
sudo –i:在root用户下,使用root权限执行adb命令
sudo –s:在当前用户下,使用root权限执行adb命令
7. adb logcat
主要作用:查看日志,在命令行中显示调试信息
adb logcat >> <指定文件路径> 将logcat信息保存在指定文件中
>> 追加
>覆盖
adb logcat –help:查看logcat命令帮助文档
adb logcat -v time >C:\Users\pphou\Desktop\error.log
每一条日志消息都有一个标记和优先级与其关联。
格式为:
过滤不同优先级的log:adb logcat *:W(过滤比W优先级低的log)
标记是一个简短的字符串,用于标识原始消息的来源(例如“View”来源于显示系统)。
优先级是下面的字符,顺序从低到高:
V—Verbose 明细(最低优先级)
D—Debug 调试
I—Info 信息
W—Warm 警告
E—Error 错误
F—Fatal 严重错误
S—Silent 无记载(最高优先级,没有什么会被记载)
建议配合Eclipse使用,查看logcat
8. adb shell
由于Android是基于Linux内核的操作系统。因此,在Android上可以执行shell命令。
常用命令如下:
ls 查看文件夹
cd 改变目录
cat <文件名> 查看文件内容
rm 删除文件
mkdir <文件夹> 新建文件夹
cp 复制文件到另一目录
exit 退出shell命令
adb shell
adb shell su –c “
9. adb shell am
am start –n <包名>/<包名>.
am force-stop <包名> 强制停止程序
am kill <包名> 杀死与包名有关的后台进程,不影响用户体验,相当于一般的清理内存功能
am kill-all 杀死所有后台进程
10. adb shell pm
pm path <包名> 查看apk安装在手机后的路径
pm uninstall [-k] <包名> 卸载程序(-k:保留配置文件)
pm clear <包名> 清除应用缓存数据
11. 其他常用命令
adb help 显示帮助信息
adb version 显示adb版本
adb reboot 重启手机
adb shell am broadcast -a android.intent.action.MASTER_CLEAR(恢复出厂)
adb shell dumpsys window | grep init 查看手机的分辨率
adb logcat -s ActivityManager Activity的启动时间
12.常用命令使用
1.adb shell pm list package 查看手机上所有的安装包
2.adb shell pm list package -3 查看第三方安装包
3.adb shell pm list packages -s 查看系统的包
4.adb shell pm list packages -e “要搜索的内容” 查看启动包中搜索的包
5.adb shell dumpsys window | findstr mCurrentFocus 获取当前打开的APP包名(前面的为包名,斜杠后面的是当前启动的acivity)
adb shell dumpsys activity activities | grep "peo"
6.adb shell pm clear (apk包名) 清除应用数据与缓存
7.adb shell am force-stop com.peopxxx.activity 强制停止应用
13.杀掉monkey进程
adb shell ps | findstr monkey
adb shell kill 23033(进程号)
14.monkey设置白名单
--pkg-whitelist-file:只执行白名单文件里面的包/apk
adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt
(以白名单为例)
1.首先手机要连接成功
2.在本地新建一个whitelist的txt文档
3.使用命令adb shell pm list packages 查看手机中的包名
4.将需要执行的包名写进whitelist中
5.在命令行使用adb remount 进行挂载(有的不需要挂载)
6.使用push命令:adb push C:\xxx\Desktop\whitelist.txt /data/local/tmp 将文件push到手机中
7.执行命令:C:\Users\Administrator>adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt -v 10000 >"C:\xxx\Desktop\log.txt"
黑名单--pkg-blacklist-file :不执行黑名单文件里面的包/apk
adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt
15.adb命令查看cpu与内存使用率
adb shell dumpsys meminfo --查看内存信息
具体查看某个pid的内存信息,输入命令:dumpsys meminfo pid
通过adb shell top,得到pid。
参数含义: dalvik:dalvik使用的内存
native:native堆上的内存,指C\C++堆的内存(android3.0以后bitmap就是放在这儿)
other:除了dalvik和native的内存,包含C\C++非堆内存······
Pss:该内存指将共享内存按比例分配到使用了共享内存的进程
heap alloc:已使用的内存
heap free:空闲的内存
share dirty:共享,但有不能被换页出去的内存
privatedirty:非共享,又不能被换页出去的内存(比如linux系统中为了提高分配内存速度而缓冲的小对象,即使你的进程已经退出,该内存也不会被释放)
查看cpu信息:方法一
输入命令:top -m 10 (-m显示最大数量,-s 按指定行排序)
参数含义:
PID : progress identification,应用程序ID
S : 进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
#THR : 程序当前所用的线程数
VSS : Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS : Resident Set Size实际使用物理内存(包含共享库占用的内存)
PCY : 前台(fg)和后台(bg)进程
UID : User Identification,用户身份ID
Name : 应用程序名称
方法二:
命令:adb shell dumpsys cpuinfo
adb shell dumpsys cpuinfo | findstr "xx"
16.测试结果分析
程序无响应,ANR问题:在日志中搜索“ANR”
崩溃问题:在日志中搜索“CRASH”
其他问题:在日志中搜索”Exception”