Android ADB 常用命令

转载:https://www.jianshu.com/p/5b21377cf69b

日志命令

adb logcat 查看日志

详细内容可参见
ADB Usage Complete / ADB 用法大全
官方文档Listing of logcat Command Options
他人整合 http://jiongbull.com/2016/03/17/adb%E5%91%BD%E4%BB%A4/
更多的 systemdump https://www.jianshu.com/p/811741a2ad97

抓取崩溃日志

#最近崩溃的栈日志,这个用于快速定位问题
adb shell dumpsys dropbox --print data_app_crash

#复现bug 完整日志,先清空日志
adb logcat -c

#存储在当前目录的 crash.log 中
adb logcat -v time > crash.log

#linux 系统可以使用 tee 一边输出一边记录
adb logcat -v time | tee crash.log

抓取 anr 日志

#root 过的设备
adb shell
cat /data/anr/traces.txt > /mnt/sdcard/0/traces.txt
exit
adb pull /mnt/sdcard/0/traces.txt .

#注意某些机型可能文件名改过,需要自行判断

#未root
#windows 系统 写入文件 bugreport.log
adb shell bugreport > bugreport.log

#linux 系统可以使用 tee 一边输出一边记录
adb shell bugreport | tee bugreport.log

adb wifi链接调试

#开启 tcpip 调试
adb tcpip 5555

#主机执行
adb connect [手机IP]

应用相关

查看应用列表

adb shell pm list package

#has root
adb shell ls /data/data/

adb启动/停止 应用程序

adb shell am start -n [packageName/StartActivity]
adb shell am force-stop [packageName]

端口映射

#显示所有(PC —> DEVICE)映射的端口连接列表

adb forward —list

#映射端口连接(PC —> DEVICE)

adb forward (local) (remote)
adb forward tcp:6100 tcp:7100

#映射端口连接,但是如果local已经映射了就会失败

adb forward —no-rebind (local) (remote)
adb forward --no-rebind tcp:6100 tcp:7100

#移除指定的映射端口连接

adb forward —remove tcp:6100

#移除所有的映射端口连接

adb forward —remove-all

#显示所有来自设备的(DEVICE —> PC)映射的端口连接列表

adb reverse —list

#反向映射端口连接(DEVICE —> PC)

adb reverse (remote) (local)
adb reverse tcp:7000 tcp:5000

#如果local已经映射了就会失败

adb reverse —no-rebind (remote) (local)
adb reverse --no-rebind tcp:7000 tcp:5000

#移除指定的反向映射端口连接

adb reverse —remove tcp:7000
adb reverse —remove-all

应用安装卸载

#获取apk的packagename 和 classname

aapt d badging <apkfile>

#安装apk

adb install <apkfile>

#保留数据和缓存文件,重新安装apk,

adb install -r <apkfile>

#安装apk到sd卡

adb install -s <apkfile>

#卸载app

adb uninstall <package>

#卸载app但保留数据和缓存文件

adb uninstall -k <package>

#同时安装包多个apk到设备上

adb install-multiple

adb install 参数

  • -l 锁定应用
  • -r 替换已存在的应用
  • -t 允许安装测试包
  • -s 安装到sd卡中
  • -d 可以安装低版本安装包
  • -p 安装部分应用
  • -g 授权所有运行时权限

应用状态查看

#查看进程列表

adb shell ps

#查看指定进程状态

adb shell ps -x [PID]

#查看后台services信息

adb shell service list

#查看IO内存分区

adb shell cat /proc/iomem

调试查看

列出所有拥有JDWP端口进程的进程号

adb jdwp

查看系统性能

adb shell am start -W 包名/Activity

文件操作

#查看所有存储设备名

adb shell ls mnt

#从本地复制文件到设备

adb push <local> <remote>

#从设备复制文件到本地

adb pull <remote>  <local>

#列出目录下的文件和文件夹,等同于dos中的dir命令

adb shell ls

#进入文件夹,等同于dos中的cd 命令

adb shell cd <folder>

#重命名文件

adb shell rename path/oldfilename path/newfilename

#删除system/avi.apk

adb shell rm /system/avi.apk

#删除文件夹及其下面所有文件

adb shell rm -r <folder>

#移动文件

