adb 是 Android 的远程调试命令,在 Android 打开 USB 调试模式或直接打开 ADB 功能,就可以用 shell 命令来控制系统。
Android 打开 USB 调试 打开 Android 系统的开发者模式的通用模式。
1 2 3 4 1.打开“设置”应用,然后滚动到底部。 2.如果它没有“开发者选项”设置,请点击“关于手机”(或“关于平板电脑”),滚动到底部,然后点击内置版本号7次。 3.返回并点击开发者选项。 4.启用 USB 调试。
安装 adb Mac OS X 使用 brew 可以很简单的安装
1 2 $ brew cask install android-platform-tools $ adb devices
随后就可以使用 adb 命令,不需要在配置各种环境变量
其他安装方式见 Set up adb on Mac OS X
链接设备 启动服务
查看设备列表
1 2 3 4 $ adb devices List of devices attached emulator-5554 device
关闭服务
链接设备
当设备没有出现在设备列表中时,我们可以手动链接设备
Android 的 uiautomator 模块默认使用了 5555 端口号
链接成功后,设备会出现在设备列表中
1 2 3 4 5 $ adb devices List of devices attached 10.0.2.1:5555 device emulator-5554 device
使用 shell 命令 1 2 $ adb shell root@x86:/ #
当有一个设备时,默认链接,如果有多个设备,需要指定设备
1 2 $ adb -s 10.0.2.1:5555 shell root@x86:/ #
如果不想每次都手动指定,可以设置环境变量
1 export ANDROID_SERIAL="DC886B75"
shell 登陆后即可使用常见的脚本命令,比如 ls
1 2 3 4 5 $ adb shell root@x86:/ # ls mnt lib ...
如果只是执行简单的命令,我们也可以直接在本地执行
1 2 3 4 $ adb shell ls mnt lib ...
包管理 安装
1 2 3 4 5 6 7 $ adb install test.apk $ adb install -l test.apk # forward lock application $ adb install -r test.apk # replace existing application $ adb install -t test.apk # allow test packages $ adb install -s test.apk # install application on sdcard $ adb install -d test.apk # allow version code downgrade $ adb install -p test.apk # partial application install
卸载
1 2 $ adb uninstall com.test.app $ adb uninstall -k com.test.app # Keep the data and cache directories around after package removal.
查看包安装列表
1 2 3 4 5 6 7 8 9 $ adb shell pm list packages $ adb shell pm list packages -f # See their associated file. $ adb shell pm list packages -d # Filter to only show disabled packages. $ adb shell pm list packages -e # Filter to only show enabled packages. $ adb shell pm list packages -s # Filter to only show system packages. $ adb shell pm list packages -3 # Filter to only show third party packages. $ adb shell pm list packages -i # See the installer for the packages. $ adb shell pm list packages -u # Also include uninstalled packages. $ adb shell pm list packages --user <USER_ID> # The user space to query.
包路径
1 2 $ adb shell pm path com.android.phone package:/system/priv-app/TeleService/TeleService.apk
清除数据和缓存
1 $ adb shell pm clear com.test.abc
进程管理 启动应用
1 2 $ adb shell 进入 Android $ am start -n <package-name>/<package-name>.<activity-name>
或者直接运行
1 $ adb shell am start -n <package-name>/<package-name>.<activity-name>
一些系统应用打开方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 设置 $ am start -n com.android.settings/com.android.settings.Settings # 日历 $ am start -n com.android.calendar/com.android.calendar.LaunchActivity # 闹钟 $ am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock # 音乐和视频 $ am start -n com.android.music/com.android.music.MusicBrowserActivity $ am start -n com.android.music/com.android.music.VideoBrowserActivity $ am start -n com.android.music/com.android.music.MediaPlaybackActivity # 照相机 $ am start -n com.android.camera/com.android.camera.Camera # 浏览器 $ am start -n com.android.browser/com.android.browser.BrowserActivity # 打开网址 $ am start -a android.intent.action.VIEW -d http://www.google.cn/ # 拨打电话 $ am start -a android.intent.action.CALL -d tel:10086
这里有个问题,我们可以通过 pm
命令查到 apk 的包名,但是 activity
就不方便知道了,我们希望只通过包名就能启动应用,从网上查到这个方法
1 $ am start -a android.intent.action.MAIN -n <package-name>
但是这种方式,我在模拟器中只可以打开系统应用,第三方应用会报错,再次查找发现可以使用 monkey
命令来启动应用
1 $ monkey -p <package-name> -c android.intent.category.LAUNCHER 1
经过测试,这种方式是比较方便打开各种应用
杀掉应用
1 $ am force-stop <package-name>
杀掉所有后台进程
更多命令 推送文件到设备
1 $ adb push test.apk /data
拉取设备的文件到本地
1 2 $ adb pull /data/test.apk $ adb pull /data/test.apk ~/Downloads
查看设备 SSN 号
1 $ adb shell getprop | grep ro.boot.serialno
参考