文章目录

  • 背景
  • 命令
    • - 连接机顶盒
    • - 查看已连接设备
    • - 断开某个机顶盒的连接
    • - 断开所有设备连接
    • - 获取 root 权限
    • - 挂载文件系统
    • - 抓取网络包
    • - 拉取网络包到本机cmd执行命令当前目录
    • - 删除设备中的网络包
    • - 获取机顶盒设备信息
    • - 根据 uri 查看 contentProvider 中表信息
    • - 根据包名和期启动类名打开应用
    • - 设置应用运行时的系统参数
    • - 根据包名杀应用进程
    • - 进程的名字使用 grep 指令过滤输出 "com.gitv.tv.launcher" 进程的信息
    • - 清空(清除)Android中的logcat缓冲区
    • - 查看 cpu 信息
    • - 查看系统的 meminfo
    • - 查看电量信息
    • - 查找应用的 pid
    • - 查看应用最大内存限制
    • - 分析应用的内存信息(是否存在内存泄漏)

背景

最近在局方现场出差,我负责sdk开发,局方外包给了北京的同事集成sdk开发应用,后面发现应用存在一些问题需要解决。我又是乙方,就来到了局方现场分析问题,然后反馈解决。

不过后续sdk也没动,一些优化都是应用(存在内存泄漏)需要做的,机顶盒性能也可能有一定的影响。

现场有用到一些比较实用的 adb 命令,这里记录下,方便自己和同学们日后使用。


命令

- 连接机顶盒

adb connect [机顶盒ip]

- 查看已连接设备

adb devices

- 断开某个机顶盒的连接

adb disconnect [机顶盒ip]
or
adb disconnect [虚拟机名称]

- 断开所有设备连接

adb disconnect

- 获取 root 权限

adb root

- 挂载文件系统

adb remount

当想往移动设备端 push 文件时显示没权限,可尝试执行以下指令:
adb root
adb remount

如果还提示 read-only 的话,可继续尝试执行命令:
adb root
adb disable-verity

adb reboot 重启后再 adb remount 即可。

当你想 push 进某一具体路径下的文件夹时可以用: adb shell mount -o rw,remount /路径/路径

注:adb remount 的作用相当于 adb shell mount -o rw,remount,rw /system

- 抓取网络包

(在 cmd 窗口执行命令所在目录下放 tcpdump 文件,抓包时用)


adb shell tcpdump -i any -p -s 0 -w /data/data/capture.pcap

组合键: ctrl + C 可以停止抓包。

- 拉取网络包到本机cmd执行命令当前目录

adb pull /data/data/capture.pcap

- 删除设备中的网络包

adb shell
rm /data/data/capture.pcap

- 获取机顶盒设备信息

adb shell getprop

- 根据 uri 查看 contentProvider 中表信息

adb shell content query --uri [表的uri]示例:
adb shell content query --uri content://stbauthinfo/authentication

结果如下:

Row: 0 _id=131, name=epg_server, value=http://183.224.21.144:33200
Row: 1 _id=132, name=refreshTime, value=915738
Row: 2 _id=133, name=licence, value=1
Row: 3 _id=134, name=Password, value=969256
Row: 4 _id=135, name=username, value=dsw1878700035901
Row: 5 _id=136, name=user_token, value=tj3kkvhyh0d4yS-StkL2k8844
Row: 6 _id=137, name=platform, value=YNYDHW
Row: 7 _id=138, name=userGroup, value=0
Row: 8 _id=139, name=platformType, value=1
Row: 9 _id=140, name=g_token, value=ee422c5fcf70dda06b3fb295d39ef8b0f5aca34ed45bcb4c
Row: 10 _id=141, name=isSW, value=0

- 根据包名和期启动类名打开应用

adb shell am start -n [pkgId]/[launchClassName]示例:
adb shell am start -n com.utstar.smartTV/yanhua.tv.activity.Dispatcher

- 设置应用运行时的系统参数

adb shell setprop [自定义参数 key] [要设置的参数对应的 value]示例:
adb shell setprop debug.ottsdk.config 1

注:设备重启后,设置的参数值会失效;但重启应用不会失效

- 根据包名杀应用进程

adb shell am force-stop [pkgId]

注意:有的时候不一定能成功

因为在 android8.1 系统的代码中:

if (app.persistent && !evenPersistent) {// we don't kill persistent processes
continue;
}

