赞
踩
自从工作越来越忙后,越来越懒得写文章了,趁着1024程序员节,仪式性地写篇文章,分享一下最近调试设备经常用到的adb指令~
dumpsys是查看系统服务信息的一个常用指令,可以用dumpsys -l
查看系统所有的服务,dumpsys meminfo可以查看到应用最详细的内存占用情况,主要有两大用途
命令查询的数据示例如下:
Applications Memory Usage (in Kilobytes): Uptime: 195423478 Realtime: 195423478 ** MEMINFO in pid 23209 [com.example.myfirstapp] ** Pss Private Private Swap Heap Heap Heap Total Dirty Clean Dirty Size Alloc Free ------ ------ ------ ------ ------ ------ ------ Native Heap 8406 8284 0 0 20620 17082 3537 Dalvik Heap 988 900 0 0 2962 1426 1536 Dalvik Other 481 476 0 0 Stack 56 56 0 0 Ashmem 7 0 0 0 Other dev 12 0 12 0 .so mmap 2123 160 8 0 .jar mmap 1737 0 24 0 .apk mmap 1027 0 0 0 .ttf mmap 48 0 0 0 .dex mmap 1944 4 1936 0 .oat mmap 66 0 0 0 .art mmap 5883 5508 0 0 Other mmap 60 20 0 0 Unknown 725 688 0 0 TOTAL 23563 16096 1980 0 23582 18508 5073 App Summary Pss(KB) ------ Java Heap: 6408 Native Heap: 8284 Code: 2132 Stack: 56 Graphics: 0 Private Other: 1196 System: 5487 TOTAL: 23563 TOTAL SWAP (KB): 0 Objects Views: 17 ViewRootImpl: 1 AppContexts: 6 Activities: 1 Assets: 2 AssetManagers: 0 Local Binders: 9 Proxy Binders: 28 Parcel memory: 2 Parcel count: 10 Death Recipients: 0 OpenSSL Sockets: 0 WebViews: 0 SQL MEMORY_USED: 0 PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
PSS表示应用程序占用的共享内存和私有内存的总和,该参数能比较精确地表示应用占用的内存大小。
如果dumpsys meminfo
不带包名,则会打印出系统整体所有应用的内存占用,并且还能看到应用的进程等级,对于系统性能调优用途很大。
top命令比dumpsys命令的优点是实时性高,缺点是无法查看到PSS的数值,要自己估算出实际的内存占用情况。top命令还能查看当前应用的cpu占用率及内存占用情况,这是top命令一个常用用途。
-s 6
参数含义是用RSS列进行排序,让内存占用最高的在最前边,默认排序是CPU占用率,应用在未操作时会排到很后,有可能会看不到当前的应用。
Tasks: 162 total, 1 running, 161 sleeping, 0 stopped, 0 zombie Mem: 1.9G total, 1.7G used, 175M free, 23M buffers Swap: 0 total, 0 used, 0 free, 968M cached 400%cpu 11%user 1%nice 8%sys 380%idle 0%iow 0%irq 0%sirq 0%host PID USER PR NI VIRT [RES] SHR S %CPU %MEM TIME+ ARGS 515 system 18 -2 7.7G 295M 199M S 4.6 14.7 29:48.69 system_server 683 u0_a100 20 0 5.2G 205M 149M S 2.6 10.2 40:35.52 com.android.systemui 8036 system 20 0 4.6G 166M 116M S 0.0 8.2 0:03.29 com.android.settings 935 u0_a102 20 0 4.8G 163M 110M S 0.0 8.1 0:21.57 com.android.launcher3 176 root 20 0 5.1G 147M 122M S 0.0 7.3 0:02.27 zygote64 999 u0_a115 20 0 4.6G 139M 99M S 0.0 6.9 0:03.67 com.android.inputmethod.latin 3250 u0_a116 20 0 4.5G 131M 85M S 0.0 6.5 0:01.33 com.dfl.android.bestpractice 764 radio 20 0 4.9G 123M 94M S 0.3 6.1 2:24.95 com.android.phone 16167 u0_a56 20 0 4.4G 114M 79M S 0.0 5.7 0:00.23 com.android.documentsui 1136 u0_a99 20 0 4.5G 113M 78M S 0.0 5.6 0:00.48 com.android.dialer 23209 u0_a123 10 -10 4.4G 111M 78M S 0.0 5.5 0:00.35 com.example.myfirstapp 748 network_sta+ 20 0 4.6G 107M 80M S 0.0 5.3 0:25.21 com.android.networkstack 2515 system 20 0 4.5G 105M 63M S 0.0 5.2 0:00.71 com.android.keychain 1907 u0_a67 20 0 4.5G 102M 68M S 0.0 5.0 0:00.48 com.android.permissioncontroller 1942 u0_a65 20 0 4.4G 96M 62M S 0.0 4.8 0:00.39 com.android.providers.calendar 1311 radio 20 0 4.4G 94M 60M S 0.0 4.6 0:00.24 com.android.ims.rcsservice 838 u0_a58 20 0 4.5G 93M 67M S 0.0 4.6 0:00.62 android.ext.services 16269 u0_a54 20 0 4.4G 90M 57M S 0.0 4.5 0:00.06 com.android.mtp 1288 secure_elem+ 20 0 4.4G 90M 57M S 0.0 4.5 0:00.21 com.android.se 16209 u0_a64 20 0 4.4G 90M 56M S 0.0 4.4 0:00.04 com.android.externalstorage 16237 u0_a54 20 0 4.4G 90M 63M S 0.0 4.4 0:00.07 android.process.media
PSS的内存=RES(进程当前实际占用的物理大小)-SHR(共享内存大小)/共享进程数量,RES的内存值包含了和其他进程共享内存的数据,所以其值会比实际应用占用的内存值PSS要偏大。另外也可使用命令procrank可查看应用的内存占用排名。
该命令可查看到关于内存的详细信息,包含内存总大小及各个细分类型的内存大小,其中的CmaTotal与CmaFree是一个重要的参数,表示可分配的连续物理内存,如果cma的内存不足,会导致无法打开新界面或弹窗,或出现黑屏的问题。
MemTotal: 7708608 kB MemFree: 125148 kB MemAvailable: 2150096 kB Buffers: 2096 kB Cached: 1959024 kB SwapCached: 31456 kB Active: 1425944 kB Inactive: 1842408 kB Active(anon): 781092 kB Inactive(anon): 797336 kB Active(file): 644852 kB Inactive(file): 1045072 kB Unevictable: 193320 kB Mlocked: 193320 kB SwapTotal: 5767164 kB SwapFree: 740944 kB Dirty: 208 kB Writeback: 0 kB AnonPages: 1497100 kB Mapped: 1086956 kB Shmem: 84136 kB KReclaimable: 639856 kB Slab: 644596 kB SReclaimable: 185208 kB SUnreclaim: 459388 kB KernelStack: 137728 kB PageTables: 188484 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 9621468 kB Committed_AS: 198069204 kB VmallocTotal: 263061440 kB VmallocUsed: 235160 kB VmallocChunk: 0 kB Percpu: 13568 kB CmaTotal: 372736 kB CmaFree: 0 kB IonTotalCache: 178616 kB IonTotalUsed: 428572 kB GPUTotalUsed: 450368 kB
我手机打印出的CmaFree为0kb,但手机还是能正常使用,这一块与我的认识不太一样,只能推测为手机系统自已做过内存管理模块相关的修改。
该命令可以查看CPU的核心数,及架构信息。
Processor : AArch64 Processor rev 0 (aarch64) processor : 0 BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x51 CPU architecture: 8 CPU variant : 0xd CPU part : 0x805 CPU revision : 14 processor : 1 BogoMIPS : 38.40 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU implementer : 0x51 CPU architecture: 8 CPU variant : 0xd CPU part : 0x805 CPU revision : 14 ... processor : 7 BogoMIPS : 38.40 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 : 0x1 CPU part : 0xd0d CPU revision : 0 Hardware : Qualcomm Technologies, Inc SM8250_AC
我手机的基本信息是64位8核cpu,高通芯片。
该命令会以M为单位,列出系统上所有目录及其分区,最主要用途是查看哪个分区占用了较大的存储。
Filesystem Size Used Avail Use% Mounted on /dev/block/dm-15 650M 650M 0 100% / tmpfs 3.6G 2.0M 3.6G 1% /dev tmpfs 3.6G 24K 3.6G 1% /mnt /dev/block/dm-16 1.0G 1.0G 0 100% /system_ext /dev/block/dm-17 2.3M 2.3M 0 100% /product overlay-overlay 3.4M 3.4M 0 100% /product/app overlay-overlay 3.4M 3.4M 0 100% /product/priv-app overlay-overlay 3.4M 3.4M 0 100% /product/lib64 overlay-overlay 3.4M 3.4M 0 100% /product/lib overlay-overlay 3.4M 3.4M 0 100% /product/overlay overlay 511M 511M 0 100% /product/etc/permissions overlay 511M 511M 0 100% /product/framework /dev/block/dm-18 930M 930M 0 100% /vendor /dev/block/dm-19 237M 237M 0 100% /odm /dev/block/dm-7 2.1G 2.1G 0 100% /my_stock /dev/block/dm-12 1.0G 1.0G 0 100% /my_preload /dev/block/dm-14 822M 822M 0 100% /my_bigball /dev/block/dm-13 368K 368K 0 100% /my_manifest tmpfs 3.6G 16K 3.6G 1% /apex /dev/block/sda9 404M 40M 351M 11% /cache /dev/block/dm-49 106G 103G 2.8G 98% /data ... /dev/block/loop31 232K 116K 112K 51% /apex/com.android.scheduling@339990000 /dev/block/loop32 720K 692K 16K 98% /apex/com.android.sdkext@339990000 /dev/block/loop33 232K 80K 148K 36% /apex/com.android.ondevicepersonalization@339990000 /dev/fuse 106G 103G 2.8G 98% /storage/emulated /data/media 106G 103G 2.8G 98% /storage/emulated/0/Android/data
如果想查看某个目录下哪个文件或目录占用的存储最大,可使用命令df -sh *
来查看,先进入指令的目录,再执行该指令。
3.5K ARDebug
12K Alarms
18G Android
59M AnkiChina
12K Audiobooks
201M BaiduNetdisk
15K Browser
3.5K ByteDownload
15K Ccb
231K ColorOS
2.7G DCIM
5.4M DingTalk
3.5M Documents
1.2G Download
...
该命令可查看到系统预置的一些属性值,有一些功能相关联的信息可以通过反射比较方便要从prop中取出。
[vendor.media.vpp.osie.enable]: [0] [vendor.media.vpp.osie.internal.enable]: [1] [vendor.media.vpp.osie.internal.version]: [osie2.0] [vendor.media.vpp.sr.internal.enable]: [1] [vendor.modem_dump_action]: [1] [vendor.opengles.version]: [196610] [vendor.oplus.dalvik.vm.heapgrowthlimit]: [384m] [vendor.oplus.dalvik.vm.heapmaxfree]: [8m] [vendor.oplus.dalvik.vm.heapminfree]: [512k] [vendor.oplus.dalvik.vm.heapsize]: [512m] [vendor.oplus.dalvik.vm.heapstartsize]: [16m] [vendor.oplus.dalvik.vm.heaptargetutilization]: [0.75] [vendor.oplus.sap.interface]: [wlan2] [vendor.vidc.debug.level]: [1] [vendor.vold.serialno]: [] [vold.fbe.decrypted]: [1] [vold.has_adoptable]: [0] [vold.has_compress]: [0] [vold.has_quota]: [1] [vold.has_reserved]: [1] [vold.storage.prepared]: [1]
如果有root权限,还可以通过命令setprop key 值,修改参数的值。
查看设备的分辨率wm size
,
查看设备的dpiwm density
emulator64_arm64:/ $ wm size
Physical size: 1920x1080
$ wm density
Physical density: 160
该指令需要先执行su切换成root用户,适用于可进行root的设备。可用于验证白天黑夜模式快速切换下界面是否有异常
cmd uimode night yes
Night mode: yes
emulator64_arm64:/ # cmd uimode night no
Night mode: no
emulator64_arm64:/ # cmd uimode night auto
Night mode: auto
input支持的输入的类型有
input text 123
input keyevent 4
,返回back;3回到主页homeinput tap 100 100
,点击(100,100)对应的位置点input swipe 10 20 30 40
,从(10,20)坐标滑动到(30,40)input draganddrop 10 20 30 40
,从(10,20)坐标拖动到(30,40)input press 200 300
,按下(200,300)坐标,不会触发点击事件input roll 100 100
,向右滚动100像素,向下滚动100像素Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。