ADB命令集锦,一起来学吧

前言

在测试APP时,我们常常会用到adb命令来协助测试,那么adb命令到底是什么?有什么用?怎么用?

今天我就整理了一些工作中常用的adb知识点,希望对大家有所帮助。

ADB学习全攻略

ADB是什么?

adb即Android Debug Bridge(安卓调试桥)。它就是一个命令行窗口,用于电脑端与模拟器或者真实设备交互。 

常用操作有:

  • 把文件发送到android设备,或从android拖拽文件到本地

  • 在android设备上安装/卸载应用

  • 启动应用

  • 把APP的日志导出到本地

  • 截屏、录像 

    思考:

    上面说的这几点能否有其他方式替代,若有,区别是什么?

 

ADB怎么使用?

1、adb是无需安装的。找度娘搜索adb,然后下载工具压缩包,解压并添加环境变量,然后就可以在dos环境下使用了。

2、之后,用usb连接电脑和手机(或模拟器),并开启Android 设备的开发者选项和 USB 调试模式。

3、此时就可以在dos窗口输入cmd devices 命令检查是否可以正常使用了。

常见问题

adb devices 没有设备:可借助驱动精灵检查手机驱动,驱动安装好之后重启电脑。 

adb devices unauthorized :解决办法:将手机设置->辅助功能->开发者模式->撤销usb调试授权,重新打开开发者模式。

常用命令

1、查看adb版本
adb version
2、查询pc链接的所有android 设备
adb devices
3、装包
如果在电脑D盘下面有个a.apk文件,只需要一行命令就安装到手机上:
adb install d:/a.apk
 
如果已经安装了这个程序,可以通过以下命令覆盖安装:adb install -r d:/a.apk
 
保留数据和缓存文件,重新安装 apk
adb install -r a.apk
 
安装包在android设备中
adb shell pm install apk在移动端的路径

 4、卸载包

adb uninstall 包名
 
卸载软件但是保留配置和缓存文件:
adb uninstall -k 包名
 
如果机器上有多个模拟器或真机,需要使用-s命令行参数指定具体的模拟器或真机。例如,下面的命令分别在模拟器和真机上安装、重新安装和卸载应用程序。
在emulator-5554模拟器上安装ebook.apk
adb -s emulator-5554 install ebook.apk
 
在真机上安装ebook.apk
adb -s HT9BYL904399 install ebook.apk
 
在emulator-5554模拟器上重新安装ebook.apk
adb -s emulator-5554 install -r ebook.apk
 
在真机上重新安装ebook.apk
adb -s HT9BYL904399 install -r ebook.apk
 
在emulator-5554模拟器上卸载ebook.apk(不保留数据和缓冲目录)
adb -s emulator-5554 uninstall ebook包名
 
在真机上卸载ebook.apk(保留数据和缓冲目录)
adb -s HT9BYL904399 uninstall -k ebook包名
5、包管理,如何知道一个app包名呢

包名(Package name)在Android系统中是判断一个App的唯一标识,不同的App可以有同样的名字,但是它的包名不可以相同。

例如我们可以自己编译生成一个App也叫“微信”,但是我们的App的包名不能为com.tencent.mm

(微信的包名为这个),如果指定的包名和微信一致,那么手机上只允许安装这两个App中的其中一个。说到这很多人就会有疑问,如果有人恶意做了一个和微信内容一模一样的App,名字和包名都和微信一样,那怎么分辨呢?Android中为了防止这样的情况,还做了一个叫签名的东西,微信的签名一般我们是没有的,所以就可以通过签名来标识出这款App到底是谁的了。

1、看源代码。当有源代码的时候,可以到工程目录下的 “AndroidManifest.xml”文件下查看package这一项。
 
2、adb命令查看列出手机装的所有 app 的包名:
adb shell pm list packages 
 
3.列出系统应用的所有包名:
adb shell pm list packages -s 
 
4.列出除了系统应用的第三方应用包名:
adb shell pm list packages -3
 
5.推测一个包中可能带有的关键字:
adb shell dumpsys activity | findstr mFocusedActivity
 
6.清除应用数据与缓存
adb shell pm clear 应用包名

 6、文件相关

1、接收电脑文件
语法:adb push local remote
案例:adb push d:/a.txt /sdcard/  
把电脑 D 盘下的 a.txt 文件推送到手机 sdcard 目录下
 
2、上传文件到电脑
语法:adb pull remote local
案例:adb pull /sdcard/a.txt d:/   
上传位于/sdcard/目录下的 a.txt 文件到电脑的 D 盘根目录下
7、截屏、录屏
1.截屏
adb shell screencap /sdcard/a.png
adb shell /system/bin/screencap -p /sdcard/a.png
 