应用中 android:persistent=“true”,true 就不让 force-stop,当然进程也就存在。

那么如果想强制杀可以这样做:找到应用的进程id,然后通过命令 kill -9 [进程id] 可以强制杀进程。

- 进程的名字使用 grep 指令过滤输出 “com.gitv.tv.launcher” 进程的信息

adb shell top | grep com.gitv.tv.launcher

更多相关命令请阅读 adb shell top 命令。

- 清空(清除)Android中的logcat缓冲区

adb logcat -c

建议抓取日志前,执行一遍该命令。
防止抓取多余的日志,保证日志抓取的准确性,方便分析定位问题。

- 查看 cpu 信息

adb shell dumpsys cpuinfo

- 查看系统的 meminfo

adb shell cat /proc/meminfo


相关说明如下:

MemTotal:         688576 kB     总内存
MemFree:          153736 kB     空闲内存
MemAvailable:     339884 kB     可用内存
Buffers:              16 kB     给文件的缓冲大小
Cached:           267672 kB     高速缓冲存储器
SwapCached:           36 kB     被高速缓冲存储用的交换空间的大小
Active:           222900 kB     活跃使用中的高速缓冲存储器页面文件大小
Inactive:         123700 kB     不经常使用中的告诉缓冲存储器文件大小
Active(anon):      31800 kB     活跃的匿名内存(进程中堆上分配的内存,是用malloc分配的内存)
Inactive(anon):    57272 kB     不活跃的匿名内存
Active(file):     191100 kB     活跃的file内存
Inactive(file):    66428 kB    不活跃的file内存
Unevictable:           0 kB    不能被释放的内存页
Mlocked:               0 kB    mlock()系统调用锁定的内存大小
SwapTotal:       2097148 kB    交换空间总大小
SwapFree:        2096884 kB    空闲交换空间
Dirty:                 0 kB    等待被写回到磁盘的大小
Writeback:             0 kB    正在被写回的大小
AnonPages:         78876 kB       未映射页的大小
Mapped:            28556 kB    设备和文件映射大小
Shmem:             10160 kB    已经被分配的共享内存大小
Slab:             102916 kB    内核数据结构缓存大小
SReclaimable:      49616 kB    可收回slab的大小
SUnreclaim:        53300 kB    不可回收的slab的大小
KernelStack:        4416 kB      kernel消耗的内存
PageTables:         6028 kB      管理内存分页的索引表的大小
NFS_Unstable:          0 kB      不稳定页表的大小
Bounce:                0 kB      在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:          0 kB      USE用于临时写回缓冲区的内存
CommitLimit:     2441436 kB      系统实际可分配内存总量
Committed_AS:     308028 kB      当前已分配的内存总量
VmallocTotal:   34359738367 kB   虚拟内存大小
VmallocUsed:      179588 kB    已经被使用的虚拟内存大小
VmallocChunk:   34359310332 kB   malloc 可分配的最大的逻辑连续的内存大小
HardwareCorrupted:     0 kB      删除掉的内存页的总大小(当系统检测到内存的硬件故障时)
AnonHugePages:      6144 kB      匿名 HugePages 数量
CmaTotal:              0 kB    总的连续可用内存
CmaFree:               0 kB      空闲的连续内存
HugePages_Total:       0      预留HugePages的总个数
HugePages_Free:        0     池中尚未分配的 HugePages 数量
HugePages_Rsvd:        0        表示池中已经被应用程序分配但尚未使用的 HugePages 数量
HugePages_Surp:        0      这个值得意思是当开始配置了20个大页,现在修改配置为16,那么这个参数就会显示为4,一般不修改配置,这个值都是0
Hugepagesize:       2048 kB     每个大页的大小
DirectMap4k:      108416 kB   映射TLB为4kB的内存数量
DirectMap2M:      940032 kB   映射TLB为2M的内存数量
DirectMap1G:           0 kB     映射TLB为1G的内存数量

- 查看电量信息

adb shell dumpsys battery

- 查找应用的 pid

adb shell top | grep [pkgId]


第一列的数字 2185 就是应用的进程 pid

- 查看应用最大内存限制

adb shell getprop|grep heapgrowthlimit

- 分析应用的内存信息(是否存在内存泄漏)

adb shelldumpsys meminfo [pkgId/pid]

更多详细使用和内存分析说明请阅读:adb shell dumpsys meminfo 详解。


技术永不眠!我们下期见!

