参考:https://github.com/mzlogin/awesome-adb

一、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命令

获取连接设备: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 秒。)

AM/PM

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

使用adb连接设备

无线连接:

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! 已安装该应用且签名不一致 先卸载再安装
-- NORMAL --

adb 命令大全(简洁明了)adb命令启动应用相关推荐

  1. Linux命令篇 linux命令大全简洁明了 linux学习笔记

    Linux命令篇 linux命令大全简洁明了 linux学习笔记 Linux 命令大全 文章目录 Linux 命令大全 一. 常用的基础命令 查看目录: 切换目录: 创建和删除: 拷贝和移动文件: 查 ...

  2. DOS命令大全:Findstr命令详解

    http://www.feiesoft.com/windows/cmd/findstr.htm DOS命令大全:Findstr命令详解 使用常规表达式搜索文件中的文本模式. MS-DOS命令语法 fi ...

  3. android 手机命令大全,Android ADB命令大全

    root uid 0 gid 0 system uid 1000 gid 1000 shell uid 2000 gid 2000 app uid 10000 gid 10000 jarsigner ...

  4. android fastboot命令大全,ADBFastboot常用命令

    adb wait-for-device && adb shell logcat -b main > main.txt 安装APK(如果加 -r 参数,保留已设定数据,重新安装fi ...

  5. cmd、命令大全、DOS命令、使用方法(超全),是我喜欢的文章

    cmd命令大全(第一部分) winver---------检查Windows版本  wmimgmt.msc----打开windows管理体系结构(WMI)  wupdmgr--------window ...

  6. cmd常用命令大全 cmd运行命令

    cmd常用命令大全 2k和xp下的cmd命令 accwiz.exe > 辅助工具向导  acsetups.exe > acs setup dcom server executable  a ...

  7. python语言命令大全-Python常用命令最全合集

    文章目录 一.Python环境配置命令 二.Python 常用命令 三.pip管理工具命令 四.发布包到pypi(官网)命令 Mac 电脑自带python2.x版本,终端输入 python -V // ...

  8. cmd命令大全 DOS窗口命令

    cmd命令大全(第一部分) winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更 ...

  9. linux redhat 命令大全,redhat Linux命令大全

    一.启动,关机,登入,登出相关命令 登录 登出 登出 停止系统 停止系统 重启动 切断电源 把内存里的内容写入磁盘 安装lilo启动管理程序 安装lilo启动管理程序 二. Shell相关命令 切换S ...

  10. centos7查看进程ps_linux命令大全之ps命令详解(查看进程结果)

    Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...

最新文章

  1. C++ limits头文件
  2. UA MATH636 信息论5 信道编码简介
  3. (JAVA学习笔记) 类与对象小结
  4. 积性函数(Product_Function)
  5. CISCO路由器/交换机的配置文件备份及还原
  6. 关于ABAP排序不稳定的问题
  7. Redis(四):Spring + JedisCluster操作Redis(集群)
  8. Java笔记-使用RabbitMQ的Java接口实现topic(主题模式)
  9. Qt|C++-OpenGL绘制三角形带
  10. 父亲节,来认识一下这几位“爸爸”
  11. 报错,Error starting ApplicationContext. To display the conditions report re-run your application with
  12. fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本
  13. CCNA学习指南 网络互联
  14. Excel高级函数应用总结
  15. 交友约会APP源码大家有吗
  16. 前端的3D(css3版本)--淘宝造物节3D创景的制作
  17. java-web6-Servlet知识
  18. PPT做起来老大难?试试这5个神器网站
  19. 飞机的纵•横向运动简化数学模型及控制系统设计
  20. 关于固态硬盘SSD的4K对齐

热门文章

  1. 《机器学习实战》完整总结
  2. 京瓷1800打印机扫描步骤_京瓷复印机扫描设置方法京瓷复印机扫描到电脑设置...
  3. linux编译安装libxml2,libxml2的编译与安装
  4. libxml2 not found
  5. Linux批量更改文件后缀名
  6. 可视化大作业复习笔记
  7. 一元线性回归原理及代码实现
  8. CentOS7安装OpenProj
  9. 关于linux驱动管理笔记
  10. 空间两条直线的夹角公式(两向量的夹角公式)