概述
Android Debug Bridge (adb) 是一个通用命令行工具,是 Android 开发/测试人员必备工具,关于adb的详细介绍可以查看谷歌 adb 官方中文文档 Android Debug Bridge, 这里只是总结了一下常用的命令
文章中涉及的命令说明
- 文章中的命令只针对于连接一个设备的情况,如果连接多个设备,需要在 adb shell -s 后面指定设备序列号, 格式如下所示:
1 | 复制代码格式: |
<serial number>
: 设备序列号<package_name>
: Apk 的包名<local>
: pc 端路径<remote>
: Android 设备上的路径<filepath_in_device>
: Android 设备的文件路径<local_apk_path>
: pc 端 apk 的路径<package_name>/<main_class>
: Apk包名 / 启动类,格式如下所示
1 | 复制代码格式: |
命令总结
以下所有命令参考谷歌 adb 官方文档 Android Debug Bridge,列出了经常用命令
常用命令
备注 | 命令 |
---|---|
查看连接设备 | adb devices |
查看连接设备列表信息 | adb devices -l |
指定设备 | adb -s <serial number> shell |
上传文件和下载文件
备注 | 命令 |
---|---|
将电脑上的文件上传的设备 | adb push <local> <remote> |
设备中的文件下载到电脑 | adb pull <remote> <local> |
安装和卸载应用
备注 | 命令 |
---|---|
安装Apk | adb install <local_apk_path> |
安装Apk 并且授予Apk所有权限 | adb install -g <local_apk_path> |
覆盖安装Apk且保留数据 | adb install <local_apk_path> |
降级安装Apk | adb install -d <local_apk_path> |
卸载Apk | adb uninstall <package_name> |
卸载Apk且保留数据 | adb shell pm uninstall -k <package_name> |
静默安装应用 | adb shell pm install -t -r <local_apk_path> |
卸载所有应用(包括系统应用) | adb shell pm uninstall -k --user 0 <package_name> |
pm
备注 | 命令 |
---|---|
显示第三放应用 | adb shell pm list package -3 |
显示系统应用 | adb shell pm list packages -s |
显示apk文件路径和包名列表 | adb shell pm list packages -f |
查看apk路径 | adb shell pm path <package_name> |
清除数据和缓存 | adb shell pm clear <package_name> |
dumpsys
备注 | 命令 |
---|---|
查看运行Apk的包名 | `adb shell dumpsys window |
查看Activity任务栈 | adb shell dumpsys activity activities |
查看堆的分配情况 | adb shell dumpsys meminfo <package_name> |
查看应用信息 | adb shell dumpsys package <package_name> |
获取设备显示屏参数信息 | adb shell dumpsys window displays |
清除bugreport信息 | adb shell dumpsys batterystats --reset |
从bugreport中过滤关键字信息 | `adb shell dumpsys batterystats |
进入dozeModel deep状态 | adb shell dumpsys deviceidle force-idle |
进入dozeModel light状态 | adb shell dumpsys deviceidle force-idle light |
退出dozeModel | adb shell dumpsys deviceidle unforce |
重新激活设备 | adb shell dumpsys battery reset |
退出充电状态 | adb shell dumpsys battery unplug |
禁用doze mode | adb shell dumpsys deviceidle disable adb shell dumpsys deviceidle whitelist |
getprop
备注 | 命令 |
---|---|
获取设备型号 | adb shell getprop ro.product.model |
获取设备的Android系统版本 | adb shell getprop ro.build.version.release |
wm
备注 | 命令 |
---|---|
获取设备屏幕分辨率 | adb shell wm size |
获取设备屏幕密度(单位:dpi) | adb shell wm density |
调试命令
备注 | 命令 |
---|---|
查看应用的进程 | `adb shell ps -ef |
查看内存占用情况 | `adb shell ps |
查看Activity的启动时间 | adb shell am start -W <package_name>/<main_class> |
强制关闭应用 | adb shell am force-stop <package_name> |
实时查看设备CPU、内存占用等信息 | adb shell top |
实时查看内存占用排名前number的应用 | adb shell top -m <number> |
为Apk跑number次monkey测试 | adb shell monkey -v -p <package_name> <number> |
获取设备的MAC地址 | adb shell cat /sys/class/net/wlan0/address |
获取设备的内存占用信息 | adb shell cat /proc/meminfo |
其他命令
备注 | 命令 |
---|---|
查看日志 | `adb shell logcat |
输出日志到log.txt文件 | `adb shell logcat |
截取屏幕 | adb shell screencap -p <filepath_in_device> |
录制屏幕 | adb shell screenrecord -p <filepath_in_device> |
常见问题汇总
列举一些常见问题,后续会不断完善
1. ubuntu 下使用 adb 出现 no permissions 问题解决方案
运行 sudo adb devices 出现下列情况
1 | 复制代码List of devices attached |
如何解决 no permissions?
在未连接 Android 设备的情况下,运行命令 lsusb, 查看一下 ubuntu 下的 usb
1 | 复制代码Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub |
连接 Android 设备, 打开 usb 调试模式,运行命令 lsusb, 查看一下 ubuntu 下的 usb
1 | 复制代码Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub |
通过对比两个结果,可以查看到新连接的 Android 设备信息,注意其 ID 号,这里是18d1:4ee7
然后进入到 /etc/udev/rules.d/ 目录下,查看是否有 .rules 文件.没有则可以自己新建一个(名字可以随意取,不能有中文),添加端口信息到文件中
1 | 复制代码# 打开一个文件 |
这里 18d1 和 4ee7 则分别是上一步中查看到的 android 设备的信息,MODE 表示权限,完成之后执行下面命令
1 | 复制代码sudo chmod a+rx /etc/udev/rules.d/51-android.rules |
最后拔掉 usb 重新连接,然后在运行下面命令重启 adb 服务
1 | 复制代码sudo adb kill-server |
如果上述步骤都操作正确,运行 sudo adb devices 如下所示,就可以使用 adb 操作设备了
1 | 复制代码List of devices attached |
参考文献
结语
致力于分享一系列 Android 系统源码、逆向分析、算法相关的文章,每篇文章都会反复推敲,结合新的技术,带来一些新的思考,如果你同我一样喜欢 coding,一起来学习,期待与你一起成长
文章列表
Android 10 源码系列
- 0xA01 Android 10 源码分析:Apk 是如何生成的
- 0xA02 Android 10 源码分析:Apk 的安装流程
- 0xA03 Android 10 源码分析:Apk 加载流程之资源加载
- 0xA04 Android 10 源码分析:Apk 加载流程之资源加载(二)
- 0xA05 Android 10 源码分析:Dialog 加载绘制流程以及在 Kotlin、DataBinding 中的使用
工具系列
- 为数不多的人知道的 AndroidStudio 快捷键(一)
- 为数不多的人知道的 AndroidStudio 快捷键(二)
- 关于 adb 命令你所需要知道的
- 如何高效获取视频截图
- 10分钟入门 Shell 脚本编程
- 如何在项目中封装 Kotlin + Android Databinding
逆向系列
本文转载自: 掘金