赞
踩
参考:https://github.com/mzlogin/awesome-adb
当启动adb客户端时,客户端首先检测adb服务端进程是否运行,如果没有运行,则启动服务端。当服务端启动时,它会绑定到本地的TCP5037端口,并且监听从adb客户端发来的命令——所有的adb客户端都使用5037端口与adb服务端通信。
接下来服务端与所有正在运行的模拟器或手机连接。它通过扫描5555-5585之间的奇数号端口来搜索模拟器或手机,一旦发现adb守护进程,就通过此端口进行连接。需要说明的是,每一个模拟器或手机使用一对有序的端口,偶数号端口用于控制台连接,奇数号端口用于adb连接,例如:
-
手机
1, console:
5554
-
手机
1, adb:
5555
-
手机
2, console:
5556
-
手机
2, adb:
5557 ...
即如果模拟器与adb在5555端口连接,则其与控制台的连接就是5554端口。
当服务端与所有的模拟器建立连接之后,就可以使用adb命令来控制或者访问了。因为服务端管理着连接并且可以接收到从多个adb客户端的命令,所以可以从任何一个客户端或脚本来控制任何模拟器或手机设备。
获取连接设备:adb devices (输出格式为 [serialNumber] [state])
指定某个设备:adb -s <serialNumber> +操作
查看adb版本:adb version
获取root权限:adb root
(adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。让 adbd 以 root 权限执行,这个就能随意执行高权限命令了)
恢复 adbd 为非 root 权限:adb unroot
重新挂载system 分区为可写:先abd root,再adb remount
重启设备:adb reboot
启动adb server命令: adb start-server
停止 adb server 命令:adb kill-server
清除数据和缓存:adb shell pm clear 包名
查看前台Activity:adb shell dumpsys activity activities | grep mFocusedActivity
查看正在运行的services:adb shell dumpsys activity services [<packagename>] (<packagename>
参数不是必须的,指定 <packagename>
表示查看与某个包名相关的 Services,不指定表示查看所有 Services。)
查看应用详细信息:adb shell dumpsys package <packagename>
模拟按键:adb shell input +
① text <string> (Default: touchscreen) 用于输入框输入文本
② keyevent [--longpress] <key code number or name> ... (Default: keyboard)
③tap <x> <y> (Default: touchscreen)
④swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen) 用于滑动
⑤press (Default: trackball)
⑥roll <dx> <dy> (Default: trackball)
例如:adb shell input keyevent 223 // 熄灭屏幕。224点亮
屏幕截图保存到电脑:adb exec-out screencap -p > sc.png (保存位置可用pwd看看当前目录)
屏幕录制保存到/sdcard:adb shell screenrecord /sdcard/filename.mp4 (按Ctrl+c停止录制,默认录制时间和最长录制时间都是 180 秒。)
pm即package manager,可操作安卓设备上的应用。
列出所有应用:adb shell pm list packages
可在最后加过滤参数:-f (显示应用关联的apk文件)、-d(只显示disabled的应用)、-e(只显示 enabled 的应用)、-s(只显示系统应用)、-3(只显示第三方应用)、-i(显示应用的installer)、-u(包含已卸载应用)、某字符串(包含该字符串的)
清楚应用数据和缓存:adb shell pm clear <packagename>
安装apk:adb install -r <path of apk>
可加参数:-l(将应用安装到保护目录 /mnt/asec)、-r(允许覆盖安装)、-t(允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true"
的应用)、-s(将应用安装到sdcard)、-d(允许降级覆盖安装)、-g(授予所有运行时权限)
卸载apk:adb uninstall [-k] test.apk (-k 参数可选,表示卸载应用但保留数据和缓存目录)
am即activity manager,可以去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等。
启动应用:1、获取地址。adb shell monkey -p 包名 -v -v -v 1
得到:
2、adb shell am start -n <me.chatgame.easy/.SplashActivity>
强制停止应用:adb shell am force-stop <packagename>
复制设备里的文件到电脑:adb pull <设备里的文件路径> [电脑上的目录] (例:adb pull /sdcard/sr.mp4 ~/tmp/)
复制电脑里的文件到设备:adb push <电脑上的文件路径> <设备里的目录>
列出目录内容:adb shell ls
切换目录:adb shell cd <directory>
当前目录:adb shell pwd
创建文件夹:adb shell mkdir
删除文件或目录:adb shell rm path/file
复制文件:adb shell cp path/file newpath/file
移动文件:adb shell mv path/file newpath/file
重命名文件:adb shell rename path/oldfilename path/newfilename
查看设备型号:adb shell getprop ro.product.model
获取屏幕分辨率:adb shell wm size
电池状况:adb shell dumpsys battery
屏幕密度:adb shell wm density
显示屏参数:adb shell dumpsys window displays
android_id:adb shell settings get secure android_id
IMEI:adb shell dumpsys iphonesubinfo
Android系统版本:adb shell getprop ro.build.version.release
IP地址:adb shell ifconfig | grep Mask 或 adb shell ifconfig wlan0 或 adb shell netcfg (三个命令不一样,一个不行试另一个)
MAC地址:adb shell cat /sys/class/net/wlan0/address
CPU信息:adb shell cat /proc/cpuinfo
内存信息:adb shell cat /proc/meminfo
更多硬件和系统属性:adb shell cat /system/build.prop
查看连接过的wifi密码:abd root,然后 cat /data/misc/wifi/*.conf
无线连接:
1、设备与电脑连接到同一个wifi网络上。
2、电脑与设备用usb连接,通过adb devices 查看连接状态。使用adb shell netcfg查看ip地址,记录wlan0后的ip地址。
3、用adb tcpip 5555命令让设备在5555端口监听TCP/IP连接。
4、通过adb connect ip:port连接。注意是ip:port,port也就是上面的5555
5、断开连接:adb disconnect
安装apk失败错误码:
输出 | 含义 | 解决办法 |
---|---|---|
INSTALL_FAILED_ALREADY_EXISTS | 应用已经存在,或卸载了但没卸载干净 | adb install 时使用 -r 参数,或者先 adb uninstall <packagename> 再安装 |
INSTALL_FAILED_INVALID_APK | 无效的 APK 文件 | |
INSTALL_FAILED_INVALID_URI | 无效的 APK 文件名 | 确保 APK 文件名里无中文 |
INSTALL_FAILED_INSUFFICIENT_STORAGE | 空间不足 | 清理空间 |
INSTALL_FAILED_DUPLICATE_PACKAGE | 已经存在同名程序 | |
INSTALL_FAILED_NO_SHARED_USER | 请求的共享用户不存在 | |
INSTALL_FAILED_UPDATE_INCOMPATIBLE | 以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致 | 先 adb uninstall <packagename> 再安装 |
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 | 设备里已经存在与应用里同名的 content provider | |
INSTALL_FAILED_NEWER_SDK | 设备系统版本高于应用要求 | |
INSTALL_FAILED_TEST_ONLY | 应用是 test-only 的,但安装时没有指定 -t 参数 | |
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE | 包含不兼容设备 CPU 应用程序二进制接口的 native code | |
INSTALL_FAILED_MISSING_FEATURE | 应用使用了设备不可用的功能 | |
INSTALL_FAILED_CONTAINER_ERROR | 1. sdcard 访问失败; 2. 应用签名与 ROM 签名一致,被当作内置应用。 | 1. 确认 sdcard 可用,或者安装到内置存储; 2. 打包时不与 ROM 使用相同签名。 |
INSTALL_FAILED_INVALID_INSTALL_LOCATION | 1. 不能安装到指定位置; 2. 应用签名与 ROM 签名一致,被当作内置应用。 | 1. 切换安装位置,添加或删除 -s 参数;2. 打包时不与 ROM 使用相同签名。 |
INSTALL_FAILED_MEDIA_UNAVAILABLE | 安装位置不可用 | 一般为 sdcard,确认 sdcard 可用或安装到内置存储 |
INSTALL_FAILED_VERIFICATION_TIMEOUT | 验证安装包超时 | |
INSTALL_FAILED_VERIFICATION_FAILURE | 验证安装包失败 | |
INSTALL_FAILED_PACKAGE_CHANGED | 应用与调用程序期望的不一致 | |
INSTALL_FAILED_UID_CHANGED | 以前安装过该应用,与本次分配的 UID 不一致 | 清除以前安装过的残留文件 |
INSTALL_FAILED_VERSION_DOWNGRADE | 已经安装了该应用更高版本 | 使用 -d 参数 |
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE | 已安装 target SDK 支持运行时权限的同名应用,要安装的版本不支持运行时权限 | |
INSTALL_PARSE_FAILED_NOT_APK | 指定路径不是文件,或不是以 .apk 结尾 | |
INSTALL_PARSE_FAILED_BAD_MANIFEST | 无法解析的 AndroidManifest.xml 文件 | |
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION | 解析器遇到异常 | |
INSTALL_PARSE_FAILED_NO_CERTIFICATES | 安装包没有签名 | |
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES | 已安装该应用,且签名与 APK 文件不一致 | 先卸载设备上的该应用,再安装 |
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING | 解析 APK 文件时遇到 CertificateEncodingException | |
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME | manifest 文件里没有或者使用了无效的包名 | |
INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID | manifest 文件里指定了无效的共享用户 ID | |
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED | 解析 manifest 文件时遇到结构性错误 | |
INSTALL_PARSE_FAILED_MANIFEST_EMPTY | 在 manifest 文件里找不到找可操作标签(instrumentation 或 application) | |
INSTALL_FAILED_INTERNAL_ERROR | 因系统问题安装失败 | |
INSTALL_FAILED_USER_RESTRICTED | 用户被限制安装应用 | |
INSTALL_FAILED_DUPLICATE_PERMISSION | 应用尝试定义一个已经存在的权限名称 | |
INSTALL_FAILED_NO_MATCHING_ABIS | 应用包含设备的应用程序二进制接口不支持的 native code | |
INSTALL_CANCELED_BY_USER | 应用安装需要在设备上确认,但未操作设备或点了取消 | 在设备上同意安装 |
INSTALL_FAILED_ACWF_INCOMPATIBLE | 应用程序与设备不兼容 | |
does not contain AndroidManifest.xml | 无效的 APK 文件 | |
is not a valid zip file | 无效的 APK 文件 | |
Offline | 设备未连接成功 | 先将设备与 adb 连接成功 |
unauthorized | 设备未授权允许调试 | |
error: device not found | 没有连接成功的设备 | 先将设备与 adb 连接成功 |
protocol failure | 设备已断开连接 | 先将设备与 adb 连接成功 |
Unknown option: -s | Android 2.2 以下不支持安装到 sdcard | 不使用 -s 参数 |
No space left on device | 空间不足 | |
Permission denied ... sdcard ... | sdcard 不可用 | |
signatures do not match the previously installed version; ignoring! | 已安装该应用且签名不一致 | 先卸载再安装 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。