ADB 常用命令

安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。

如果记不住命令怎么办?推荐一个可以快速查看 ADB 命令的插件 adb-idea

find_actions

链接 ADB

有两种方式来启动 ADB,第一种就是直接进入 sdk/platform-tools 目录,在命令行中输入 adb devices 来验证设备是否连接。然而每次进入 platform-tools 目录很麻烦,因此有第二种方法,将 adb 地址写入环境变量,在 macOS 下面可以这样配置:

export PATH=$PATH:<path to Android SDK>/platform-tools

然后在命令行中输入 source ~/.bash_profile 或者 source ~/.zshrc 来更新配置文件。

现在,可以在任意路径中输入adb device,如果手机连接了电脑,并且在 开发者选择 中开启了 USB 调试模式,那么就能看见你所连接的设备序列号了:

➜  ~ adb devices
List of devices attached
80QBCNP234K3    device

其中,80QBCNP234K3 是设备序列号,device 是设备状态,设备状态有三种:

  • offline — 设备未连接到 adb 或者没有响应
  • device — 设备已连接到 adb
  • no device — 未连接模拟器/设备

安装和卸载

我们可以使用 adb install [option] <path> 命令来将电脑上的一个 APP 安装到手机上,比如:

adb install game.apk

有时候你电脑上连接的设备不止一个,那么在做一些操作之前,需要指定我们要操作的设备的序列号,也就是需要执行 adb -s [serial_number] command 命令。

比如现在有两部 Android 手机连接了电脑并都打开了开发者模式,那么在安装 game.apk 的时候,命令就需要变一下:

adb -s 80QBCNP234K3 install game.apk

如果重复安装一个 APP,那么就会得到一个错误信息:Failure [INSTALL_FAILED_ALREADY_EXISTS],这个时候可以加上 -r (replace) 来替换当前应用:

adb install -r game.apk

卸载一个 APP 的命令是 adb uninstall [option] <packagename>

adb uninstall com.test.app

注意: 卸载 APP 时需要使用的是 APP 的包名(package name)。而从电脑安装 APP 到手机上只需要知道电脑中 APK 的文件名。

APP 卸载之后,其缓存文件一般也会被清除。如果我们想保留缓存文件,可以添加 -k,即:

adb uninstall -k com.test.app

文件操作

Android 手机中的文件路径

以前,手机的容量比较小的时候,一般都会有 SD 卡扩展,然后就把资源数据存放到 SD 卡目录下,到现在手机容量越来越大,很多手机已经取消了 SD 卡,但是为了做兼容,也会 mock 一个假的 SD 卡路径。因此,现在也有很多开发者将 APP 数据保存在 /sdcard 目录下。现在已经不推荐将文件存储在 /sdcard 目录下了。

当然,音频视频文件还是应该放在 SD 卡目录下。SD 卡的路径是 /mnt/sdcard/ 或者 /sdcard/sdcard/mnt/sdcard 的软链接。其中,/mnt/sdcard/DCIM 一般用于存放照片的,DCIM 是 Digital Camera IMages 的缩写,但是我们的截图及 APP 保存图片的位置,一般是在 /mnt/sdcard/Pictures。以此类推,可以知道视频文件存放在 /mnt/sdcard/Movies 等等。

当我们在手机上安装好了一个 APP 之后,相关的文件存放在下面两个地方:

  • APP 本身被存放在 /data/app 目录下。
  • 文件目录存放在 /data/data/<package name> 目录下,该目录下存放有数据库、SharedPreference 和其他缓存数据。

如果你想把手机中的文件拷贝到电脑中,使用 adb pull <remote> [local] 命令,如果 local 地址为空,则会拷贝到电脑当前目录下:

adb pull /sdcard/game.apk

如果要把电脑中的文件拷贝到手机里,使用 adb push <local> <remote> 命令:

adb push game.apk /sdcard/data/data

清除 APP 数据

在开发过程中,经常会遇到这么一种情况:清空 APP 缓存数据,然后进行一些列请求。清空 APP 缓存数据可以使用下面的命令:

adb shell pm clear com.example.packagename

该命令不仅能清除 APP 的缓存,还能把 APP 的数据给清空。

查看所有 APP 的名称

adb shell pm list packages

该命令可以查看手机上的 APP 名称。可以在后面加上 -f,这样还能显示该 APP 的路径

事件输入

input

可以在命令行中使用 adb shell input 向屏幕输入一些信息,比如:

adb shell input text "insert%syour%stext%shere"

其中,%s 表示空格

也可以使用 adb shell input tap 命令来模拟屏幕点击事件,比如:

adb shell input tap 500 1450

该命令表示在屏幕 (500, 1450) 的坐标点上进行一次点击

也可以使用 adb shell input swipe 命令来模拟手势滑动事件,比如:

adb shell input swipe 100 500 100 1450 100

该命令表示从屏幕坐标 (100, 500) 开始,滑动到 (100, 1450) 结束,整个过程耗时 100ms。

上面的命令还可以模拟”长按”(Long Press) 操作,也就是两个坐标点相同,耗时超过 500ms

adb shell input swipe 100 500 100 500 500

可以使用 adb shell input keyevent 命令来模拟点按实体按钮的命令,比如

adb shell input keyevent 25

该命令表示调低音量。这个数字 25 是在 AOSP 源码中的 KeyEvent 类里面定义的一个事件常量。该类定义了将近 300 个事件常量。

am

am (Activity Manager) 命令用来启动一个 APP、启动 Activity、启动广播和服务等等。

启动一个 Activity,最简单的命令可以使用 adb shell am start com.package.name

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值