adb
安卓调试桥Android Debug Bridge(ADB)
adb可以让我们通过电脑,与目标调试设备通信,如上传下载文件、执行设备上的命令、安装apk应用。
连接设备
在连接设备前,目标设备需要打开“开发者模式”。 如果是USB连接,设备会自动连接,不需要执行额外的连接命令。
如果是通过网络连接,需要使用connect命令连接。
adb connect IP地址
或者用域名连接
adb connect 目标域名
查看已连接设备
有些时候,我们连接了多个设备,执行命令时需要知道针对哪个目标设备。使用以下命令列举已连接设备。
adb devices
结果格式如下:
空格前面的内容是目标设备名称,如例图中的126c1219和192.168.1.98:5555。
多设备时的操作
如果当前只连接一个设备,adb后可直接跟命令名即可,但多设备的时候会出错,因为adb不知道命令该让谁来执行,这个时候需要显式指定,即在adb 后面增加 -s 目标设备名。
如下面的命令,从192.168.1.98:5555这个设备根目录下载init.rc文件到当前目录
adb -s 192.168.1.98:5555 pull /init.rc ./
如果你不想那么麻烦,可以设置ANDROID_SERIAL环境变量的值为目标设备名称,并重新打开终端,然后就不需要每次使用-s指定了。 windows设置方法:
setx ANDROID_SERIAL 目标设备
linux设置方法:
export ANDROID_SERIAL=设备名称
当不需要使用环境变量指定默认时,可以使用上面的命令,将ANDROID_SERIAL环境变量值设置为""即可。
上传下载文件
下载文件命令(将目标设备根目录下的init.rc文件下载到当前目录:
adb pull /init.rc ./
上传文件命令(将当前目录中的init.rc文件上传到目标设备根目录):
adb push ./init.rc ./
如果执行命令时得到“remote Permission denied”的提示,说明权限不够,先执行下面的命令提升为root权限:
adb root
执行目标设备上的命令
我们还可以使用adb,如同在目标设备终端上一样,执行目标设备上的命令,如ls、mount等。我们使用shell命令来达成这一目标。
adb shell
如果我们是普通权限操作,会看到类似这样的提示 shell@grape:/,如果是root权限,则是 root@grape:/。
当我们需要退出时,执行exit命令即可。
安装apk应用/卸载应用
如当前目录下有test.apk这个安卓包,使用以下命令安装:
adb install test.apk
卸载目标设备上的com.show.tv这个package:
adb uninstall com.show.tv
不知道应用的名称,可以使用下面的命令列举:
adb shell pm list packages
如果你只想查看用户应用,不包括系统应用,如下操作:
adb shell pm list packages -3
你可以先使用adb shell后,再执行pm命令。
如果所列出的包名,使得你无法和应用名称对应起来,你可以在目标设备的应用管理、应用详情中看到“应用包名”。
启用应用
可以通过下面的shell命令启用应用
am start 包名/启动activity
如启动向日葵客户端
am start com.oray.sunlogin.service/com.oray.sunlogin.application.Main
基础概念:包名,每个安卓app都会有一个唯一的名称以识别应用,这叫包名,一般习惯使用网址的反写形式命名,由应用开发商自行定义;启动activity,可以理解为一个窗口,一个安卓应用可以有很多activity,开发者可以自行定义哪个activity作为启动activity,只要在AndroidManifest.xml文件中定义即可。