ADB常用命令行

本文转载自酷安用户晨钟


《搞机工具箱》是我的开发的一款图形化ADB工具箱,也是个人代表作。曾有不少用户反馈希望加上一个可以实时显示ADB代码的功能,在搞机之余还能学习其中的原理,做到举一反三。

所以这篇图文,我将更新了有80次之多的《搞机工具箱》中的所有ADB代码列出并加以扩展,在相应的代码区域也配有相应的截图,帮助大家学习。

开始前必读:
1.个人认为学习新东西不论有没有兴趣,但不要让读者一上来就看到很难理解或普通情况下根本用不到的东西,结果往往会严重打消积极性。所以本篇只会介绍一些常用且实用命令,玩机完全够,不涉及难以理解的知识。
所以不要说“这里不全啊”之类的话。感兴趣可自行百度或使用内置help命令学习更多代码。
2.ADB命令理论所有机型可用,若没效果说明ROM阉割了,这种现象很正常。推荐使用类原生ROM测试
3.本篇不涉及recovery和fastboot相关命令。

一、介绍
Android 调试桥 (adb) 是一种功能多样的命令行工具,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用)本文由晨钟酱原创,并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。
对于玩机用户来说,ADB的权限处于$和#之间,因此可以在不ROOT的情况下对设备进行一些特殊操作,但必须借助电脑。如果不使用电脑,则需要使用SU来获取权限。

二、下载与连接
1.下载官方SDK:
https://dl.google.com/android/repository/platform-tools-latest-windows.zip

2.开启USB调试方法就略过了,注意部分机型限制严格,例如小米还需要打开那个安全设置。有些电脑会出现不识别手机的情况,特别是win7。
在排除硬件问题的情况下可尝试安装驱动
https://adbdriver.com/downloads/
3.将手机连接电脑,设备管理器会出现如下图所示设备,即代表ADB驱动正常

4.解压下载的SDK,会看到以下文件,但本文所介绍的命令仅需要以下三个文件即可执行

5.在SDK根目录的地址栏输入“cmd”三个字母,按回车键即可打开命令行,并定位到当前文件夹。

在命令行输入“adb devices”即可检测当前设备,要注意首次连接需点击手机端的允许调试并打勾。
也可以设置环境变量,实现全局目录的ADB,因篇幅有限在此不讨论,可自行搜索学习。
最后输出了序列号,表示连接成功,一切准备工作到此完成!

三、基础命令
开始前,请先记住下文出现的
代表包名
代表app活动界面
代表网页连接路径
代表电脑端文件路径
代表手机端文件路径

1.服务与连接

adb start-server
启用ADB服务
adb kill-server
关闭ADB服务
adb devices
列出ADB设备
adb -s
使用指定ADB设备。s填写上一步列出的序列号
adb tcpip 5555
设置端口转发为5555,配合下面一条可开启网络调试
adb connect xxx.xxx.xxx.xxx:5555
4个xxx代表手机局域网IP,在关于手机,状态信息,拉到最下面找到IPv4地址
adb disconnect xxx.xxx.xxx.xxx:1234
断开网络调试
adb usb
使用usb连接
adb root
使用root模式。前提是已经获取root,相当于在手机终端输入su
adb reboot
重启设备
adb reboot recovery(fastboot)
重启到rec模式(fb模式)

2.安装与卸载软件
adb install ""
安装电脑端的apk(路径加引号是为了避免文件夹出现空格)
adb install -r ""
覆盖安装(升级)
adb install -s ""
安装到sd卡
adb uninstall
卸载软件(仅第三方)
adb uninstall -k
卸载软件但保留数据(例如给微信降级)

