自从工作越来越忙后,越来越懒得写文章了,趁着1024程序员节,仪式性地写篇文章,分享一下最近调试设备经常用到的adb指令~
1.查看应用内存占用
1.1 dumpsys meminfo package
dumpsys是查看系统服务信息的一个常用指令,可以用dumpsys -l
查看系统所有的服务,dumpsys meminfo可以查看到应用最详细的内存占用情况,主要有两大用途
- 查看应用的内存占用情况,可以看到不同的内存类型占用,详细的占用情况可助于分析应用哪一块占用了较大内存。
- 辅助分析内存泄露问题,该命令可以查看到Activity的个数,当退出界面后仍然还有activity存在或者个数不对,则说明该activity已经泄露了。
命令查询的数据示例如下:
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
不带包名,则会打印出系统整体所有应用的内存占用,并且还能看到应用的进程等级,对于系统性能调优用途很大。
1.2 top -s 6
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可查看应用的内存占用排名。
2.查看系统硬件信息
2.1 查看内存信息 cat /proc/meminfo
该命令可查看到关于内存的详细信息,包含内存总大小及各个细分类型的内存大小,其中的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,但手机还是能正常使用,这一块与我的认识不太一样,只能推测为手机系统自已做过内存管理模块相关的修改。
2.2 查看cpu信息 cat /proc/cpuinfo
该命令可以查看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,高通芯片。
2.3 查看存储分区及占用 df -h
该命令会以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
...
2.4 查看系统配置的属性信息 getprop
该命令可查看到系统预置的一些属性值,有一些功能相关联的信息可以通过反射比较方便要从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 值,修改参数的值。
2.5 设备的分辨率及dpi
-
查看设备的分辨率
wm size
, -
查看设备的dpi
wm density
emulator64_arm64:/ $ wm size
Physical size: 1920x1080
$ wm density
Physical density: 160
3. 模拟操作指令
3.1 白天黑夜切换 cmd uimode night
该指令需要先执行su切换成root用户,适用于可进行root的设备。可用于验证白天黑夜模式快速切换下界面是否有异常文章来源:https://www.toymoban.com/news/detail-720262.html
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
- 白天:night no
- 黑夜: night yes
- 自动:night auto
3.2 模拟输入事件 input
input支持的输入的类型有文章来源地址https://www.toymoban.com/news/detail-720262.html
- text:文本,
input text 123
- keyevent:物理按键,
input keyevent 4
,返回back;3回到主页home - tap:点击事件,
input tap 100 100
,点击(100,100)对应的位置点 - swipe:滑动事件,
input swipe 10 20 30 40
,从(10,20)坐标滑动到(30,40) - draganddrop:拖动事件,
input draganddrop 10 20 30 40
,从(10,20)坐标拖动到(30,40) - press:按压事件,
input press 200 300
,按下(200,300)坐标,不会触发点击事件 - roll:滚动事件,
input roll 100 100
,向右滚动100像素,向下滚动100像素
到了这里,关于adb设备调试常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!