文章目录

一、adb shell中的am pm命令

1.1 am命令

am全称activity manager,你能使用am去模拟各种系统的行为。

在 adb shell 中,您可以使用 Activity 管理器 (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性,等等。在 shell 中,相应的语法为:

am command

您也可以直接从 adb 发出 Activity 管理器命令,无需进入远程 shell。例如:

adb shell am start -a android.intent.action.VIEW

start [options] :启动activity通过指定的intent参数。

在这里插入图片描述

startservice [options] : 启动service通过指定的intent参数

force-stop : 强制停止指定的package包应用。

kill [options] :杀死指定package包应用进程

kill-all :杀死所有的后台进程。

在这里插入图片描述

broadcast [options] :发送一个intent

instrument [options] :测试命令

在这里插入图片描述

profile start :在进程中运行profile,分析结果写到里。

profile stop :停止profile。

set-debug-app [options] :设置package包应用为debug模式。

clear-debug-app :清空之前用set-debug-app命令设置的package包应用。

在这里插入图片描述

monitor

screen-compat

display-size

display-density

to-uri

to-intent-uri

在这里插入图片描述

1.2 pm命令

pm全称package manager,你能使用pm命令去模拟android行为或者查询设备上的应用等,当你在adb shell命令下执行pm命令:

pm command

您也可以直接从 adb 发出软件包管理器命令,无需进入远程 shell。例如:

adb shell pm uninstall com.example.MyApp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


二、常用命令

开启adb服务

adb start-server 开启adb服务

关闭adb服务

adb kill-server 关闭adb 服务

2.1查询设备 adb devices -l

查看哪些设备实例已连接到 adb 服务器

可以使用 devices 命令生成已连接设备的列表。

  adb devices -l
  • 序列号:由 adb 创建的字符串,用于通过端口号唯一标识设备。 序列号示例:emulator-5554
  • 状态:设备的连接状态:
    • offline:设备未连接到 adb 或没有响应。
    • device:设备现已连接到 adb 服务器。此状态并不表示 Android 系统已完全启动并可正常运行,因为在设备连接到 adb 时系统仍在启动。在启动后,这将是设备的正常运行状态。
    • no device:未连接任何设备。
  • 说明:包含 -l 选项,devices 命令会告知设备列表。

2.2 将命令发送至特定设备 adb devices -s

请使用 devices 命令获取目标设备的序列号。

获得序列号后,请结合使用 -s 选项与 adb 命令来指定序列号。

在以下示例中,先获得了已连接设备的列表,然后使用其中一个设备的序列号在该设备上安装了 helloWorld.apk

$ adb devices
List of devices attached
emulator-5554 device
emulator-5555 device

$ adb -s emulator-5555 install helloWorld.apk

如果有多个可用设备,但只有一个是模拟器,请使用 -e 选项将命令发送至该模拟器。同样,如果有多个设备,但只连接了一个硬件设备,请使用 -d 选项将命令发送至该硬件设备。

2.3 安装应用 adb install

使用 adb 的 install 命令在模拟器或连接的设备上安装 APK:

adb install path_to_apk

安装测试 APK 时,必须在 install 命令中使用 -t 选项。

2.4 设置端口转发 adb forward

使用 forward 命令设置任意端口转发 , 将特定主机端口上的请求转发到设备上的其他端口。

示例设置了主机端口 6100 到设备端口 7100 的转发:

adb forward tcp:6100 tcp:7100

以下示例设置了主机端口 6100 到 local:logd 的转发:

adb forward tcp:6100 local:logd

2.5 将文件复制到设备push/从设备复制文件pull

  • pull 将文件复制到设备。

  • push 命令从设备复制文件。

install 命令(仅将 APK 文件复制到特定位置)不同,使用 pullpush 命令可将任意目录和文件复制到设备中的任何位置。

从设备中复制某个文件或目录(及其子目录)

adb pull remote local

如需将某个文件或目录(及其子目录)复制到设备

adb push local remote

localremote 替换为开发机器(本地)和设备(远程)上的目标文件/目录的路径。例如:

adb push foo.txt /sdcard/foo.txt

2.6 停止 adb 服务器 adb kill-server

如需停止 adb 服务器,使用 adb kill-server 命令 。

2.7 截取屏幕截图

screencap 命令是一个用于对设备显示屏截取屏幕截图的 shell 实用程序。在 shell 中,语法如下:

screencap filename

如需从命令行使用 screencap,请输入以下命令:

adb shell screencap /sdcard/screen.png

以下屏幕截图会话示例展示了如何使用 adb shell 截取屏幕截图,以及如何使用 pull 命令从设备下载屏幕截图文件:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

2.8 录制视频

screenrecord 命令是一个用于录制设备(搭载 Android 4.4(API 级别 19)及更高版本)显示屏的 shell 实用程序。该实用程序将屏幕 Activity 录制为 MPEG-4 文件。您可以使用此文件创建宣传视频或培训视频,或将其用于调试或测试。

在 shell 中,使用以下语法:

screenrecord [options] filename

如需从命令行使用 screenrecord,请输入以下命令:

adb shell screenrecord /sdcard/demo.mp4

按 Ctrl + C 键(在 Mac 上,按 Command + C 键)可停止屏幕录制;如果不手动停止,到三分钟或 --time-limit 设置的时间限制时,录制将会自动停止。

如需开始录制设备屏幕,请运行 screenrecord 命令以录制视频。然后,运行 pull 命令以将视频从设备下载到主机。下面是一个录制会话示例:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

screenrecord 实用程序能以您要求的任何支持的分辨率和比特率进行录制,同时保持设备显示屏的宽高比。默认情况下,该实用程序以本机显示分辨率和屏幕方向进行录制,时长不超过三分钟。

screenrecord 实用程序的局限性:

  • 音频不与视频文件一起录制。
  • 无法在搭载 Wear OS 的设备上录制视频。
  • 某些设备可能无法以它们的本机显示分辨率进行录制。如果在录制屏幕时出现问题,请尝试使用较低的屏幕分辨率。
  • 不支持在录制时旋转屏幕。如果在录制期间屏幕发生了旋转,则部分屏幕内容在录制时将被切断。-

在这里插入图片描述


更多命令

获取包名和界面名

adb shell dumpsys window windows | findstr mFocusedApp

使用adb更换apk

adb connect ip  //连接机顶盒
adb remount  //获取权限
adb push newAppName.apk /system/app  //将新apk推到机顶盒
adb shell  //进入shell
cd /system/app
chmod 777 newAppName.apk
rm oldAppName.apk  //删除或者mv oldAppName.apk oldAppName.apk.bak
sync
reboot

用U盘更换apk 使用SecureCRT+U盘

1、mount -rwo remount /system
2、cd /system/app
3、ll
4、rm oldAppName.apk
5、cp /U盘路径/newAppName.apk
6、sync
7、chmod 644/777 newAppName.apk
8、reboot

获取系统权限

mount -o remount /system

查看版本号

getprop ro.build.version.incremental

【版本】查看APK版本

pm dump XXX(包名) | grep version

pm dump  com.xxx | grep version

查看APK内存占用

procrank | grep apk包名关键字

强制停止某应用

am force-stop 包名

清除APK的数据及缓存

pm clear 包名

【启动】通过命令启动APK

am start -n APK包名/启动类名

am start -a APK的action

adb shell am start -n  com.xxx
adb shell am start -n  com.xxx

通过IPTV拉起页面

am start -n IPTV包名/启动类名 -e intentMsg "http://XXX"

【包名】过滤包名关键字查看对应APK所在位置

pm list packages -f | grep apk包名

dumpsys package apk包名

查看栈顶activity

dumpsys activity | grep "mFocusedActivity"

截屏

/system/bin/screencap -p /sdcard/screencap.png

录屏

screenrecord /sdcard/BlackScreen.mp4

命令抓取网络包

tcpdump -i any -p -s 0 -w /data/123.pcap

命令抓日志

logcat -c && logcat -v threadtime > /data/123.log
重定向抓log
logcat -v time > /data/d.log

【安装】安装APK

pm install -r 待安装apk文件目录


使用 -r 选项进行重新安装,该选项会保留应用程序的数据。

安装 adb install -r D:\xxx\xxx.apk

【卸载】卸载APK(仅卸载/data/app目录下安装的apk)

pm uninstall apk包名

adb shell pm uninstall com.xxx

强制删除某目录

rm -rf XXX目录

查询所有系统应用

pm list packages -s

查询所有第三方应用

pm list packages -3

启动adb服务

adb strat-server

停止adb服务

adb kill-server

adb连接设备(该设备需开启adb)

adb connect 设备ip

adb断开所有已连接设备

adb disconnect

查看当前连接的设备IP地址

adb devices

adb获取root权限

adb root(切换为root用户,若要使用shell命令,需再次重新连接该设备)

adb挂载设备

adb remount

adb进入shell模式

adb shell

adb重启已连接的设备

adb reboot

adb安装应用

adb install -r 待安装应用文件存放目录

adb卸载应用(仅卸载/data/app目录下安装的apk)

adb uninstall 待卸载应用的包名

adb导出已连接设备中某目录的文件到本地PC

adb pull 已连接设备中的文件目录 本地PC磁盘目录

adb将本地PC的文件直接导入到已连接设备某目录

adb push 本地PC中文件的目录 已连接设备的某目录

查看内存

adb shell后
cat /proc/meminfo
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