Adb 实用命令(网络包、日志、调优相关)相关推荐

  1. 鲲鹏性能优化十板斧(三)——网络子系统性能调优

    1 网络子系统性能调优 3.1  调优简介 3.2  常用性能监测工具 3.3  优化方法 1.1 调优简介 调优思路 本章主要是围绕优化网卡性能和利用网卡的能力分担CPU的压力来提升性能.在高并发的 ...

  2. JAVA 性能调优相关命令

    线上故障主要会包括cpu.磁盘.内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍.同时例如jstack.jmap等工具也是不囿于一个方面的问题的,基 ...

  3. 垃圾收集器调优相关参数

    一.HotSpot参数说明 标准参数:以-开头,表示所有版本的HotSpot都支持. 非标准参数:以-X开头,表示特定版本的HotSpot支持: 不稳定参数:以-XX开头,表示有些版本支持,有些版本不 ...

  4. jvm命令和可视化工具 调优

    李克华 云计算高级群: 292870151 195907286 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 虚拟机:系统虚拟机 程序虚拟机 系统虚拟机有:VMWare ...

  5. mysql多启动与日志调优

    mysql 多启动 mysqld_multi 可以管理多个帧听不同Unix套接字文件和TCP/IP端口的连接的mysqld  进程.它可以启动或停止服务器,或报告它们的当前状态. rpm 版默认也支持 ...

  6. 【JVM与性能调优】与Java性能调优相关的JDK命令行工具大盘点

    一. jps 命令 1.1 jps介绍 jps(JVM Process Status Tool) 列出Java进程,显示指定系统内所有的HotSpot虚拟机进程. 查询Linux系统当前所有java进 ...

  7. ADB实用命令(配合bat实现自动手机自动操作,如打卡、签到)

    调试设备 adb kill-server //关闭adb服务 adb start-server //打开adb服务 adb devices//获取连接的设备 adb pull {手机地址} {电脑存储 ...

  8. 【模型调优】风控模型调优相关知识

    需要数据分析.风控评分卡等相关数据.代码,请添加qq群:102755159,或留言联系笔者邮件发送!!! 如果对金融风控.机器学习.数据科学.大数据分析等感兴趣的小伙伴,可加微信交流(邮件中备注,我会 ...

  9. 深度学习自学(十八):caffe网络调试设置-调参相关技巧

    本文主要记录caffe调试配置超参数和网络结构相关参数. 1.use_global_stats Batch Normalization层中有个参数use_global_stats,它表示是否使用caf ...

最新文章

  1. android 加载多个图片 内在溢出的问题
  2. HDU1569 方格取数(2)(二分图带权最大独立集 - 最小割应用)
  3. Spring事务源码分析
  4. Java int -1无符号右移_java中的无符号右移
  5. 推荐一个免费的屏幕取色器,鼠标放到的位置自动显示RGB
  6. 爬虫界又出神器|一款比selenium更高效的利器
  7. 【渝粤题库】国家开放大学2021春1398分析化学(本)题目
  8. java同名变量在list中添加两次_快速解决List集合add元素,添加多个对象出现重复的问题...
  9. android之APP模块编译
  10. 石头剪刀布程序流程图_机器学习终章:剪刀石头布猜拳机器人
  11. GL 与 CV 管线 (pipeline) 比较与相互转换
  12. POJ_3984迷宫问题(bfs基础题)
  13. C语言程序设计实验报告——实验五
  14. 数据库实体间一对多(多对一)、多对多关系处理
  15. oracle 无法归档日志,报all online log need archiving
  16. word页眉自动出现一条直线,怎么去掉?
  17. 真实案例,手把手教你构建用户画像
  18. 效率神器----QuickLook
  19. python中的list和array的不同之处
  20. windows中的出站和入站规则

热门文章

  1. AXIDMA 驱动的使用
  2. 基于 FPGA Vivado 的74系列IP封装(附源工程)
  3. 信息技术课计算机软件的微课,信息技术教学中的微课实例设计.doc
  4. 数学常数e的含义 (转载)
  5. 成为诊断工程师,如何入门?
  6. 文献资源下载网址经验总结
  7. 从头学 Java,复习环境搭建与基础知识,卷起来
  8. 恩墨oracle每日工作,DBA日常工作职责 - 我对DBA的七点建议
  9. vivado 编辑界面配色配置
  10. 数据导入与预处理-第5章-数据清理