2.使用adb进行屏幕录像
adb shell screenrecord /sdcard/a.mp4
通过ctrl+c停止录制,你可以在sdcard目录下查看。妈妈再也不担心我到处找录制视频的软件了。

 

8、shell
进入shell
adb shell
 
退出shell
exit
9、手机信息收集

 

获取序列号
adb get-serialno
 
获取 MAC 地址
adb shell  cat /sys/class/net/wlan0/address
 
查看设备型号
adb shell getprop ro.product.model
 
查看 Android 系统版本
adb shell getprop ro.build.version.release
 
查看屏幕分辨率
adb shell wm size
 
查看屏幕密度
adb shell wm density
 
查看permissions
adb shell pm list permissions 
 
查看系统的危险权限dangerous permissions
adb shell pm list permissions -d -g
10、adb服务器杀死和启动
adb kill-server
adb start-server
场景:比如希望移动adb文件夹,或者adb命令得不到想要的内容时
11、与进程相关:
列出当前进程
adb shell ps | findstr 包名
 
杀死某个包的进程
adb shell am force-stop 包名

 

12、与性能相关的一些内容
获取内存:
adb shell dumpsys meminfo 包名
 
获取cpu:
adb shell dumpsys cpuinfo | findstr 包名
 
adb shell top -n 1 | findstr 包名
 
获取流畅度相关:
adb shell dumpsys gfxinfo 包名
13、app的启动停止

如果想在模拟器或真机上运行已安装的应用程序,除了直接在模拟器或真机上操作外,还可以使用如下的命令直接运行程序。

activity的获取方式见14条。

在emulator-5554模拟器上运行ebook.apk
adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main
 
在真机上运行ebook.apk
adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main
 
其中Main是ebook.apk的主Activity。相当于Windows应用程序的主窗体或Web应用程序的主页面。am是shell命令。
14、与Activity操作等相关
1.查看当前显示的activity
adb shell dumpsys activity | findstr "mFocusedActivity"
结果:
 mFocusedActivity: ActivityRecord{93a4f9 u0 com.youdao.note/.activity2.MainActivity t36}
注意:我们只需要这一部分:com.youdao.note/.activity2.MainActivity即包名+activity  
 
2.找到当前手机内的top Activity:
adb shell dumpsys activity top | findstr ACTIVITY
 
3.启动某一个Activity:
adb shell am start activity路径
adb shell am start com.youdao.note/.activity2.MainActivity
15、查看8080端口是哪个应用占用
netstat -ano|findstr "8080"

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

 

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】TIM定时器输出比较

1 输出比较 1.1 输出比较简介 OC(Output Compare)输出比较;IC(Input Capture)输入捕获;CC(Capture/Compare)输入捕获和输出比较的单元输出比较可以通过比较CNT与CCR寄存器值&#…

Apache Sqoop使用

1. Sqoop介绍 Apache Sqoop 是在 Hadoop 生态体系和 RDBMS 体系之间传送数据的一种工具。 Sqoop 工作机制是将导入或导出命令翻译成 mapreduce 程序来实现。在翻译出的 mapreduce 中主要是对 inputformat 和 outputformat 进行定制。 Hadoop 生态系统包括:HDFS、Hi…

python提取通话记录中的时间信息

您需要安装适合中文的SpaCy模型。您可以通过运行 pip install spacypython -m spacy download zh_core_web_sm来安装和下载所需的模型。 import spacy# 加载中文模型 nlp spacy.load(zh_core_web_sm)# 示例电话记录文本 text """ Agent: 今天我们解决一下这…

【模电】基本共射放大电路的工作原理及波形分析

基本共射放大电路的工作原理及波形分析 在上图所示的基本放大电路中,静态时的 I B Q I\tiny BQ IBQ、 I C Q I\tiny CQ ICQ、 U C E Q U\tiny CEQ UCEQ如下图( b )、( c )中虚线所标注。 ( a ) u i 的波形( b ) i B …

fastapi框架可以自动生成接口文档

安装FastAPI pip install fastapi test1.py from fastapi import FastAPIapp FastAPI()app.get("/") def read_root():return {"Hello": "World"}app.get("/items/{item_id}") def read_item(item_id: int, q: str None):#路由处理…

“打败魔法的永远是魔法”——人类应该如何和ChatGPT相处

