adb常用命令总结[持续更新]

官方查询地址

在这里插入图片描述

一、什么情况有使用adb命令诉求?

  • Android开发已不仅限于手机
    虽然Android Studio及其三方GUI插件已经很完备了,但是Android应用很广,手机只是一个应用场景,还有诸如:TV、手表、机车、或别的定制系统,可能无法使用GUI工具、USB插口等情况,可能是通过串口等方式直接连到对应的Android系统中,我们平时使用的adb shell xxx其实就是用的Android系统的一些命令。

  • 命令行有时候更高效

  • GUI工具可能无法覆盖到一些命令使用场景

  • 可结合shell脚本编写更高效的脚本
        举个例子,假如现在一个系统开机之后就立刻启动的app,比如Launcher(系统桌面,不一定是Android系统的那个Launcher,可能一些三方定制系统有自己做这个系统桌面。)这种应用,出现了系统刚启动时的性能裂化(卡顿、ANR、启动速度变慢等等),但启动之后过一段时间就恢复正常了。这种问题,其实一般都会推测是开机阶段系统负载比较重引起的。针对这种情况,我们想要通过AS-Profiler、Systrace等工具分析App在刚开机时整个系统的CPU、内存、IOWait等指标,目前是无法实现的(起码我觉得还做不到,有好的方式的大佬请不吝赐教~),这时候我们就可以结合shell脚本和top命令,让应用启动时就去执行这个shell脚本,打印top的结果到文件中(其实有些性能测试脚本也是这样做的),这样就能从宏观上筛查是不是自己应用CPU、内存占用过高,或者别的其他应用占用过高引起的。

  • GUI工具并不能满足所有的需求场景:比如查看内存、cpu信息,通过shell脚本输出内存、cpu占用、帧率曲线等。虽然有Profiler这种强大的工具,但是目前使用的情况,获取到的数据经常还存在误差。
    注:adb shell命令本质上是对于Android系统的操作命令。
    在这里插入图片描述

二、设备信息

2.1 查看安卓版本 返回9,10,11

adb shell getprop ro.build.version.release

在这里插入图片描述

2.2 获取系统api版本:返回28,29

adb shell getprop ro.build.version.sdk

在这里插入图片描述

2.3 查询内存信息

在linux系统中,/proc/目录下都会用文件的方式,存储着各种设备相关信息。比如:cpuinfo、meminfo、version(linux内核版本)等信息

adb shell cat /proc/meminfo

输出:

MemTotal:        5815012 kB //总的内存大小
MemFree:          424212 kB
MemAvailable:    3162140 kB	//可用内存大小
Buffers:          232832 kB
Cached:          2057404 kB
SwapCached:        10700 kB
Active:          2610536 kB
Inactive:         690156 kB
Active(anon):     835188 kB
Inactive(anon):   309728 kB
Active(file):    1775348 kB
Inactive(file):   380428 kB
...

或者使用dumpsys meminfo命令:

adb shell dumpsys meminfo [packageName] //需要指定查看某个包名对应进程占用内存时,后面带上packageName即可

输出结果:

Applications Memory Usage (in Kilobytes):
Uptime: 179965454 Realtime: 2420253989

Total PSS by process:
    253,766K: system (pid 1589)
    252,549K: com.android.systemui (pid 3672 / activities)
    238,455K: com.miui.home (pid 20309 / activities)
    176,473K: com.tencent.mm (pid 21083)
    145,484K: com.tencent.mm:push (pid 1625)
     91,356K: com.iflytek.inputmethod.miui (pid 7621)
     ...

Total PSS by OOM adjustment:
    432,299K: Native
         49,474K: android.hardware.camera.provider@2.4-service (pid 653)
         49,335K: surfaceflinger (pid 723)
         29,461K: logd (pid 546)
         22,543K: android.hardware.graphics.composer@2.1-service (pid 661)
         17,958K: zygote (pid 611)
         11,974K: webview_zygote (pid 3734)
         10,159K: qcrild (pid 1119)
         ...

Total PSS by category:
    530,002K: Native
    288,069K: .dex mmap
    227,496K: .art mmap
    217,753K: Dalvik
    153,504K: .so mmap
    129,412K: .oat mmap
    ...

Total RAM: 5,815,012K (status normal) //总内存大小和/proc/meminfo中是一样的
 Free RAM: 3,828,092K (  387,360K cached pss + 2,426,516K cached kernel +   595,148K cached ion +   419,068K free)
 Used RAM: 2,653,523K (2,112,671K used pss +   540,852K kernel)
 Lost RAM: 1,028,308K
     ZRAM:    93,492K physical used for   445,500K in swap (2,621,436K total swap)
   Tuning: 256 (large 512), oom   322,560K, restore limit   107,520K (high-end-gfx)

2.4 查询cpu信息

adb shell cat /proc/cpuinfo 

可看到cpu是几核,厂商信息。

Processor       : AArch64 Processor rev 12 (aarch64)
processor       : 0
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x7
CPU part        : 0x803
CPU revision    : 12

