android adb

学习参考参考 Adb
adb 其实就是 Android Debug Bridge, Android 调试桥的缩写,是安卓sdk的一个工具,adb工具在/platform-tools/目录下;

adb devices

打印出设备列表


image.png

连接设备拥有如下几种状态:

offline 未连接到adb或者无响应
device 已连接到adb上
no device 没有连接着的模拟器或设备

对于adb只能同时对一个设备执行命令,因此当设备数量超过1时,需要选择执行命令的设备。
选择设备有如下几个参数:

-d 如果有多个模拟器和一个usb设备,就使用-d;
-e 如果有多个usb设备和一个模拟器,就使用-e;
-s 通过指定的序列号对指定的设备或模拟器执行一条命令,这是指定设备更通用的方式;

adb push/pull 数据的拷贝和推送

参数应用:

-p 显示传输进度
-a 拷贝时保留时间戳和模式,相当于linux命令cp的-p参数

从设备复制文件

adb pull remote local

将文件复制到设备

adb push local remote

apk的安装与卸载

安装apk

adb install <.apk完成路径>

安装多个apk到手机

adb install-multiple <.apk完成路径...>

一些特殊场合的apk安装参数:

-l 指禁止将文件移动到手机设备以外的位置;
-r 指覆盖安装APP并保留旧数据;
-t 指先测试安装一下;
-s 指安装进SD卡中;
-d 指允许版本代码降级;
-g 允许所有运行权限;

安装时的常见错误

INSTALL_FAILED_UNKNOWN_SOURCES
未知来源处于勾选状态
INSTALL_FAILED_INVALID_URI apk
名字不能是中文的
INSTALL_FAILED_ALREADY_EXISTS
已安装,需要用-r替换安装
INSTALL_FAILED_INSUFFICIENT_STORAGE
空间不足

卸载apk

adb uninstall
adb uninstall [-k] (保留数据和缓存目录)

adb logcat

导出系统命令,包括error的堆栈和log类打出的日志
adb logcat [

adb服务的管理

adb start-server
adb kill-server

adb远程操作

设备目标设备监听TCP/IP连接,默认端口为5555,执行命令:

adb tcpip 5555

命令返回:
restarting in TCP mode port: 5555

获取安卓设备的ip地址后,执行以下命令:

获取安卓设备ip地址的方式在设置->关于手机->状态信息->ip

adb connect

断开链接

disconnect [[:]]
若有特殊情况无法连接设备,可以试试adb kill-server,重启并重新操作.

设置端口转发

可以使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口.

adb forward tcp:6100 tcp:7100

adb shell

运行shell命令的两种方式

  • 每次执行一个单独的shell命令,然后退出shell;

adb [-d|-e|-s ] shell

  • 先进入shell,再在shell中执行命令;

adb [-d|-e|-s ] shell

am

利用它可以启动一个app,但需要知道包名和活动名:

am start -n 包(package)名/包名.活动(activity)名称

还有种方式就是利用Action的方式启动

adb shell am start -a android.intent.action.VIEW [指定页面的scheme]

参数:

-n 直接启动组件
-a 启动前执行的action
-W:等待启动完成
-R [count]:重复 Activity 启动 count 次数。在每次重复前,将完成顶部 Activity
-S:启动 Activity 前强行停止目标应用
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行
--opengl-trace:启用 OpenGL 函数的跟踪
-P file:类似于 --start-profiler,但当应用进入空闲状态时分析停止

介绍一个间接的方法:

monkey -p app.greyshirts.sslcapture -c android.intent.category.LAUNCHER 1

pm 包管理器

列出设备中所有包的名称和路径;

pm list packages [-f]

列出指定包名的apk路径:

pm path com.qihoo.map360.auto

查看设备ip
比如无线连接需要查看手机ip,可以直接使用命令:

ifconfig wlan0

dumpsys相关

输出系统信息,如window, activity, task/back stack信息.

activity:输出app组件相关信息,还可以用细分参数获得单项内容(adb shell dumpsys activity activities来获取activity task/back stack信息).

dumpsys window |grep mCurrentFocus
获取当前栈顶activity

alarm:输出当前系统的alarm信息
cpuinfo:输出当前的CPU使用情况
diskstats:输出当前的磁盘使用状态
batterystats:电池使用信息
package:package相关信息, 相当于pm功能的集合 输出诸如libs, features, packages等信息
meminfo:输出每个App的内存使用和系统内存状态,可以指定包名
例如adb shell dumpsys meminfo com.anly.githubapp

window:输出当前窗口相关信息,policy, animator, tokens, windows

获取当前界面的UI信息,可以用:

adb shell dumpsys activity top

要获取当前界面的Activity:

adb shell dumpsys activity top | grep ACTIVITY
adb shell dumpsys window | grep mCurrentFocus

截屏与录屏

截屏

screencap filename

拿到截屏的文件

进入到shell界面
screencap /sdcard/screen.png
exit
adb pull /sdcard/screen.png

录屏

screenrecord [options] filename
拿到录屏文件
进入shell界面
screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
exit
adb pull /sdcard/demo.mp4

关于录屏时候的参数

--help 显示命令语法和选项
--size widthxheight 设置视频大小:1280x720,默认值是设备的原生显示分辨率(如果支持),如果不支持,则使用 1280x720
--bit-rate rate 设置视频的视频比特率(以兆比特每秒为单位)。默认值为 4Mbps(screenrecord --bit-rate 6000000 /sdcard/demo.mp4)
--time-limit time 设置最大录制时长(s)默认值和最大值均为180s。
--rotate 将输出旋转 90 度。此功能是实验性的。
--verbose 显示命令行屏幕上的日志信息。如果您不设置此选项,则运行时此实用程序不会显示任何信息。

你可能感兴趣的:(android adb)