adb shell mv path/file newpath/file

#设置文件权限

adb shell chmod 777 [filePath]

#新建文件夹

adb shell mkdir -d path/foldelname

adb sync

把Android设备上/system和/data目录中与主机目录中不一致的内容同步到主机上。
使用前需要设置主机目录地址的环境变量。
adb sync(未设置环境变量)

D:\Code\Git>adb sync
adb: Product directory not specified; use -p or define ANDROID_PRODUCT_OUT

set ANDROID_PRODUCT_OUT = (PATH)

D:\Code\Git>set ANDROID_PRODUCT_OUT = D:\Data\Android

adb sync(已设置环境变量)

D:\Code\Git>adb sync
syncing /system...
push: D:\Data\Android\system/app/WAPPushManager.apk -> /system/app/WAPPushManager.apk

文本操作

#查看文件内容

adb shell cat <file>

#查看文件的头10行

adb shell head -n 10 <file>

#查看文件的尾10行

adb shell tail -n 10 <file>

root权限操作

此操作需要root后的手机才可以执行
#尝试开启root权限,adb连接会重置 成功会提示 restarting adbd as root

adb root

#关闭root权限

adb unroot

#重新挂载系统分区,使系统分区重新可写 成功提示 remount succeeded

adb remount

#重启设备,进入recovery程序的sideload模式,需要root权限

adb reboot sideload

这样就可以操作Android系统文件

调试环境下的dm-verity检查

解锁 system 分区用这个

关闭在调试环境下的dm-verity检查
adb disable-verity
启用在调试环境下的dm-verity检查
adb enable-verity

系统项目

设备信息

#完整设备信息
adb shell cat /system/build.prop
#厂商信息
adb shell cat /system/build.prop | grep ro.product

环境变量

ADB_TRACE 指定打印调试信息,可以设置为以下列表中的值,用逗号隔开

adb、sockets、packets、rwx、usb、sync、sysdeps、transport和jdwp

ANDROID_SERIAL

指定要连接的设备,如果通过-s指定了则该变量不起作用

ANDROID_LOG_TAGS

在使用logcat的情况下,只有这些标签的调试信息才会打印

dumpsys

adb shell dumpsys wifi
adb shell dumpsys cpuinfo

可以dump当前运行的内容包括

编号	参数
1	SurfaceFlinger
2	accessibility
3	account
4	activity
5	alarm
6	appwidget
7	audio
8	backup
9	battery
10	batteryinfo
11	bluetooth
12	bluetooth_a2dp
13	clipboard
14	connectivity
15	content
16	cpuinfo
17	device_policy
18	devicestoragemonitor
19	diskstats
20	dropbox
21	entropy
22	ethernet
23	hardware
24	input_method
25	iphonesubinfo
26	isms
27	keybar
28	location
29	media.audio_flinger
30	media.audio_policy
31	media.camera
32	media.player
33	meminfo
34	mount
35	netsta

设备状态信息

#查看设备cpu和内存占用情况
adb shell top
#查看占用内存前6的app
adb shell top -m 6
#刷新一次内存信息,然后返回
adb shell top -n 1
#MAC地址
adb shell cat /sys/class/net/wlan0/address
#CPU序列号
adb shell cat /proc/cpuinfo

备份

#把设备的数据归档写入文件中
adb backup
adb backup -f backup.ab -all
  • -f 如果没有这个标识,数据将会写入到当前目录中的backup.ab文件中
  • -apk|-noapk 启用|禁用备份.apk文件自己,默认是noapk
  • -obb|-noobb 启用|禁用备份应用关联的apk扩展,默认是noobb
  • -shared|-noshared 启用|禁用备份设备共享存储/SD中的内容,默认是noshared
  • -all 备份所有安装的应用
  • -system|-nosystem 决定-all是否包含系统应用,默认是包含系统应用 packages… 将要备份的应用列表,如果设置了-all或-shared标识,那么这个参数将是可选的

从归档的备份文件中恢复设备内容

adb restore
adb restore backup.ab

设备操作

#返回所有应该包含在错误报告中的设备信息
adb bugreport
#重启
adb reboot
#重启刷机模式
adb reboot bootloader
#重启到恢复模式
adb reboot recovery
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值