processor       : 1
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x7
CPU part        : 0x803
CPU revision    : 12

processor       : 2
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x7
CPU part        : 0x803
CPU revision    : 12

processor       : 3
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x7
CPU part        : 0x803
CPU revision    : 12

processor       : 4
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x7
CPU part        : 0x803
CPU revision    : 12

processor       : 5
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x7
CPU part        : 0x803
CPU revision    : 12

processor       : 6
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x6
CPU part        : 0x802
CPU revision    : 13

processor       : 7
BogoMIPS        : 38.40
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp
CPU implementer : 0x51
CPU architecture: 8
CPU variant     : 0x6
CPU part        : 0x802
CPU revision    : 13

Hardware        : Qualcomm Technologies, Inc SDM710

如上面是查看小米8SE的cpu信息,8核,高通的处理器。

2.5 查询机型

adb shell getprop ro.product.model

比如小米8SE输出:

MI 8 SE

2.6 屏幕相关

2.6.1 像素密度
adb shell wm density
2.6.2 分辨率
adb shell vm size

如果是修改像素密度,在上述命名后跟具体数值即可,设备界面上也会实时应用新的密度。

2.7 查询电池信息

adb shell dumpsys battery

三、分析性能常用命令

3.1 查看内存占用
adb shell dumpsys meminfo [packageName]

比如查看微信的内存信息:adb shell dumpsys meminfo com.tencent.mm
如下所示,该命令还能看到四大组件的数量,可用于分析Activity泄漏等性能问题。

dumpsys meminfo com.tencent.mm
Applications Memory Usage (in Kilobytes):
Uptime: 182816715 Realtime: 2423105250

** MEMINFO in pid 21083 [com.tencent.mm] **
                   Pss  Private  Private  SwapPss     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap    34177    34144        0    15484    88064    68780    19283
  Dalvik Heap    19662    19648        0      133    22771    11386    11385
 Dalvik Other     8554     8552        0      253
        Stack       84       84        0       24
       Ashmem        2        0        0        0
      Gfx dev    11528    11528        0        0
    Other dev       36        0       36        0
     .so mmap     5534      500     2120     4535
    .jar mmap       32       28        4      336
    .apk mmap     2353        0      884        0
    .ttf mmap      623        0      152        0
    .dex mmap    58593        0    57668       20
    .oat mmap     2424        0        0        0
    .art mmap    19564    19208        8    20240
   Other mmap      805        4      280        0
   EGL mtrack    27744    27744        0        0
    GL mtrack     2644     2644        0        0
      Unknown     3980     3980        0     2261
        TOTAL   241625   128064    61152    43286   110835    80166    30668

 App Summary
                       Pss(KB)
                        ------
           Java Heap:    38864
         Native Heap:    34144
                Code:    61356
               Stack:       84
            Graphics:    41916
       Private Other:    12852
              System:    52409

               TOTAL:   241625       TOTAL SWAP PSS:    43286

 Objects
               Views:      518         ViewRootImpl:        2
         AppContexts:        8           Activities:        2  //Activity数量能帮助分析内存泄漏
              Assets:       11        AssetManagers:        0
       Local Binders:       77        Proxy Binders:      146
       Parcel memory:       37         Parcel count:      149
    Death Recipients:       94      OpenSSL Sockets:        0
            WebViews:        0

 SQL
         MEMORY_USED:      732
  PAGECACHE_OVERFLOW:      228          MALLOC_SIZE:      117

 DATABASES
      pgsz     dbsz   Lookaside(b)          cache  Dbname
         4       96            109       11/79/13  /data/user/0/com.tencent.mm/no_backup/androidx.work.workdb
         4        8                         0/0/0    (attached) temp
         4       96             34         2/15/3  /data/user/0/com.tencent.mm/no_backup/androidx.work.workdb (3)
         4       28             56       167/36/6  /data/user/0/com.tencent.mm/databases/Scheduler.db
3.2 查看cpu占用

    当app卡顿时,排除代码逻辑上的问题,关注cpu的占用也很重要,比如很多时候发生ANR时CPU占用率都挺高的。一般来说,内存占用高,系统频繁GC,也会间接导致CPU站用很高。

  • 第一种:dumpsys cpuinfo,但不是及时刷新的,是一段时间的平均值
adb shell dumpsys cpuinfo

输出:

Load: 0.0 / 0.0 / 0.0
CPU usage from 248217ms to 184018ms ago (2022-09-03 13:58:59.522 to 2022-09-03 14:00:03.722):
  47% 21083/com.tencent.mm: 34% user + 13% kernel / faults: 7825 minor
  28% 723/surfaceflinger: 18% user + 10% kernel
  13% 661/android.hardware.graphics.composer@2.1-service: 6.8% user + 6.2% kernel / faults: 44 minor
  5.3% 239/crtc_commit:99: 0% user + 5.3% kernel
  3.7% 246/kgsl_worker_thr: 0% user + 3.7% kernel
  2.8% 27448/kworker/u16:4: 0% user + 2.8% kernel
  2.5% 4533/irq/103-1436400: 0% user + 2.5% kernel
  2.2% 240/crtc_event:99: 0% user + 2.2% kernel
  1.9% 27447/kworker/u16:0: 0% user + 1.9% kernel
  1.7% 1589/system_server: 0.8% user + 0.8% kernel / faults: 1071 minor
  1.5% 27450/kworker/u16:12: 0% user + 1.5% kernel
  0.7% 3672/com.android.systemui: 0.6% user + 0% kernel / faults: 317 minor
  0.6% 668/android.hardware.sensors@1.0-service: 0.2% user + 0.3% kernel
  0.5% 7/rcu_preempt: 0% user + 0.5% kernel

第二种:top命令,是linux系统的原生命令,是瞬时的,及时刷新的

adb shell top -n 1 //类似于windows的任务管理器,查看cpu占用情况

输出:

Tasks: 706 total,   1 running, 704 sleeping,   0 stopped,   0 zombie
Mem:   5815012k total,  5731852k used,    83160k free,   235892k buffers
Swap:  2621436k total,   422028k used,  2199408k free,  2200852k cached
800%cpu  69%user   0%nice  48%sys 676%idle   0%iow   3%irq   3%sirq   0%host
  PID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ ARGS
21083 u0_a168      10 -10 4.9G 217M 186M S 51.7   3.8  26:28.20 com.tencent.mm
  723 system       -2  -8 2.0G  24M  18M S 31.0   0.4  53:30.95 surfaceflinger
27538 shell        20   0  11M 4.2M 3.2M R 24.1   0.0   0:00.08 top -n 1
  661 system       -3  -8  66M 7.7M 4.4M S 13.7   0.1  22:17.03 android.hardwar+
26139 root         20   0    0    0    0 S  6.8   0.0   0:20.59 [kworker/u16:5]
26567 root         20   0    0    0    0 S  3.4   0.0   0:01.54 [kworker/0:0]
 4533 root         RT   0    0    0    0 S  3.4   0.0   5:38.84 [irq/103-143640+
 4448 root         RT   0    0    0    0 S  3.4   0.0   8:47.64 [sugov:6]
 1589 system       18  -2 4.8G 284M 284M S  3.4   4.9 143:57.82 system_server
  246 root         -3   0    0    0    0 S  3.4   0.0   6:46.47 [kgsl_worker_th+
  239 root         RT   0    0    0    0 S  3.4   0.0  31:17.51 [crtc_commit:99]
   61 root         20   0    0    0    0 S  3.4   0.0   0:37.33 [rcuop/6]
27537 root          0 -20    0    0    0 S  0.0   0.0   0:00.00 [kworker/0:1H]
27536 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/u16:9]
27535 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/u16:6]
27534 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/u16:2]
27512 root         20   0    0    0    0 S  0.0   0.0   0:00.02 [kworker/1:1]
27468 u0_a36       20   0 3.7G 101M  88M S  0.0   1.7   0:00.46 com.android.cam+
27467 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/0:2]
27460 root         20   0    0    0    0 S  0.0   0.0   0:00.00 [kworker/2:1]

如上图可见,top命令能看到更多的信息:

  • 总的cpu比例,上面的设备是8核,所以总共是800%
  • 空闲cpu比例,idle这一列
  • Task…:这一行显示目前进程的总量和进程状态,running/sleeping/stopped/zombie,特别注意:如果zombie这一列不是0,则指示可能存在僵尸进程
  • Mem…: 表示当前的物理内存
  • Swap…:表示虚拟内存
  • 800%cpu….这一行,显示CPU的整体负载,0%iow这一列代表的是I/OWait,通常系统变慢都是I/O产生的问题,需要关注这个选项占用的CPU资源
  • PID: 进程id
  • USRE:进程所属用户
  • PR: Priority的缩写,进程优先级,越小越早被执行
  • NI:Nice的缩写,越小越早被执行
  • %CPU: CPU使用率
  • %MEM: 内存使用率
  • TIME+:CPU: 使用时间累加
3.3 根据包名查询pid(进程号)
adb shell pidof packag_name

举例:查询com.tencent.mm的进程号
在这里插入图片描述

四、开发者选项相关

4.1 ANR相关
// 将设置更改为显示对话框:
adb shell settings put global anr_show_background 1
// 将设置更改为不显示对话框:
adb shell settings put global anr_show_background 0

// 如果是系统应用,则使用以下的方式:
// 将设置更改为显示对话框:调试时ANR不会直接退出进程,而是弹出一个对话框让用户选择退出进程,还是等待。
settings put secure anr_show_background 1
// 将设置更改为显示对话框:调试时ANR会直接退出进程,导致debug中断
settings put secure anr_show_background 0
不保留后台Activity

开启:

adb shell settings put global always_finish_activities 1

关闭:

adb shell settings put global always_finish_activities 0

五、package相关信息

查看apk版本:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechMix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值