adb 常用命令汇总

举报
帅次 发表于 2024/02/18 17:05:53 2024/02/18
【摘要】 ​adb 常用命令1、显示已连接的设备列表adb devicesscc$ adb devicesList of devices attachedX1PVWP742B    deviced13d7184    device2、进入设备adb shell , 如果有多台设备会报错,因为不知道进入那台设备。scc$ adb shelladb: more than one device/emulat...

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

  1. adb logcat -v time 打印log的详情日志
  2. adb logcat -v time > /Users/scc/ThreeSDK\log.txt 把日志输出到电脑的上查看,在窗口打印的同时,文件也会同时打印的
  3. 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$ 

  1. MemTotal: 总物理内存,即系统总共的内存大小。在这个例子中是 11,877,584 kB。

  2. MemFree: 未被使用的物理内存。在这个例子中是 410,700 kB。

  3. MemAvailable: 可用物理内存,系统实际可用的内存。在这个例子中是 4,044,952 kB。

  4. Buffers: 缓冲区使用的内存。在这个例子中是 2,172 kB。

  5. Cached: 缓存的内存,包括文件系统缓存等。在这个例子中是 3,426,048 kB。

  6. SwapCached: 在交换空间中的缓存。在这个例子中是 340,124 kB。

  7. Active: 活跃的内存,正在使用或者最近被使用的内存。在这个例子中是 5,482,004 kB。

  8. Inactive: 不活跃的内存,最近没有被使用的内存。在这个例子中是 2,158,028 kB。

  9. AnonPages: 匿名页,被进程使用的非文件 backed 的页。在这个例子中是 4,295,200 kB。

  10. Mapped: 映射的内存,包括文件和设备映射的页。在这个例子中是 1,552,836 kB。

  11. Shmem: 共享内存,用于进程间通信。在这个例子中是 60,056 kB。

  12. Slab: 内核数据结构缓存的大小。在这个例子中是 662,508 kB。

  13. CommitLimit: 内核允许使用的最大内存。在这个例子中是 12,230,244 kB。

  14. Committed_AS: 当前系统为分配的页面的总和,即当前系统承诺提供的内存大小。在这个例子中是 193,739,488 kB。

  15. VmallocTotal: 虚拟内存总大小。在这个例子中是 263,061,440 kB。

  16. VmallocUsed: 已使用的虚拟内存。在这个例子中是 217,820 kB。

  17. CmaTotal: 连续内存分配(Contiguous Memory Allocator)总大小。在这个例子中是 356,352 kB。

  18. CmaFree: 空闲的连续内存分配。在这个例子中是 0 kB。

13、应用的内存使用情况

adb shell dumpsys meminfo <package_name> 其中,<package_name> 是应用程序的包名

14、详细的内存信息

adb shell dumpsys meminfo

        提供详细的内存信息,包括应用程序、系统进程和缓存的内存使用情况。输出会包括各个应用程序的内存使用统计,缓存和系统进程的内存信息等。

gongtiancideMacBook-Pro:~ scc$ adb shell dumpsys meminfo 
Applications Memory Usage (in Kilobytes):
Uptime: 591674632 Realtime: 763964690


Total RSS by process:
    737,104K: system (pid 2029)
    653,604K: com.UCMobile (pid 19848 / activities)
    618,964K: com.tencent.mm (pid 9209)
    515,708K: com.android.systemui (pid 3227)
    418,092K: com.miui.home (pid 3255 / activities)
    346,024K: com.android.camera (pid 31626)
    304,284K: com.UCMobile:privileged_process0 (pid 28869)
    284,884K: com.UCMobile:gpu_process (pid 28923)
    283,600K: com.UCMobile:privileged_process1 (pid 29578)
    269,688K: com.UCMobile:MediaPlayerService (pid 32226)
    256,704K: com.android.phone (pid 3220)
。。。。。。
Total RSS by OOM adjustment:
  1,083,408K: Native
        140,024K: surfaceflinger (pid 1247)
         84,732K: android.hardware.camera.provider@2.4-service_64 (pid 1028)
         75,088K: zygote64 (pid 902)
         45,664K: webview_zygote (pid 3116)
         34,320K: zygote (pid 903)
。。。。。。
Total RSS by category:
  3,208,500K: .jar mmap
  2,955,536K: .so mmap
  1,979,384K: Native
  1,911,004K: .art mmap
  1,589,472K: Dalvik
  1,292,136K: .oat mmap
  1,206,096K: .dex mmap
    464,020K: .apk mmap
    442,932K: Dalvik Other
    323,448K: EGL mtrack
    269,356K: Unknown
    260,440K: Other mmap
    221,244K: .ttf mmap
。。。。。。
Total PSS by process:
    929,598K: com.UCMobile (pid 19848 / activities)
    502,455K: com.tencent.mm (pid 9209)
    477,049K: com.android.systemui (pid 3227)
    446,290K: system (pid 2029)
    428,744K: com.miui.home (pid 3255 / activities)
    232,065K: com.android.camera (pid 31626)
    202,087K: com.sohu.inputmethod.sogou.xiaomi (pid 8357)
