ADB指令可以非常方便地实现应用安装、卸载、设备管理等操作,并且可以摆脱烦人的USB限制,在出差三方公司进行调试时是必不可少的工具,所以是Android开发工程师必须掌握的基本技能。本文将介绍Android开发者工作调试中一些常用的ADB指令。Mac下可以安装iTerm2并设置配套功能,如主题色、语法高亮、命令历史记录等。电脑配置命令行可参考:www.cnblogs.com/easonscx/p/…
1.查看连接的设备:
adb devices
结果:List of devices attached
4c00141601d1477230e device
9YS0220306003367 device
2.连接设备(同一局域网内):
adb connect 设备ip eg: adb connect 172.17.231.62 成功:connected to 172.17.231.62:5555
注意:有些手机或设备可能直接通过adb 连接ip的方式会被拒绝,可以先通过usb连接手机,Android Studio插件(Wifi ADB ULTIMATE)连接后,再通过adb连接。
3.安装apk(应用apk):
adb install D:\app-debug.apk
如果有多个device,如第一个命令情况,则这样使用:通过adb -s 设备名,
adb -s SH0A6PL00243 install D:\app-debug.apk
执行其他命令多设备情况也是如此
4.列出手机装的所有app的包名:
adb shell pm list packages
eg: adb -s 172.17.231.62:5555 shell pm list packages
5.安装系统应用: 系统应用是在system/app目录下的应用,安装只需要将apk推倒system/app下就可以了: 1.设备先root adb -s 设备 root eg : adb -s 172.17.231.62:5555 root 成功 :adbd is already running as root 2.重新挂载设备 adb -s 设备 shell remount eg :adb -s 172.17.231.62:5555 shell remount 成功:[libfs_mgr]__mount(source=/dev/block/dm-3,target=/mnt/scratch,type=f2fs)=0: Success
3.将应用推到system/app下:
adb -s 设备 push demo.apk /system/app
eg : adb -s 172.17.231.62:5555 push /Users/pengliang/Library/Containers/com.tencent.WeWorkMac/Data/Library/Application\ Support/WXWork/Data/1688854033882050/Cache/File/2021-01/Camera2/Camera2.apk /system/app
成功:/Users/pengliang/Library/Containers/co...ed. 1.4 MB/s (4802286 bytes in 3.188s) 显示推送进度及包大小
6.查看安装的系统应用列表: adb -s 设备 ls system/app eg :adb -s 172.17.231.62:5555 ls system/app 成功: 000041ed 00001000 495c0780 WallpaperBackup 000041ed 00001000 495c0780 CustomerFactoryTest 000041ed 00001000 495c0780 NfcNci
7.直接卸载普通应用:
adb uninstall
8.卸载系统应用: 从system/app下把apk文件删除就可以了 adb -s 设备 shell rm -rf /system/app/demo.apk eg: adb -s 172.17.231.62:5555 shell rm system/app/Camera2.apk
结果:通过查询系统应用列表判断是否卸载成功
9.启动应用:
adb shell am start -n /.ui.SplashActivity
10.强制停止应用:
adb shell am force-stop
11.查看 Android 系统版本:
adb shell getprop ro.build.version.release eg : adb -s 172.17.231.62:5555 shell getprop ro.build.version.release 成功 :10
其它使用较少命令: 1.保留数据和缓存文件,重新安装apk,也称强制安装:
adb install -r D:\app-debug.apk
2.安装apk到sd卡:
adb install -s D:\app-debug.apk
3.卸载 app 但保留数据和缓存文件:
adb uninstall -k
4.清除应用数据与缓存:
adb shell pm clear
5.查看日志:
adb logcat
加上过滤会更丝滑:
adb logcat | grep -i “^E.MyApp”
含义: grep白名单模式,“xxx” 匹配的tag,
“^Exxx” 是Error级别,”^.MyApp”结尾匹配MyApp的tag。-i 忽略大小写。
grep -v黑名单模式,其他同上。
比如:
adb logcat | grep -v “^..MyApp|^..MyActivity” adb logcat | grep -vE “^..MyApp|^..MyActivity” #后面第二个使用 egrep 无须转义符
6.重启:
adb reboot
7.获取序列号:
adb get-serialno
emulator-5554
8.查看设备型号:
adb shell getprop ro.product.model
Android SDK built for x86
9.查看屏幕分辨率:
adb shell wm size
Physical size: 480×800
10.查看屏幕密度:
adb shell wm density
Physical density: 480
11.从电脑上传文件到手机:
adb push <本地路径> <远程路径>
12.把手机上的文件复制到电脑:
adb pull <远程路径> <本地路径>
- 解决adb连接不稳定:
adb start/kill server
掉线时, 可以先kill-server, 然后start-server来确保Server进程启动. 往往可以解决问题。
14.截屏:
adb shell screencap /sdcard/screen1.png
15.查看很多系统信息(window,activity,stack,wifi等信息):
adb shell dumpsys -h
比较实用的一个命令是,
adb shell dumpsys meminfo 包名 -d,
可以查看出当前项目是否发生内存泄漏,
实用方法,进入app,然后正常退出,
执行上面命令,如果有组件发生被引用数不为零,就是泄漏,可以dump内存片段文件hprof分析。至于完整查找定位内存泄漏问题,我将在下个文章分析出来。
16.获取电量消耗信息:
获取整个设备的电量消耗信息:
adb shell dumpsys batterystats | more
获取某个apk的电量消耗信息:
adb shell dumpsys batterystats | more
可以使用一个python脚本historian.py来形成可视化html来分析耗电量问题。整理怎么使用我将会在未来的性能优化中分享。
如果想要看更多adb命令,推荐一个《一份超全超详细的 ADB 用法大全》
文章末尾记录一些常用出现的坑和解决办法:
1.adb (5037)端口被占用
解决办法:
a. 第一步,看看服务端口
adb nodaemon server
cannot bind ‘tcp:5037’
b . 第二步,查找5037端口的使用情况
netstat -ano | findstr “5037”
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 8516
TCP 127.0.0.1:5037 127.0.0.1:59163 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:59164 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:59167 TIME_WAIT 0
c. 第三步,查看线程id8586的进程名称
tasklist | findstr “8516”
sjk_daemon 8516 Console 13,071 K
哦,原来是sjk_daemon进程占了adb的端口。
d. 第四部,查看进程名对应的进程id
tasklist
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 24 K
System 4 Services 0 1,128 K
sjk_daemon 963 Console 1 3,071 K
tasklist.exe 1260 Console 1 5,856 K
e, 第五步, 将这个进程kill掉:
taskkill /f /pid 963
如果这个命令提示无权限,那么,可以去windows的“任务管理器”中“进程”那个窗口,找到这个进程,将它杀掉。
再运行adb devices,就没有问题了。
adb devices
9dk7f482396a371j device
或者重启:
adb kill-server
adb start-server
今天的文章Android 常用的ADB指令分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22984.html