3.传输文件
adb push ""
推送电脑上的文件到手机(手机路径可手动填写,若文件夹不存在会自动创建)。重点说一下:若文件带有中文,需要在本教程由酷安晨钟酱原创,手机端最后再填写一下原文件名,例如 adb push D:\搞机.txt /sdcard/搞机.txt 否则后缀名会被吞掉(这是ANSI转UTF-8编码问题,感兴趣可以看 https://www.coolapk.com/feed/16645920 )
adb pull ""
将存储目录的文件推送到手机,例如adb pull /sdcard/123.txt C:\Users\Administrator\Desktop

4.活动管理器
adb shell am start /
启动app并打开指定界面
adb shell am force-stop
强制停止app(执行后app会直接闪退)
adb shell am start -a android.intent.action.VIEW -d -p
使用指定app打开某个网页链接

5.包管理器
adb shell pm disable-user
禁用系统app,这条一定要背熟!对付洋LJ必备
adb shell pm enable
启用系统app,和上一条配合使用
adb shell pm install
安装手机内的apk文件。注意和不带shell pm的要区分开!路径前也可以跟随之前介绍的几个参数。
adb shell pm uninstall
卸载软件。注意:如果带 "--user 0"参数,则可“卸载”系统软件,但并不是真正的卸载,相关介绍可以看 https://www.coolapk.com/feed/11438010 。
adb shell pm clear
清除所有数据,恢复到初始安装后的状态
adb shell pm list package -f
列出apk的安装位置与对应包名
adb shell pm list package -d
列出禁用的包名,仅限系统应用
adb shell pm list package -e
列出启用的包名,仅限系统应用
adb shell pm list package -s
列出所有系统应用包名
adb shell pm list package -3
列出第三方应用包名
adb shell pm list package -i
列出软件对应的安装来源的包名
adb shell pm list package -i
列出本图文由酷安晨钟酱原创的包名
adb shell pm list package -u
列出被卸载过的软件的包名
《搞机工具箱》的软件操作内,包含了以上2.3.4.5部分功能

6.窗口管理器
adb shell wm density
列出当前显示的DPI。注意,这并不是开发者选项中的dp!换算为"横向分辨率*160/DPI=dp
adb shell wm density xxx
设置DPI为xxx,xxx是正整数
adb shell wm density reset
恢复默认DPI
adb shell wm size
列出当前显示的分辨率。
adb shell wm size axb
设置分辨率,注意手机的格式为“横向x纵向”,且中间的“x”就是字母x,不是乘号,两边没有空格!
adb shell wm size reset
恢复默认分辨率
adb shell wm overscan a,b,c,d
设置、重置屏幕的显示区域。abcd四个参数为整数,分别是显示边缘距左、上、右、下的像素数,正里负外。听不懂没关系,记住它有一个很重要的用途就是永久隐藏导航栏,使用命令wm overscan 0,0,0,-d,其中d为导航栏的像素高度。
关于wm命令多说一句:就算有root了也建议在电脑改以上信息,不会因为手残多输了一位数字让当前界面严重变形,想恢复却找不到输入框。特别是遇到MIUI这种默认有最高限制的,root强行改不好就会卡米!
《搞机工具箱》的显示操作内,包含了以上6的全部功能

7.按键与触摸模拟
adb shell input text “xxx”
向设备输入xxx字符(不支持中文,同样是因为编码问题)
adb shell input keyevent x
x代表keycode。下图左边的红色数字就是keycode,这里只列举一些常用的,完整版的可以自己查。

例如输入adb shell input keyevent 26 就相当于按了一下锁屏键
adb shell input tap x y
模拟点击屏幕x和y坐标,坐标可以打开开发者中的“指针位置”来确定
adb shell input swipe x1 y1 x2 y2 d
在d毫秒内,模拟滑动屏幕x1,y1坐标到x2,y2坐标。
总结一下,input命令加上循环可用作按键脚本,连点器等等。可玩性非常高,真正做到解放双手。
《搞机工具箱》的触摸模拟内,包含了以上7的部分功能

四、高级命令(部分机型可能没效果)
1.Settings设置表
adb shell settings put global window_animation_scale 1.25 修改窗口动画速度为1.25
adb shell settings put global transition_animation_scale 1.32
修改过渡动画速度为 1.32
adb shell settings put global animator_duration_scale 1.55
修改程序动画速度为 1.55
adb shell settings put system font_scale 1.02
修改全局字体缩放为1.02,1为默认
adb shell settings put global policy_control immersive.status=*
隐藏状态栏,上滑可出
adb shell settings put global policy_control immersive.navigation=*
隐藏导航栏,上滑可出
adb shell settings put secure icon_blacklist rotate,volume
隐藏状态栏的旋转和音量图标。注意多个隐藏的图标只能用一条完整指令隐藏,不填就代表会显示!其他图标可以看这里 https://forum.xda-developers.com/huawei-p20-pro/how-to/guide-hiding-status-bar-icons-t3853258
adb shell settings put secure sysui_qqs_count 8
修改状态栏一级下拉图标数量为8个
adb shell settings put secure sysui_rounded_content_padding 2
修改状态栏两侧的置顶间距位2(仅限Pie及以上系统使用,非圆角屏建议调成0)
adb shell settings put global captive_portal_https_url htt删p://connect.rom.miui.c删om/generate_204
修改WIFI验证服务器为国内服务器,多用于去除wifi的x号
更多settings指令可使用adb shell settings查看,充分利用help命令,包括打印系统自带的system, secure, global列表,学会了settings才算真正的掌握了ADB玩机的精髓。以上命令想恢复默认只需删掉最后的参数,本文由酷安晨钟酱原创,把put改成reset执行即可
《搞机工具箱》的软件操作内,包含了以上1的全部功能

2.dumpsys系统状态
adb shell dumpsys window windows | findstr "Current"
显示当前界面的activity。可配合am start / 让app打开并跳转到指定界面
adb shell dumpsys battery
列出电池状态
adb shell dumpsys battery set level 150
修改电池百分比为150
adb shell dumpsys battery reset
恢复真实百分比
adb shell dumpsys meminfo
列出内存状态
adb shell dumpsys cpuinfo
列出CPU状态
adb shell dumpsys gfxinfo
列出帧率状态
adb shell dumpsys display
列出显示屏状态
上面的四个会打印出很多信息,感兴趣可以研究一下输出,多用于开发调试。

目前比较常用的就是以上这些了。如有错误欢迎指出[doge呵斥]
最后附上我开发的几款工具的最新版的动态
《搞机工具箱》全机型通用 https://www.coolapk.com/feed/16222124
《米箱扩展版》包含小米工具箱+多亲工具箱+多看工具箱 https://www.coolapk.com/feed/15947307
《GUI投屏控制器》有线投屏,低延迟反向控制 https://www.coolapk.com/feed/15973938
《有线上网工具》使用USB调试上网,无需数据和wifi https://www.coolapk.com/feed/15027818
《索尼工具箱》索尼机型专用 https://www.coolapk.com/feed/11397755

以上教程由酷安晨钟酱原创,转载不得删减文章内容,且需注明作者和出处!