GPT 的出现不是偶然的,是必然的! 谈起 ChatGPT 不得不提起 GPT,ChatGPT 是基于GPT 模型开发的一种AI交互智能机器人产品,可完成文案编写、代码编写和信息获取等任务。GPT是生成式预训练模型,主要基于 Transformer,目前…

Spring Bean的生命周期各阶段详解附源码

目录 Bean的生命周期Bean定义阶段Bean实例化阶段Bean属性注入阶段Bean初始化阶段Bean销毁阶段 Bean的生命周期 bean的生命周期,我们都知道大致是分为:bean定义,bean的实例化,bean的属性注入,bean的初始化以及bean的销毁…

华为OD机试 - 仿LISP运算 - 逻辑分析(Java 2023 B卷 200分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

C语言数组(上)

# 数组的概念 数组是一组相同类型元素的集合。数组中存放的是一个或多个数据,但是数组中的元素个数不能为零;数组中存放的所有元素(数据)的类型必须是相同的。 数组分为一维数组和多维数组,多维数组一般比较多见的是二…

LoadBalancer将服务暴露到外部实现负载均衡purelb-layer2模式配置介绍

目录 一.purelb简介 1.简介 2.purelb的layer2工作模式特点 二.layer2的配置演示 1.首先准备ipvs和arp配置环境 2.purelb部署开始 (1)下载purelb-complete.yaml文件并应用 (2)查看该有的资源是否创建完成并运行 &#xff…

安美数字酒店宽带运营系统 SQL注入漏洞复现

0x01 产品简介 HiBOS酒店宽带运营系统隶属于安美世纪(北京)科技有限公司开发的一套酒店宽带管理系统。 0x02 漏洞概述 安美数字酒店宽带运营系统 online_status.php、language.php等接口处存在SQL注入漏洞,未经身份认证的攻击者可以通过此漏洞获取数据库权限,进一步利用可…

Star 10.4k!推荐一款国产跨平台、轻量级的文本编辑器,内置代码对比功能

notepad 相信大家从学习这一行就开始用了,它是开发者/互联网行业的上班族使用率最高的一款轻量级文本编辑器。但是它只能在Windows上进行使用,而且正常来说是收费的(虽然用的是pj的)。 对于想在MacOS、Linux上想使用,…

java操作windows系统功能案例(二)

1、打印指定文件 可以使用Java提供的Runtime类和Process类来打印指定文件。以下是一个示例代码: import java.io.File; import java.io.IOException;public class PrintFile {public static void main(String[] args) {if (args.length ! 1) {System.out.println(…

GNU环境下伪操作伪指令的测试

目录 1.伪操作ldr转为指令的验证 测试目标: 测试代码: 测试结果: 结果分析: 2、伪操作ALIGN使用的例子 测试目标: 测试代码: 测试结果: (1)未使用align伪操作: (2)使用了align伪操作…

Leetcode1038. 从二叉搜索树到更大和树(每日一题)

目录 ⚽题目: 🏐题目分析: 🏀题目解答: 🥎代码如下: ⚽题目: 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值…

Python类型注解必备利器:typing模块解读指南

更多资料获取 📚 个人网站:ipengtao.com 在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持。这个模块在增强代码可读性和维护性方面提供了帮助。本文将深入探讨typing模块,介绍其基本概念、常用类型注解以及使用示例&am…

Java并发模式和设计策略

引言 小伙伴们,今天小黑要和咱们聊聊Java并发编程的那些事儿。在现代软件开发中,高效地处理多任务是一个不可或缺的能力。特别是对于服务成千上万用户的应用,能够同时处理多个操作不仅是一个加分项,简直是必备技能了!…

【踩坑】解决maven的编译报错Cannot connect to the Maven process. Try again later

背景 新公司新项目, 同事拷给我maven的setting配置文件, 跑项目编译发现maven报 Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven Importing JDK settings and restart IntelliJ IDEA 虽然好像不影响, 项目最终还是能跑起来…

C++ 系列 第四篇 C++ 数据类型上篇—基本类型

系列文章 C 系列 前篇 为什么学习C 及学习计划-CSDN博客 C 系列 第一篇 开发环境搭建(WSL 方向)-CSDN博客 C 系列 第二篇 你真的了解C吗?本篇带你走进C的世界-CSDN博客 C 系列 第三篇 C程序的基本结构-CSDN博客 前言 面向对象编程(OOP)的…

Linux(14):进程管理

一个程序被加载到内存当中运作,那么在内存内的那个数据就被称为进程(process)。 进程是操作系统上非常重要的概念,所有系统上面跑的数据都会以进程的型态存在。 进程 在 Linux底下所有的指令与能够进行的动作都与权限有关,而系统如何判定权…