adb 常用命令汇总
adb 常用命令
1、显示已连接的设备列表
adb devices
scc$ adb devices
List of devices attached
X1PVWP742B device
d13d7184 device
2、进入设备
adb shell , 如果有多台设备会报错,因为不知道进入那台设备。
scc$ adb shell
adb: more than one device/emulator
scc$ adb shell
hncnbot_health_robot:/ $ 这就进来了
3、安装 APK 文件到设备
adb install <path_to_apk>
scc$ adb install /Users/scc/shenhua/ximalaya_app.apk
Performing Streamed Install
Success
scc$ 安装成功
4、卸载指定包名的应用
adb uninstall <package_name>
scc$ adb uninstall com.ximalaya.ting.android
Success
scc$ 卸载成功
5、从设备中复制文件到本地
adb push <设备路径> <本地路径>
scc$ adb pull /storage/emulated/0/DCIM/Screenshots/23.jpg /Users/scc/ThreeSDK/2.jpg
/storage/emulated/0/DCIM/Screenshots/2...ed. 34.6 MB/s (956637 bytes in 0.026s)
scc$ 复制成功
6、将本地文件复制到设备
adb pull <本地路径> <设备路径>
scc$ adb push /Users/scc/ThreeSDK/2.jpg /storage/emulated/0/DCIM/Screenshots/24.jpg
/Users/scc/ThreeSDK/2.jpg: 1 file push...d. 125.7 MB/s (956637 bytes in 0.007s
scc$ 复制成功
7、查看设备日志信息
adb logcat
- adb logcat -v time 打印log的详情日志
- adb logcat -v time > /Users/scc/ThreeSDK\log.txt 把日志输出到电脑的上查看,在窗口打印的同时,文件也会同时打印的
- adb logcat -c 清除之前的日志信息,一般在看日志前都会执行这个命令,目的过滤之前的日志方便看最新日志
8、重启设备
adb reboot
9、截取设备屏幕截图
adb shell screencap <file>
scc$ adb shell screencap /storage/emulated/0/DCIM/Screenshots/25.png
scc$ 截取成功
注意:后缀需要 .png 才行, .jpg 是个损坏文件(失败)。
10、屏幕分辨率
adb shell wm size
scc$ adb shell wm size
Physical size: 1080x2400
11、屏幕密度
adb shell wm density
scc$ adb shell wm density
Physical density: 440
scc$
12、显示设备的总内存、空闲内存、已用内存等信息
adb shell cat /proc/meminfo
scc$ adb shell cat /proc/meminfo
MemTotal: 11877584 kB
MemFree: 410700 kB
MemAvailable: 4044952 kB
Buffers: 2172 kB
Cached: 3426048 kB
SwapCached: 340124 kB
Active: 5482004 kB
Inactive: 2158028 kB
Active(anon): 3706288 kB
Inactive(anon): 737084 kB
Active(file): 1775716 kB
Inactive(file): 1420944 kB
Unevictable: 173480 kB
Mlocked: 173480 kB
SwapTotal: 6291452 kB
SwapFree: 3800032 kB
Dirty: 600 kB
Writeback: 0 kB
AnonPages: 4295200 kB
Mapped: 1552836 kB
Shmem: 60056 kB
KReclaimable: 673412 kB
Slab: 662508 kB
SReclaimable: 255124 kB
SUnreclaim: 407384 kB
KernelStack: 129936 kB
PageTables: 187944 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 12230244 kB
Committed_AS: 193739488 kB
VmallocTotal: 263061440 kB
VmallocUsed: 217820 kB
VmallocChunk: 0 kB
Percpu: 11072 kB
CmaTotal: 356352 kB
CmaFree: 0 kB
scc$
-
MemTotal: 总物理内存,即系统总共的内存大小。在这个例子中是 11,877,584 kB。
-
MemFree: 未被使用的物理内存。在这个例子中是 410,700 kB。
-
MemAvailable: 可用物理内存,系统实际可用的内存。在这个例子中是 4,044,952 kB。
-
Buffers: 缓冲区使用的内存。在这个例子中是 2,172 kB。
-
Cached: 缓存的内存,包括文件系统缓存等。在这个例子中是 3,426,048 kB。
-
SwapCached: 在交换空间中的缓存。在这个例子中是 340,124 kB。
-
Active: 活跃的内存,正在使用或者最近被使用的内存。在这个例子中是 5,482,004 kB。
-
Inactive: 不活跃的内存,最近没有被使用的内存。在这个例子中是 2,158,028 kB。
-
AnonPages: 匿名页,被进程使用的非文件 backed 的页。在这个例子中是 4,295,200 kB。
-
Mapped: 映射的内存,包括文件和设备映射的页。在这个例子中是 1,552,836 kB。
-
Shmem: 共享内存,用于进程间通信。在这个例子中是 60,056 kB。
-
Slab: 内核数据结构缓存的大小。在这个例子中是 662,508 kB。
-
CommitLimit: 内核允许使用的最大内存。在这个例子中是 12,230,244 kB。
-
Committed_AS: 当前系统为分配的页面的总和,即当前系统承诺提供的内存大小。在这个例子中是 193,739,488 kB。
-
VmallocTotal: 虚拟内存总大小。在这个例子中是 263,061,440 kB。
-
VmallocUsed: 已使用的虚拟内存。在这个例子中是 217,820 kB。
-
CmaTotal: 连续内存分配(Contiguous Memory Allocator)总大小。在这个例子中是 356,352 kB。
-
CmaFree: 空闲的连续内存分配。在这个例子中是 0 kB。
13、应用的内存使用情况
adb shell dumpsys meminfo <package_name> 其中,<package_name>
是应用程序的包名
14、详细的内存信息
adb shell dumpsys meminfo
提供详细的内存信息,包括应用程序、系统进程和缓存的内存使用情况。输出会包括各个应用程序的内存使用统计,缓存和系统进程的内存信息等。
-
Total RAM: 总共的物理内存。在这个例子中是 11,877,584KB(大约 11.33 GB)。
-
Free RAM: 可用的物理内存。在这个例子中是 5,368,689KB(大约 5.12 GB)。
- Cached PSS: 缓存的进程共享内存。
- Cached Kernel: 缓存的内核占用的内存。
- Free: 未被使用的空闲内存。
-
ION: ION 内存使用情况。
- Mapped: 已映射的 ION 内存。
- Unmapped: 未映射的 ION 内存。
- Pools: ION 内存池中的内存。
-
GPU: GPU 占用的内存,这里是 0K。
-
Used RAM: 已使用的物理内存,包括应用程序使用的 PSS(Proportional Set Size,按照进程占用物理内存的比例分配的内存)和内核占用的内存。在这个例子中是 8,547,100KB。
-
Lost RAM: 由于各种原因丢失的内存,即未能被系统正常使用的内存。
-
ZRAM: 压缩内存(ZRAM)的使用情况。
- Physical used: 物理内存中 ZRAM 实际使用的部分。
- In swap: 在交换空间中的 ZRAM 使用情况。
- Total swap: 总的交换空间大小。
-
Tuning: 调整参数,包括内存的分配策略、OOM(Out of Memory)的阈值等。
15、查看内存信息
adb shell free
显示内存使用情况。包括物理内存和交换空间的总量、已使用和空闲量。
-
Mem(内存):
- total: 总物理内存为 12,162,646,016 字节(大约 11.32 GB)。
- used: 已使用的物理内存为 11,356,925,952 字节(大约 10.56 GB)。
- free: 空闲的物理内存为 805,720,064 字节(大约 0.75 GB)。
- shared: 共享内存为 64,028,672 字节。
- buffers: 缓冲区使用了 2,347,008 字节。
-
-/+ buffers/cache:
- 这个部分提供了经过缓存和未经缓存的内存使用情况。
- buffers/cache 是内存中用于缓存的部分,当系统需要更多内存时,这部分可以被释放。
- 113,545,789,44 字节 是经过缓存或者说除去缓存后的已使用内存。
- 808,067,072 字节 是经过缓存或者说除去缓存后的可用内存。
-
Swap(交换空间):
- total: 交换空间总大小为 6,442,446,848 字节(大约 6 GB)。
- used: 当前使用的交换空间为 3,425,431,552 字节。
- free: 可用的交换空间为 3,017,015,296 字节。
16、查看电池信息
adb shell dumpsys battery
scc$ adb shell dumpsys battery
Current Battery Service state:
AC powered: true
USB powered: false
Wireless powered: false
Max charging current: 1350000
Max charging voltage: 5000000
Charge counter: 2996529
status: 2
health: 2
present: true
level: 100
scale: 100
voltage: 4456
temperature: 340
technology: Li-poly
17、查看CPU信息
adb shell cat /proc/cpuinfo
其中 processor 的数量代表这有几个处理器 这里是4个 也就是4核。
Hardware 表示CPU型号:
18、单独查看属性
adb shell getprop <属性> ,例如 :
18.1 查看设备型号
adb shell getprop ro.product.model
scc$ adb shell getprop ro.product.model
M2012K11AC
18.2 查看 Android 版本
adb shell getprop ro.build.version.release
scc$ adb shell getprop ro.build.version.release
13
属性 | 含义 |
ro.build.version.sdk | SDK 版本 |
ro.build.version.release | Android 系统版本 |
ro.build.version.security_patch | Android 安全补丁程序级别 |
ro.product.model | 型号 |
ro.product.brand | 品牌 |
adb shell getprop ro.debuggable | 是否已 root |
persist.sys.isUsbOtgEnabled | 是否支持 OTG |
dalvik.vm.heapsize | 每个应用程序的内存上限 |
ro.sf.lcd_density | 屏幕密度 |
ro.product.cpu.abilist | CPU 支持的 abi 列表 |
ro.product.cpu.abi |
CPU 支持位数(32还是64) |
ro.product.name | 设备名 |
persist.sys.locale | 设备的语言 |
ro.serialno |
序列号 |
18.2 ro.product.cpu.abilist 和 ro.product.cpu.abi 区别
ro.product.cpu.abi:
该命令返回的是海思芯片是32位还是64位。例如,如果设备的主要 CPU 架构是 ARM,则返回的值可能是 "arm64-v8a" 或 "armeabi-v7a"。
ro.product.cpu.abilist:
该命令返回的是设备支持的所有 CPU 架构。设备可能支持多个 CPU 架构,这些架构在一个以逗号分隔的字符串中列出。
19、查看安装的第三方app的包名
adb shell pm list packages -3
scc$ adb shell pm list packages -3
package:com.ecare.healthhut
package:com.tencent.qqmusiccar
package:com.ximalaya.ting.android.car
package:com.qiyi.video.speaker
package:me.chunyu.ChunyuDoctor
package:com.netease.cloudmusic
scc$
20、设备所有包名(含系统)
adb shell pm list packages
gongtiancideMacBook-Pro:~ scc$ adb shell pm list packages
package:com.android.cts.priv.ctsshim
package:com.android.internal.display.cutout.emulation.corner
package:com.android.internal.display.cutout.emulation.double
package:com.android.providers.telephony
package:com.android.dynsystem
package:com.android.theme.color.amethyst
package:com.android.theme.icon.pebble
package:com.android.providers.calendar
package:com.android.providers.media
package:com.android.internal.systemui.navbar.gestural_wide_back
...
package:com.android.launcher3
package:com.android.backupconfirm
package:com.android.provision
package:com.android.statementservice
package:com.ecare.healthhut
package:com.android.cndamon
package:com.android.theme.icon_pack.sam.settings
package:com.android.settings.intelligence
package:com.android.calendar
21、查看将要启动或退出app的包名
adb shell am monitor(只有在启动或退出的时候才会打印)
scc$ adb shell am monitor
Monitoring activity manager... available commands:
(q)uit: finish monitoring
** Activity starting: com.ximalaya.ting.android.car
** Activity starting: com.ximalaya.ting.android.car
** Activity resuming: com.ximalaya.ting.android.car
** Activity starting: com.iflytek.inputmethod
** Activity starting: com.iflytek.inputmethod
** Activity resuming: com.iflytek.inputmethod
** Activity starting: com.iflytek.inputmethod
** Activity resuming: com.iflytek.inputmethod
com.ximalaya.ting.android.car 和 com.iflytek.inputmethod 就是包名,输入 q 退出。
22、关闭软件(根据包名)
adb shell am force-stop com.iflytek.inputmethod
其中 com.iflytek.inputmethod 就是要要关闭的软件包名
23、导出设备内的apk文件
- 使用 adb shell pm list packages -3 查找安装三方的的包名,如果如果要查所有 请看第22项;
- 使用“adb shell pm path”命令加上要导出的APK文件的包名。如 adb shell pm path me.chunyu.ChunyuDoctor(包名) ,将返回APK文件在设备上的路径
- 使用 adb pull 命令,后面跟上APK文件的路径和要保存的路径。如 adb pull /vendor/operator/app/chunyuyisheng/chunyuyisheng.apk /Users/scc/shenhua/ziyanapk
(查找三方应用)scc$ adb shell pm list packages -3
package:com.sohu.inputmethod.sogou
package:com.dianshijia.newlive
package:com.ecare.healthhut
package:com.qiyi.video.speaker
package:com.ximalaya.ting.android
package:me.chunyu.ChunyuDoctor
package:com.ecare.healthhutorion
(输出路径)scc$ adb shell pm path me.chunyu.ChunyuDoctor
package:/vendor/operator/app/chunyuyisheng/chunyuyisheng.apk
(导出)scc$ adb pull /vendor/operator/app/chunyuyisheng/chunyuyisheng.apk /Users/scc/shenhua/ziyanapk
/vendor/operator/app/chunyuyisheng/chu.... 14.3 MB/s (48741246 bytes in 3.258s)
scc$
24、关闭系统设置(设置App)
adb shell am force-stop com.android.settings
adb shell pm clear com.android.settings
25、查看占用内存最高的 3 个App
adb shell top -m 3
26、刷新2次,返回所以程序所占内存
adb shell top -n 2
adb 不常用命令
1、adb shell am <command>
执行 Activity Manager (AM) 命令,比如启动 Activity、广播等。
2、adb shell pm <command>
执行 Package Manager (PM) 命令,如安装、卸载、禁用应用等。
3、adb forward <local> <remote>
将设备端口与本地端口进行转发,用于调试和测试。
4、adb shell input <command>:
模拟用户输入,比如触摸、按键操作等。
4.1 模拟点击屏幕坐标
adb shell input tap x y
其中,x
和 y
是屏幕上的坐标值。
4.2 模拟滑动
adb shell input swipe x1 y1 x2 y2 [duration(ms)]
其中 x1
、y1
是起始点坐标,x2
、y2
是终止点坐标,可选的 duration
参数表示滑动的时间(毫秒)。
4.3 模拟按键
adb shell input keyevent <key_code>
其中 key_code
是按键的代码,比如 KEYCODE_BACK 表示 返回键。
4.4 模拟文本输入
adb shell input text "android"
模拟文本输入,其中 android 是你想要输入的文本。
Android Studio Unable to establish a connection to adb.
1、adb服务
杀死adb服务:adb kill-server
重启adb服务:adb reconnect
2、adb端口被占(仅限Windows系统)
netstat -aon|findstr "5037"
netstat -a -n -o |findstr "5037"
这两个命令都可以,且是Windows命令,它的作用是查找使用5037端口的进程ID。这个命令不适用于Linux、Mac或Unix系统,这就是为什么你看到“command not found”的错误。
5037 这是adb要的端口,有时候会被其他进程(程序)占用了(一般是会连接手机的软件),所以要查询是谁占用了,然后就可以Kill(停止)它;
根据上图然后输入taskkill /pid 12296/f (12296就是占用此端口的进程id),需要注意的是 有时候会查询到很多的进程(我一般选第一个,不行的话全部试一次),必须提示成功关闭才可行。
如果上面方法不行关闭电脑防火墙重启Android Studio试试。
- 点赞
- 收藏
- 关注作者
评论(0)