Android APP 常见概念与 adb 命令

adb 的概念

adb 即 Android Debug Bridge 。在窗口输入 adb 即可显示帮助文档。adb 实际上就是在后台开启一个 server,会接收 adb 的命令然后帮助管理,控制,查看设备的状态、信息等,是开发、测试 Android 相关程序的最常用手段。若是连接出现问题可以使用 adb kill-server来断开并重新连接。

通常 adb 都是通过数据线连接到电脑的,但是也可以使用 adb tcpip来使用 TCP 的方式连接手机,这样能脱离数据线服务,甚至可以借助转发的形式,不需要部署在同一路由器下就可以进行连接。开启 TCP 连接以后使用 adb connect 可以来连接开启了 TCP 连接的手机。

Android APP 的信息获取

adb devices 这个应该是最常见的 adb 命令之一了,无论是开发、测试都会经常遇到。这条命令比较简单,就是列出当前连接的所有设备(包括模拟器)

日志命令 adb logcat这个命令也很常用,用于获取手机的 log,但是会输出很多内容,可以使用 grep 或者 Windows 上的 findstr 来过滤。

使用 grep Displayed 就可以过滤出已经显示的 APP 例如微信,play 商店。可以借助此命令来找到一些关心的信息。当然也可以用它来抓取 app 的日志,定位分析问题。例如adb logcat -v time | grep “xxx” > appLog.log其中 xxx 为包名或者关键字。

还可以用以下字母来指定不同级别的信息:

V — 明细 verbose(最低优先级)

D — 调试 debug

I — 信息 info

W — 警告 warn

E — 错误 error

F — 严重错误 fatal

S — 无记载 silent

启动命令

adb shell am start -n

com.android.vending/.AssetBrowserActivity -S

使用 此命令把上面获取到的 play 商店的包名和 activity 传入即可启动 app。其中 am 表示 ActivityManager 用来管理应用活动、窗口。-S 表示启动之前先杀掉原有程序

安装命令

adb install

然后给出包名即可

获取 APP 入口

aapt dump badging xxx | grep launchable-activity

其中 xxx 为安装包

收集日志数据

adb bugreport

此命令可以用于手机日志数据用于分析,包括耗电量,CPU 等

adb shell

adb shell 是 Linux 的 shell,可以用来调用 Android 内置的命令。adb shell 是交互式的,可以做很多事情,包括 pull/push 文件,输入等。

清理包的数据

adb shell pm clear com.android.vending

即可对包的数据进行清理,清理以后权限也会清除,恢复到刚安装完的状态。pm 即包管理工具,与 am 对应

获取界面的 xml

adb shell "uiautomator dump

&& cat /sdcard/window_dump.xml"

把当前界面的每个控件、元素都变成 xml 中的节点,中间包含了各个控件的属性,例如是否可点击等。

dumpsys

dumpsys 是很常用的一部分命令,所以单独列出来整理

获取当前的 activity

adb shell dumpsys activity top

获取 activities 的记录,可以获取到 appium 依赖的原始 activity

dumpsys activity activities

获取特定包基本信息

adb shell dumpsys package com.android.vending

再配合 grep 即可筛选出需要的信息

获取通知信息

adb shell dumpsys notification

对于不同手机,通过 UI 层面下拉获取通知信息可能对于脚本的兼容性有影响,所以可以使用此命令获取然后通过 title,text 等筛选出需要的通知内容

获取内存信息

adb shell dumpsys meminfo com.android.settings

获取 CPU 信息

adb shell dumpsys cpuinfo

获取GPU绘制分析

adb shell dumpsys gfxinfo com.android.settings

其中 内存、CPU、GPU 信息获取可以用于分析性能等问题。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末小卡片领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411805.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins安装使用详解,jenkins实现企业级CICD流程

文章目录 一、资料1、官方文档 二、环境准备1、安装jdk172、安装maven3、安装git4、安装gitlab5、准备我们的springboot项目6、安装jenkins7、安装docker8、安装k8s(可选,部署节点)9、安装Harbor10、准备带有jdk环境的基础镜像 三、jenkins实…

addroutes和next()导致的页面无法跳转问题,如登录之后无法跳转到首页,无法重定向,使用next(to)

版本 vue router 3 问题说明 登录成功后,想重定向到/index,执行router.push之后进入beforeEach; 由于第一次访问,判断用户信息为空,需要异步拉取用户的权限等信息, 获得响应后,使用addRoutes批…

harbor部署+docker-compose

harbor部署 harbor介绍 Harbor 是一个开源的企业级容器镜像仓库,用于存储和分发 Docker 镜像及其他容器格式的镜像。 Harbor 提供了一个集中化的存储库,方便团队成员共享和管理容器镜像。你可以将构建好的镜像推送到 Harbor 仓库中,其他成…

用python启动nacos和redis

import subprocess import tkinter as tk from tkinter import ttk, messagebox from subprocess import Popen, run, PIPE# 启动Nacos的函数 def start_nacos():startup_cmd_path rD:\environment\code-software\nacos-server-1.4.1\nacos\bin\startup.cmd# 异步启动NacosPop…

Python 和 PyCharm 安装(傻瓜式)

