ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。
这是 GitHub 上 star 最多的,介绍 adb 用法的仓库 —— awesome-adb 的开场词,简单清晰,一句话概括 adb 的用处和强大。只要做 Android 开发,几乎都绕不开 adb 这个工具,我最近在项目中就经常用到里面的 adb shell "dumpsys window w | grep name="
和 adb shell am start -n com.android.settings/com.android.settings.Settings
,用来查看当前 Activity
和进入系统设置界面。
虽然 adb 很好用,但在 Mac 上刚开始使用也碰到了一点问题。当我霹雳巴拉的敲下 Command + C、Command + V、回车键后,终端给我的回应却是冷酷的 adb: command not found
,嗯哼,“Sorry! The number you dialed does not exist, please check it and dial later?”,好的,let’s fuck it.oh,no,let’s fix it.
解决 MAC 下 adb: command not found
提示 adb: command not found
是因为 mac 电脑下没有配置 Android 环境变量。
- 打开终端,输入:
cd ~/
进入用户目录; - 输入:
touch .bash_profile
,如果当前没有这个文件,则会默认创建; - 输入:
open .bash_profile
,如果是第一次创建,则默认为空白的文件; - 输入:
export ANDROID_HOME=/Users/Kaaaaai/Library/Android/sdk
,这里的export ANDROID_HOME
= 你的安卓sdk
路径
mac下 的 Android studio,点击:preferences
,会出现下图页面,复制地址替换就可以了 - 输入:
export PATH=${PATH}:${ANDROID_HOME}/tools
- 输入:
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
- 输入
source .bash_profile
即可使改动生效;
当然,你也可以输入adb version
查看是否生效
现在就可以了,但是在我的电脑上还会有个问题,就是重启终端后,adb 命令又会失效,需要我重新执行 source ~/.bash_profile
语句才行。这有是怎么回事呢?
解决每次都要执行 source ~/.bash_profile
配置的环境变量才生效
谷歌了一下,发现因为之前给终端配置过显示主题,所以终端每次启动加载是 ~/.zshrc
文件,而不是 ~/.bash_profile
。解决方法也很简单,打开 ~/.zshrc
文件,在最后增加一行:1
source ~/.bash_profile
现在就行了。如果从恋爱的角度去看,这个阶段,是我们已经要到了 adb 这个磨人小妖精的联系方式了,接下来就是深入了解的阶段了。
常用的 adb 命令
基本命令1
2
3
4adb version 显示 adb 版本
adb help 帮助
adb start-server 启动 adb
adb kill-server 停止 adb 服务器
调试设备1
2
3
4
5
6
7
8
9
10
11
12
13adb kill-server //关闭adb服务
adb start-server //打开adb服务
adb devices//获取连接的设备
adb pull {手机地址} {电脑存储文件地址} //从手机取出文件
adb push {电脑存储文件地址} {手机地址} //往手机中添加文件
adb install {your package name}//安装包
adb uninstall {your package name} //卸载包
adb shell settings get secure android_id //获得手机id
adb devices //显示设备
adb reboot //重启
adb -s //选择设备
查看文件
1.查看手机磁盘文件1
2
3第一步:adb shell
第二步:ls
第三部:cd /mnt/sdcard/
2.查看手机应用程序包存储的文件1
2第一步:adb shell
第二步:run-as {应用程序包名}
查看 Activity 栈信息1
2
3
4adb shell "dumpsys window w | grep name=" //查看当前Activity
adb shell dumpsys activity | grep "mFocusedActivity" //查看当前栈顶的Activity
adb shell dumpsys activity your.package.name //查看当前栈顶的Activity的Fragment
adb shell dumpsys activity top //也可以不用包名,而直接使用"top"选项
启动 Activity/Broadcast/Service1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22adb shell am start com.android.settings/com.android.settings.Settings // 打开设置页面
adb shell am start com.android.settings/com.android.settings.SecuritySettings // 打开设置安全页面
adb shell am start com.android.settings/com.android.settings.RadioInfo //打开手机无线信息页面
adb shell am start com.android.settings/com.android.settings.DevelopmentSettings //打开手机开发者选项页面
//通过Intent启动应用程序Activity
adb shell am start -a {action} -d {数据}
这里-a表示动作,-d表述传入的数据,还有-t表示传入的类型
//例如,打开一个网页
adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com (这里-d表示传入的data)
// 打开音乐播放器
adb shell am start -a android.intent.action.MUSIC_PLAYER
// 发送广播
adb shell am broadcast -a {广播动作}
// 启动和关闭服务
adb shell am startservice {服务名称} //打开服务
adb shell am stopservice {服务名称} //关闭服务
贪多嚼不烂。本着这种精神只记录了一些常用的命令,其他的命令需要的可以自行在网络上搜索。以上。