adb 命令大全(简洁明了)adb命令启动应用

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

一、ADB运行原理:

当启动adb客户端时,客户端首先检测adb服务端进程是否运行,如果没有运行,则启动服务端。当服务端启动时,它会绑定到本地的TCP5037端口,并且监听从adb客户端发来的命令——所有的adb客户端都使用5037端口与adb服务端通信。
接下来服务端与所有正在运行的模拟器或手机连接。它通过扫描5555-5585之间的奇数号端口来搜索模拟器或手机,一旦发现adb守护进程,就通过此端口进行连接。需要说明的是,每一个模拟器或手机使用一对有序的端口,偶数号端口用于控制台连接,奇数号端口用于adb连接,例如:


   
   
  1. 手机 1, console: 5554
  2. 手机 1, adb: 5555
  3. 手机 2, console: 5556
  4. 手机 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_DEXOPTdex 优化验证失败或空间不足 
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_ERROR1. sdcard 访问失败;
2. 应用签名与 ROM 签名一致,被当作内置应用。
1. 确认 sdcard 可用,或者安装到内置存储;
2. 打包时不与 ROM 使用相同签名。
INSTALL_FAILED_INVALID_INSTALL_LOCATION1. 不能安装到指定位置;
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_NAMEmanifest 文件里没有或者使用了无效的包名 
INSTALL_PARSE_FAILED_BAD_SHARED_USER_IDmanifest 文件里指定了无效的共享用户 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: -sAndroid 2.2 以下不支持安装到 sdcard不使用 -s 参数
No space left on device空间不足 
Permission denied ... sdcard ...sdcard 不可用 
signatures do not match the previously installed version; ignoring!已安装该应用且签名不一致先卸载再安装

 

 

-- NORMAL --
  • 6
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值