adb(Android Device Bridge),就是Android设备与别的设备交互的一个桥梁,我们可以通过adb实现对Android设备的一些操作。
基本操作
- adb devices
可以查看所有连接的Android设备。
C:\Users\yeliang>adb devices
List of devices attached
SCIV4SZHOZOFQC9L device
emulator5554 device
- adb (-d -e -s) shell
可以进入adb shell模式。出现多台设备同时连接时,可以使用adb (-d -e -s) shell进入指定的设备。其中,-d(device) 选择进入Android真机设备,-e(emulator) 选择进入Android模拟器,-s(serialNumber) 选择adb devices
命令后,出现的编码进入相应的设备,如
adb -s SCIV4SZHOZOFQC9L shell
- adb (-d -e -s) pull <手机(from)> <电脑(to)>
将Android设备上的文件复制到本地。注意斜杠 和反斜杠**。
adb pull /mnt/sdcard/tmp.txt D:\tmp\
- adb (-d -e -s) push <电脑(from)> <手机(to)>
将本地的文件复制到Android设备上。
adb pull D:\tmp\tmp.txt /mnt/sdcard/
- adb启动activity
adb shell am start -n {包(package)名}/{包名}.{活动(activity)名称}
如:启动浏览器
adb shell am start -n com.android.browser/com.android.browser.BrowserActivity
- adb启动service
adb shell am startservice -n {包(package)名}/{包名}.{服务(service)名称}
如:启动自己应用中一个service
adb shell am startservice -n com.yetland.young/com.yetland.young.service.MainService
若包名一致,则可以简写为
adb shell am startservice -n com.yetland.young/.service.MainService
若包名不一致,则填写完整的包名,以免报错。 - adb发送broadcast
adb shell am broadcast -a <广播动作>
如:发送一个网络变化的广播
adb shell am broadcast -a android.net.conn.CONNECTIVITY_CHANGE
adb shell am broadcast 后面的参数有:
[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]
例如:
adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true
- 获取设备号
adb get-serialno
adb install命令
- 命令
adb (-d -e -s ) -r install //apk路径
测试说明,路径中有中文不影响安装
-r 代表强制安装。
若手机中已有包名相同的apk且未使用 -r 则会报**INSTALL_FAILED_ALREADY_EXISTS **错误。若使用,可直接替换。
使用 -r 可在一定程度上降低安装的失败率。
- 常见错误
INSTALL_FAILED_ALREADY_EXISTS 程序已经存在
INSTALL_FAILED_INVALID_APK 无效的APK
INSTALL_FAILED_INVALID_URI 无效的链接
INSTALL_FAILED_INSUFFICIENT_STORAGE 没有足够的存储空间
INSTALL_FAILED_DUPLICATE_PACKAGE 已存在同名程序
INSTALL_FAILED_NO_SHARED_USER 要求的共享用户不存在
INSTALL_FAILED_UPDATE_INCOMPATIBLE 版本不能共存
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 需求的共享用户签名错误
INSTALL_FAILED_MISSING_SHARED_LIBRARY 需求的共享库已丢失
INSTALL_FAILED_REPLACE_COULDNT_DELETE 需求的共享库无效
INSTALL_FAILED_DEXOPT dex优化验证失败
INSTALL_FAILED_OLDER_SDK 系统版本过旧
INSTALL_FAILED_CONFLICTING_PROVIDER 存在同名的内容提供者
INSTALL_FAILED_NEWER_SDK 系统版本过新
INSTALL_FAILED_TEST_ONLY 调用者不被允许测试的测试程序
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 包含的本机代码不兼容
CPU_ABIINSTALL_FAILED_MISSING_FEATURE 使用了一个无效的特性
INSTALL_FAILED_CONTAINER_ERROR SD卡访问失败
INSTALL_FAILED_INVALID_INSTALL_LOCATION 无效的安装路径
INSTALL_FAILED_MEDIA_UNAVAILABLE SD卡不存在
INSTALL_FAILED_INTERNAL_ERROR 系统问题导致安装失败
DEFAULT 未知错误
adb uninstall命令
- 方式1
adb shell
cd data/app
rm // 包名
exit
- 方式2
adb (-d -e -s) [-r] uninstall // 包名
-r 代表卸载时保存数据
adb 文件操作
- 基本命令
adb shell ls mnt 查看所有设备存储设备名
adb remount 将 system 分区重新挂载为可读写分区
adb push <local> <remote> 从本地复制文件到设备
adb pull <remote> <local> 从设备复制文件到本地
adb shell ls 列出目录下的文件和文件夹
adb shell cd <folder> 进入文件夹
adb shell rm [-r] <path/filename> ** 删除文件(夹)。操作为文件夹时需加上-r**
adb shell cat <file> ** 查看文件内容**
adb shell mkdir path/foldername 新建文件夹