adb设备调试常用命令
自从工作越来越忙后,越来越懒得写文章了,趁着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 HeapTotal Dirty Clean Dirty Size Alloc Free------ ------ ------ ------ ------ ------ ------Native Heap 8406 8284 0 0 20620 17082 3537Dalvik Heap 988 900 0 0 2962 1426 1536Dalvik 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 5073App SummaryPss(KB)------Java Heap: 6408Native Heap: 8284Code: 2132Stack: 56Graphics: 0Private Other: 1196System: 5487TOTAL: 23563 TOTAL SWAP (KB): 0ObjectsViews: 17 ViewRootImpl: 1AppContexts: 6 Activities: 1Assets: 2 AssetManagers: 0Local Binders: 9 Proxy Binders: 28Parcel memory: 2 Parcel count: 10Death Recipients: 0 OpenSSL Sockets: 0WebViews: 0SQLMEMORY_USED: 0PAGECACHE_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 zombieMem: 1.9G total, 1.7G used, 175M free, 23M buffersSwap: 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%hostPID 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_server683 u0_a100 20 0 5.2G 205M 149M S 2.6 10.2 40:35.52 com.android.systemui8036 system 20 0 4.6G 166M 116M S 0.0 8.2 0:03.29 com.android.settings935 u0_a102 20 0 4.8G 163M 110M S 0.0 8.1 0:21.57 com.android.launcher3176 root 20 0 5.1G 147M 122M S 0.0 7.3 0:02.27 zygote64999 u0_a115 20 0 4.6G 139M 99M S 0.0 6.9 0:03.67 com.android.inputmethod.latin3250 u0_a116 20 0 4.5G 131M 85M S 0.0 6.5 0:01.33 com.dfl.android.bestpractice764 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.documentsui1136 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.myfirstapp748 network_sta+ 20 0 4.6G 107M 80M S 0.0 5.3 0:25.21 com.android.networkstack2515 system 20 0 4.5G 105M 63M S 0.0 5.2 0:00.71 com.android.keychain1907 u0_a67 20 0 4.5G 102M 68M S 0.0 5.0 0:00.48 com.android.permissioncontroller1942 u0_a65 20 0 4.4G 96M 62M S 0.0 4.8 0:00.39 com.android.providers.calendar1311 radio 20 0 4.4G 94M 60M S 0.0 4.6 0:00.24 com.android.ims.rcsservice838 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.mtp1288 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 : 14processor : 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 : 0Hardware : 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的设备。可用于验证白天黑夜模式快速切换下界面是否有异常
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支持的输入的类型有
- 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设备调试常用命令
自从工作越来越忙后,越来越懒得写文章了,趁着1024程序员节,仪式性地写篇文章,分享一下最近调试设备经常用到的adb指令~ 1.查看应用内存占用 1.1 dumpsys meminfo package dumpsys是查看系统服务信息的一个常用指令,可…...
ubuntu下Docker的简单使用并利用主机显示
首先分享一个docker镜像的网站:https://hub.docker.com/search?q 这个网站里面有很多配置好的镜像,可以直接拉取。 下面介绍一下docker的安装和使用。 1、docker得到安装: sudo apt-get install docker 2、docker拉取一个镜像到本地,这里我…...

第12章 PyTorch图像分割代码框架-1
从本章开始,本书将会进行深度学习图像分割的实战阶段。PyTorch作为目前最为流行的一款深度学习计算框架,在计算机视觉和图像分割任务中已经广泛使用。本章将介绍基于PyTorch的深度学习图像分割代码框架,在总体框架的基础上,基于PA…...
2023CSPJ 旅游巴士 —— dijkstra
This way 题意: 给你一个有向图,1号点为起点,n为终点。你可以在k的倍数的时间点在起点开始,每条边的边长为1,同时,每条边有一个限定时间ai,表示你必须在大于等于ai的时间点才能走这条边。 …...

数据结构之栈的讲解(源代码+图解+习题)
我们在学习过顺序表和链表之后,了解了使用数组存储数据,使用结构体来存储数据和有关的指针,这些都是底层的东西,链表是靠指针的链接,顺序表是靠数组的下标才能得以实现增删查改。众多数据结构其实底层都离不开数组&…...

内网渗透-内网信息收集
内网信息收集 前言 当我们进行外网信息收集,漏洞探测以及漏洞利用后,获得了主机的权限后,我们需要扩大渗透的战果时,这是我们就要进行内网的渗透了,内网渗透最重要的还是前期的信息收集的操作了,就是我们的…...
LeetCode解法汇总2520. 统计能整除数字的位数
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个整…...