。。。。。。
Total PSS by OOM adjustment:
    782,009K: Native
        142,311K: surfaceflinger (pid 1247)
        133,713K: android.hardware.camera.provider@2.4-service_64 (pid 1028)
         34,375K: vendor.qti.hardware.display.composer-service (pid 1067)
         25,425K: android.hardware.audio.service (pid 1019)
         23,895K: zygote (pid 903)
。。。。。。


Total RAM: 11,877,584K (status normal)
 Free RAM: 5,368,689K (  958,081K cached pss + 4,028,040K cached kernel +   382,568K free)
      ION:   489,328K (   95,960K mapped +   393,368K unmapped +         0K pools)
      GPU:         0K
 Used RAM: 8,547,100K (7,276,352K used pss + 1,270,748K kernel)
 Lost RAM: 1,028,410K
     ZRAM:   736,588K physical used for 2,491,932K in swap (6,291,452K total swap)
   Tuning: 256 (large 512), oom 1,451,520K, restore limit   107,520K (high-end-gfx)
scc$  

  1. Total RAM: 总共的物理内存。在这个例子中是 11,877,584KB(大约 11.33 GB)。

  2. Free RAM: 可用的物理内存。在这个例子中是 5,368,689KB(大约 5.12 GB)。

    • Cached PSS: 缓存的进程共享内存。
    • Cached Kernel: 缓存的内核占用的内存。
    • Free: 未被使用的空闲内存。
  3. ION: ION 内存使用情况。

    • Mapped: 已映射的 ION 内存。
    • Unmapped: 未映射的 ION 内存。
    • Pools: ION 内存池中的内存。
  4. GPU: GPU 占用的内存,这里是 0K。

  5. Used RAM: 已使用的物理内存,包括应用程序使用的 PSS(Proportional Set Size,按照进程占用物理内存的比例分配的内存)和内核占用的内存。在这个例子中是 8,547,100KB。

  6. Lost RAM: 由于各种原因丢失的内存,即未能被系统正常使用的内存。

  7. ZRAM: 压缩内存(ZRAM)的使用情况。

    • Physical used: 物理内存中 ZRAM 实际使用的部分。
    • In swap: 在交换空间中的 ZRAM 使用情况。
    • Total swap: 总的交换空间大小。
  8. Tuning: 调整参数,包括内存的分配策略、OOM(Out of Memory)的阈值等。

15、查看内存信息

adb shell free

显示内存使用情况。包括物理内存和交换空间的总量、已使用和空闲量。

scc$ adb shell free
		total        used        free      shared     buffers
Mem:      12162646016 11356925952   805720064    64028672     2347008
-/+ buffers/cache:    11354578944   808067072
Swap:      6442446848  3425431552  3017015296
scc$ 
  1. 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 字节。
  2. -/+ buffers/cache:

    • 这个部分提供了经过缓存和未经缓存的内存使用情况。
    • buffers/cache 是内存中用于缓存的部分,当系统需要更多内存时,这部分可以被释放。
    • 113,545,789,44 字节 是经过缓存或者说除去缓存后的已使用内存。
    • 808,067,072 字节 是经过缓存或者说除去缓存后的可用内存。
  3. 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

scc$ adb shell cat /proc/cpuinfo
processor	: 0
BogoMIPS	: 48.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x2
CPU part	: 0xd05
CPU revision	: 0

processor	: 1
BogoMIPS	: 48.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x2
CPU part	: 0xd05
CPU revision	: 0

processor	: 2
BogoMIPS	: 48.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x2
CPU part	: 0xd05
CPU revision	: 0

processor	: 3
BogoMIPS	: 48.00
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x2
CPU part	: 0xd05
CPU revision	: 0

Hardware	: Rockchip RK3566 RK817 TABLET LP4X Board
Serial		: 86dfc3e7b1f23439

其中 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 架构,这些架构在一个以逗号分隔的字符串中列出。

scc$ adb shell getprop ro.product.cpu.abi
arm64-v8a
scc$ adb shell getprop ro.product.cpu.abilist
arm64-v8a,armeabi-v7a,armeabi

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文件

  1. 使用 adb shell pm list packages -3 查找安装三方的的包名,如果如果要查所有 请看第22项;
  2. 使用“adb shell pm path”命令加上要导出的APK文件的包名。如 adb shell pm path me.chunyu.ChunyuDoctor(包名) ,将返回APK文件在设备上的路径
  3. 使用 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

Tasks: 910 total,   2 running, 908 sleeping,   0 stopped,   0 zombie
  Mem:    11599M total,    10587M used,     1011M free,        2M buffers
 Swap:     6143M total,     3474M used,     2669M free,     3445M cached
800%cpu 108%user   1%nice  48%sys 635%idle   0%iow   7%irq   2%sirq   0%host
  PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS            
 2969 u0_a149      20   0 6.4G  79M  52M R  100   0.6 1457:55.2 com.miui.miwall+
28985 u0_a235      20   0  64G 247M 247M S 12.3   2.1   5:13.35 com.dianping.v1
 2029 system       18  -2  12G 337M 337M S 11.3   2.9 1086:51.7 system_server

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

        其中,xy 是屏幕上的坐标值。

        4.2 模拟滑动

        adb shell input swipe x1 y1 x2 y2 [duration(ms)]

        其中 x1y1 是起始点坐标,x2y2 是终止点坐标,可选的 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试试。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。