为什么要安装Python? 当我们写 python 代码的时候,需要有环境的支持,才可以运行代码。而 python 的安装支持了两个主要部分,分别是解释器和标准库。当我们安装完成,就可以使用python里面的标准库来写代码,而…

Nginx - 反向代理、缓存详解

概述 本篇博客对配置Nginx的第二篇,主要介绍Nginx设置反向代理、缓存、和负载均衡三个知识点,在之前的生产实践中遇到的问题进行归纳和总结,分享出来,以方便同学们有更好的成长。 Nginx 核心参数配置 在写Nginx反向代理时&…

Kafka的Offset(偏移量)详解

Kafka的Offset详解 1、生产者Offset2、消费者Offset2.1、消费者2.2、生产者2.3、实体类对象2.4、JSON工具类2.5、项目配置文件2.6、测试类2.7、测试2.8、总结 1、生产者Offset 2、消费者Offset 2.1、消费者 package com.power.consumer;import org.apache.kafka.clients.consu…

nexus 清理 docker 镜像

下载配置 nexus-cli 看网上文档都用如下地址,但现在已经不能下载: wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli chmod x nexus-cli 在 github 上下载: wget https://github.com/heyonggs/nexus-cli/r…

跟李沐学AI:转置卷积

定义 卷积不会增大输入的高宽,通常卷积层后高宽不变或减半。转置卷积则可以用来增大输入的宽高。 转置卷积是一种卷积,它将输入和核进行了重新排列,通常用作上采用。 如果卷积将输入从变为,同样超参数的情况下,转置…

Java中三大容器类(List、Set、Map)详解

三大容器介绍 名称结构特点常见实现类List(列表)由有序的元素序列组成,可以包含重复元素可以通过索引访问元素,插入的顺序与遍历顺序一致ArrayList、LinkedList、VectorMap(映射)由键值对(Key-Value)组成的…

SpringBoot项目中mybatis执行sql很慢的排查改造过程(Interceptor插件、fetchSize、隐式转换等)

刚入职公司,就发现公司项目跑sql特别慢,差不多一万条数据插入到数据库要5秒以上(没有听错,就是这个速度),查询修改删除也是特别慢。直到22年年底实在是受不了了,我就去排查了一下。 用的是Oracl…

OpenCV小练习:身份证号码识别

目标:针对一张身份证照片,把身份证号码识别出来(转成数字或字符串)。 实现思路:需要将目标拆分成两个子任务:(1) 把身份证号码区域从整张图片中检测/裁剪出来;(2) 将图片中的数字转化成文字。第…

Ubuntu 22.04上稳定安装与配置搜狗输入法详细教程

摘要:本教程详细介绍了如何在Ubuntu 22.04上安装和配置搜狗输入法,每个步骤详细配图。由于在Ubuntu 24.04上存在兼容性问题,建议用户继续使用稳定的22.04版本。教程涵盖了从更新系统源、安装fcitx输入法框架,到下载和配置搜狗输入…

存储实验:基于华为存储实现存储双活(HyperMetro特性)

目录 什么是存储双活仲裁机制 实验需求实验拓扑实验环境实验步骤1. 双活存储存储初始化(OceanStor v3 模拟器)1.1开机,设置密码1.2登录DM,修改设备名、系统时间和导入License1.3 设置接口IP 2. 仲裁服务器配置(Centos7…

全局点云配准的新思考:没有良好初值时如何配准?

更多优质内容,请关注公众号:智驾机器人技术前线 1.论文信息 论文标题:BiEquiFormer: Bi-Equivariant Representations for Global Point Cloud Registration 作者:Stefanos Pertigkiozoglou*, Evangelos Chatzipantazis∗ and K…

【循环顺序队的实现】

1.队列的逻辑结构 与 抽象数据类型定义 先进先出的线性表 在顺序队列中,我们使用头指针front指向队首元素;用尾指针rear指向队尾元素的下一个位置(当然这里的指针是用下标模拟出来的) 同时顺序队列中的元素当然是用数组来存储的 …

解决STM32使用J-Link可以擦除和读取但是无法烧录问题

现象 使用J-Link烧录模组固件,出现可以读取和擦除,但是无法烧录问题,提示错误如下: ERROR: Programming failed address 0x08000080 (program error)End of flash programmingERROR: Program failed 读出来的时候这个地址数据…

Linux 软件包管理器yum 自动化构建工具-make/makefile

Linux 工具 linux 软件包管理器 yum 把一些常用的软件提前编译好,做成软件包放在一个服务器上,通过包管理器可以很方便的获取到在这个编译好的软件包。直接进行安装。 软件包和软件包管理器就相当于 App 和应用商店这样的关系。 Linux 安装软件 源代码…

poe供电原理以及应用

1,根据IEEE802.3af标准,一个完整的PoE系统包括供电端设备PSE和受电端设备PD两部分; 供电设备PSE是整个系统的电源提供者,为PD设备提供直流电源,其可分为M

如何理解进程

一、进程的概念 进程:顾名思义,就是一个完整执行程序的过程。没错,就是这么简单,但是在程序执行的过程之中,系统会为这个执行的程序分配内存资源,这些过程也包含在进程当中。 进程是动态的,是程…