Lua语言编写爬虫程序
以下是一个使用luasocket-http库和Lua语言编写的爬虫程序。此程序使用了https://www.duoip.cn/get_proxy的代码。 -- 引入所需的库 local http require("socket.http") local ltn12 require("ltn12") local json require("json") -- 获取…...

安防监控项目---概要
文章目录 前言一、项目需求二、环境介绍三、关键点四、主框架分析总结 前言 各位小伙伴,在蛰伏了将近有半年的时间又要和大家分享新的知识了,这次和大家分享的是一个项目,因此呢我准备分项目阶段去和大家分享,希望大家都能够在每…...
数仓经典面试题
1.什么是数据仓库?请谈谈你对数据仓库的理解。 数据仓库是一个用于存储和管理数据的系统,它可以将分散的、异构的数据源中的数据进行抽取、转换、清洗和整合,然后按照一定的模型和架构进行组织和存储,以便更好地支持决策分析和业…...
【ARM Coresight 系列文章 15.2 – components power domain 详细介绍】
文章目录 1.1. Coresight 电源域模型1.1.1 CDBGPWRUPREQ 和 CDBGPWRUPACK1.1.2 CSYSPWRUPREQ 和 CSYSPWRUPACK1.1.3 Power Domain ID In RomTable1.1.4 Power domain entries1.1.5 Algorithm to discover power domain IDs1.1.6 Debug power requests1.1.7 System power reques…...
Flutter Android IOS 获取通讯录联系人列表
1.在pubspec.yaml 文件中添加 contacts_service 和 permission_handler 插件的依赖: dependencies:contacts_service: ^0.6.3 #获取联系人permission_handler: ^11.0.1 #权限请求2.在你的 Dart 代码中,导入 contacts_service 插件: impo…...

Spring Boot集成SpringFox 3.0与Pageable参数处理
Springfox 3.0有多个模块,提供了spring boot starter,与Spring Boot集成时仅需引入springfox-boot-starter,如下: <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter<…...
2、基于pytorch lightning的fabric实现pytorch的多GPU训练和混合精度功能
文章目录 承接 上一篇,使用原始的pytorch来实现多GPU训练和混合精度,现在对比以上代码,我们使用Fabric来实现相同的功能。关于Fabric,我会在后续的博客中继续讲解,是讲解,也是在学习。通过fabric,可以减少代码量&#…...
python版opencv人脸训练与人脸识别
1.人脸识别准备 使用的两个opencv包 D:\python2023>pip list |findstr opencv opencv-contrib-python 4.8.1.78 opencv-python 4.8.1.78数据集使用前一篇Javacv的数据集,网上随便找的60张图片,只是都挪到了D:\face目录下方便遍历 D:\face\1 30张刘德华图片…...

计算机视觉-数学基础*变换域表示
被研究最多的图像(或任何序列数据)变换域表示是通过傅 里叶分析 。所谓的傅里叶表示就是使用 正弦函数的线性组合来表示信号。对于一个给定的图像I(n1,n2) ,可以用如下方式分解它(即逆傅里叶变换): 其中&a…...

小程序如何设置自取规则
在小程序中,自取规则是指当客户下单时选择无需配送的情况下,如何设置相关的计费方式、指定时段费用、免费金额、预定时间和起取金额。下面将详细介绍如何设置这些规则,以便更好地满足客户的需求。 在小程序管理员后台->配送设置->自…...

Elasticsearch分词器-中文分词器ik
文章目录 使用standard analysis对英文进行分词使用standard analysis对中文进行分词安装插件对中文进行友好分词-ik中文分词器下载安装和配置IK分词器使用ik_smart分词器使用ik_max_word分词器 借助Nginx实现ik分词器自定义分词网络新词 ES官方文档Text Analysis 使用standard…...

ITSS信息技术服务运行维护标准符合性证书申请详解及流程
ITSS信息技术服务运行维护标准符合性证书 认证介绍 ITSS(InformationTechnologyServiceStandards,信息技术服务标准,简称ITSS)是一套成体系和综合配套的信息技术服务标准库,全面规范了IT服务产品及其组成要素,用于指导实施标准化…...

Inbound marketing的完美闭环:将官网作为营销枢纽,从集客进化为入站
Inbound marketing即入站营销的运作方式不同于付费广告,你需要不断地投入才能获得持续的访问量。而你的生意表达内容一经创建、发布,就能远远不断地带来流量。 Inbound marketing也被翻译作集客营销,也就是美国知名的营销SaaS企业hubspot所主…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...