常用ADB命令整理已经ADB键盘输入

我们在测试Android app过程中 需要经常更换安装包的操作 熟练使用ADB命令可以提升测试效率

* 查看设备
adb devices
ps这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示
若有多台安卓设备,可以通过在adb后面加上 -s <设备id> 对指定设备进行装包、卸载等操作

*启动adb
adb start-server

*关闭adb
adb kill-server

* 安装软件
adb install <apk文件路径>

* 卸载软件 
adb uninstall <应用进程名>

*卸载app但保留数据和缓存文件
adb uninstall -k<package>

*重新启动设别
adb reboot

*重启到bootloader,即刷机模式
adb reboot bootloader

*重启到recovery,即恢复模式
adb reboot recovery

*从电脑上发送文件到设备
adb push <本地路径> <远程路径>
ps: 用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)
 

*从设备上下载文件到电脑
adb pull <远程路径> <本地路径>
ps: 用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

*取得设备root权限
adb remount

*登录设备shell
adb shell
adb shell<command命令>
ps: adb shell 后面加的是linux系统操作指令,也即直接运行设备命令, 相当于执行远程命令

-查看手机产线版本
adb shell cat /sys/devices/mx_tsp/appid

-查看手机运营商版本
adb shell cat /proc/lk_info/sw_version

-查看手机是否加密
adb shell cat /proc/lk_info/sec(返回0则非加密。1则加密)

-查看手机型号
adb shell getprop ro.build.product

-安卓版本
adb shell getprop version.release

-查看flyme版本
adb shell getprop ro.build.display.id

*使用adb命令对手机进行截屏并拷贝到电脑
adb shell /system/bin/screencap -p /sdcard/screenshot.png(保存到手机)
adb pull /sdcard/screenshot.png d:/screenshot.png(拷贝到电脑)

*录制设备屏幕
adb shell screenrecord--bugreport /sdcard/xxx.mp4

*查看性能
adb shell dumpstate

ps其输出内容主要包括以下内容

a.设备基本信息
b.内存使用情况
c.CPU使用情况
d./proc文件夹中保存的系统各种实时信息,特别是内存使用方面的详细信息,如用procrank命令获取的按内存使用率情况排序的进程列表
e.内核的一些信息
f.进程列表
g.各种进程中的线程列表以及各线程的堆栈信息
h.各进程打开的文件
i.Logcat中的三个环状日志的内容,分别是系统主日志SYSTEM、事件日志EVENT和无线电日志RADIO
j.网络相关的信息
k.df命令输入的文件系统使用率信息
l.系统中安装的应用包信息
m.dumpsys命令输出的信息
n.正在运行的应用列表
o.正在运行的服务列表
p.正在运行的内容供应组件列表

*输出当前servers信息
adb shell dumpsys 
ps: 输出信息的开始部分就是所有运行的service
-查询到运行的system service后,就可以在dumpsys后面加上service的名字,查看指定的service信息。
adb shell dumpsys activity
adb shell dumpsys cpuinfo(CPU)
adb shell dumpsys batterystate(电池)
adb shell dumpsys window(分辨率)
 
*检测手机运行时间
adb shell uptime

*查看logcat日志
adb logcat -v time-s tag > xxx.log
ps: 其中-v time使输出的日志带时间信息,-s用于通过tag过滤日志(也可以通过管道grep过滤),> 使保存到本地文件。若直接在终端查看日志,则不加。
adb logcat | grep <正则表达式>
ps: grep后为正则表达式
adb logcat | grep <正则表达式> | tee xxx.log
ps:使用 tee可以实现同时在终端输出且保存到文件

*模拟系统按键
adb shell inputkeyevent <数值>

具体数值对应的按键如下
0 -->  "KEYCODE_UNKNOWN"
1 -->  "KEYCODE_MENU"
2 -->  "KEYCODE_SOFT_RIGHT"
3 -->  "KEYCODE_HOME"
4 -->  "KEYCODE_BACK"
5 -->  "KEYCODE_CALL"
6 -->  "KEYCODE_ENDCALL"
7 -->  "KEYCODE_0"
8 -->  "KEYCODE_1"
9 -->  "KEYCODE_2"
10 -->  "KEYCODE_3"
11 -->  "KEYCODE_4"
12 -->  "KEYCODE_5"
13 -->  "KEYCODE_6"
14 -->  "KEYCODE_7"
15 -->  "KEYCODE_8"
16 -->  "KEYCODE_9"
17 -->  "KEYCODE_STAR"
18 -->  "KEYCODE_POUND"
19 -->  "KEYCODE_DPAD_UP"
20 -->  "KEYCODE_DPAD_DOWN"
21 -->  "KEYCODE_DPAD_LEFT"
22 -->  "KEYCODE_DPAD_RIGHT"
23 -->  "KEYCODE_DPAD_CENTER"
24 -->  "KEYCODE_VOLUME_UP"
25 -->  "KEYCODE_VOLUME_DOWN"
26 -->  "KEYCODE_POWER"
27 -->  "KEYCODE_CAMERA"
28 -->  "KEYCODE_CLEAR"
29 -->  "KEYCODE_A"
30 -->  "KEYCODE_B"
31 -->  "KEYCODE_C"
32 -->  "KEYCODE_D"
33 -->  "KEYCODE_E"
34 -->  "KEYCODE_F"
35 -->  "KEYCODE_G"
36 -->  "KEYCODE_H"
37 -->  "KEYCODE_I"
38 -->  "KEYCODE_J"
39 -->  "KEYCODE_K"
40 -->  "KEYCODE_L"
41 -->  "KEYCODE_M"
42 -->  "KEYCODE_N"
43 -->  "KEYCODE_O"
44 -->  "KEYCODE_P"
45 -->  "KEYCODE_Q"
46 -->  "KEYCODE_R"
47 -->  "KEYCODE_S"
48 -->  "KEYCODE_T"
49 -->  "KEYCODE_U"
50 -->  "KEYCODE_V"
51 -->  "KEYCODE_W"
52 -->  "KEYCODE_X"
53 -->  "KEYCODE_Y"
54 -->  "KEYCODE_Z"
55 -->  "KEYCODE_COMMA"
56 -->  "KEYCODE_PERIOD"
57 -->  "KEYCODE_ALT_LEFT"
58 -->  "KEYCODE_ALT_RIGHT"
59 -->  "KEYCODE_SHIFT_LEFT"
60 -->  "KEYCODE_SHIFT_RIGHT"
61 -->  "KEYCODE_TAB"
62 -->  "KEYCODE_SPACE"
63 -->  "KEYCODE_SYM"
64 -->  "KEYCODE_EXPLORER"
65 -->  "KEYCODE_ENVELOPE"
66 -->  "KEYCODE_ENTER"
67 -->  "KEYCODE_DEL"
68 -->  "KEYCODE_GRAVE"
69 -->  "KEYCODE_MINUS"
70 -->  "KEYCODE_EQUALS"
71 -->  "KEYCODE_LEFT_BRACKET"
72 -->  "KEYCODE_RIGHT_BRACKET"
73 -->  "KEYCODE_BACKSLASH"
74 -->  "KEYCODE_SEMICOLON"
75 -->  "KEYCODE_APOSTROPHE"
76 -->  "KEYCODE_SLASH"
77 -->  "KEYCODE_AT"
78 -->  "KEYCODE_NUM"
79 -->  "KEYCODE_HEADSETHOOK"
80 -->  "KEYCODE_FOCUS"
81 -->  "KEYCODE_PLUS"
82 -->  "KEYCODE_MENU"
83 -->  "KEYCODE_NOTIFICATION"
84 -->  "KEYCODE_SEARCH"
85 -->  "TAG_LAST_KEYCODE"
所以,adb shell input keyevent 4 为返回系统主页,adb shell input keyevent 24 为增加音量

*强制杀死进程
adb shell amforce-stop <进程名>

*启动指定Activity
adb shell am start-n <进程名> /<Acitvity>

*开关wifi
adb shell svc wifienable #打开wifi
adb shell svc wifidisable #关闭wifi

*查看wifi密码
adb shell cat /data/misc/wifi/*.conf

*获取序列号
adb get-serialno

*查看设备cpu和内存占用情况
adb shell top

*查看占用内存前6的app
adb shell top -m 6

*刷新一次内存信息,然后返回
adb shell top -n 1

*查询各进程内存使用情况
adb shell procrank

*杀死一个进程
adb shell kill[pid]

*查看进程列表
adb shell ps

*查看指定进程状态
adb shell ps -x[PID]

*查看后台services信息
adb shell servicelist

*查看当前内存占用
adb shell cat /proc/meminfo

*查看IO内存分区
adb shell cat /proc/iomem

*重命名文件
adb shell rename <原文件名> <修改后文件名>

*删除system/avi.apk
adb shell rm/system/avi.apk

*删除文件夹及其下面所有文件
adb shell rm -r<文件夹>

*移动文件
adb shell mv <原文件路径> <移动后文件路径>

*设置文件权限
adb shell chmod 777 <文件>

*新建文件夹
adb shell mkdir path/foldelname

*查看文件内容
adb shell cat <file>

*清除log缓存
adb logcat -c

*查看bug报告
adb bugreport

*获取设备名称
adb shell cat /system/build.prop

*查看ADB帮助
adb help

*跑monkey
adb shell monkey -v-p <进程名> <次数>

*当adb 显示端口被占用,拒绝访问时的处理办法:
adb nodaemon server//查看哪个端口被占用

netstat -ano |findstr "<端口号>" //提示占用该端口的进程(非0地址)
(下面步骤可省略,可通过任务管理器杀死)
tasklist /fi “PIDeq <进程号>”//通过pid查看所有进程
taskkill /pid <进程号> /f//杀死进程


 

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

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

相关文章

java-kotlin踩坑:错误:找不到符号(点击能跳转到对应类中)

问题描述&#xff1a; 在android用java调用一个kotlin定义的类时&#xff0c;导包正常&#xff0c;点击也能跳转到对应类中&#xff0c;但是在编译运行时会报错&#xff0c;提示找不到符号 解决方法&#xff1a; 第一步&#xff1a;在app级别的build.gradle中添加kotlin-and…

【算法与数据结构】684、685、LeetCode冗余连接I II

文章目录 一、684、冗余连接 I二、685、冗余连接 II三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、684、冗余连接 I 思路分析&#xff1a;题目给出一个无向有环图&#xff0c;要求去掉一个边以后构成一个树&#xf…

【Linux】 login命令使用

login命令 在 Linux 中用于创建一个新的会话&#xff0c;并在新会话中登录用户。这个命令通常在终端中自动执行&#xff0c;当你打开一个新的终端会话或者通过 SSH 远程连接到 Linux 服务器时。 在命令后面附加欲登入的用户名称&#xff0c;它会直接询问密码&#xff0c;等待…

提示工程(Prompt Engineering)、微调(Fine-tuning) 和 嵌入(Embedding)

主要参考资料&#xff1a; 还没搞懂嵌入&#xff08;Embedding&#xff09;、微调&#xff08;Fine-tuning&#xff09;和提示工程&#xff08;Prompt Engineering&#xff09;&#xff1f;: https://blog.csdn.net/DynmicResource/article/details/133638079 B站Up主Nenly同学…

几种常见的配置文件格式,以及它们的优缺点和用法汇总

文章目录 1. INI2. XML3. JSON4. YAML5. TOML结论 配置文件是用于存储软件程序、操作系统或服务器等的设置的文件。不同的配置文件格式具有不同的结构和语法&#xff0c;选择哪种格式通常取决于具体的应用需求、易用性、可读性以及环境支持。以下是几种常见的配置文件格式&…

【Java程序设计】【C00279】基于Springboot的智慧外贸平台(有论文)

基于Springboot的智慧外贸平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧外贸平台 本系统分为系统功能模块、管理员功能模块、买家功能模块以及商家功能模块。 系统功能模块&#xff1a;在平台首页可以…

Atcoder ABC340 A-D题解

比赛链接:ABC340 话不多说&#xff0c;看题。 Problem A: 签到。 #include <bits/stdc.h> using namespace std; int main(){int a,b,d;cin>>a>>b>>d;for(int ia;i<b;id)cout<<i<<endl;return 0; } Problem B: 还是签到题。一个v…

L4 级自动驾驶汽车发展综述

摘要:为了减小交通事故概率、降低运营成本、提高运营效率,实现安全、环保的出行,自动驾驶 技术的发展已成为大势所趋,而搭配有L4 级自动驾驶系统的车辆是将车辆驾驶全部交给系统。据此,介绍了自动驾驶汽车的主流技术解决方案;分析了国内外L4 级自动驾驶汽车的已发布车型、…

HQYJ 2024-2-23 作业

自己实现单向循环链表的功能 整理思维导图 复习前面顺序表和链表的代码&#xff0c;重写链表逆置函数 1.实现单向循环链表的功能 loop_link_list.h文件 #ifndef __LOOP_LINK_LIST__ #define __LOOP_LINK_LIST__ #include<stdio.h> #include<stdlib.h> typedef…

SOCKS5、代理 IP、HTTP 在软件工程中的应用

在当今数字化时代&#xff0c;网络安全是软件工程领域中至关重要的话题之一。本文将深入探讨 SOCKS5 代理、代理 IP、HTTP 代理等网络代理技术&#xff0c;以及它们在软件工程中的应用&#xff0c;强调网络安全的重要性&#xff0c;并提供一些实用的建议。 1. SOCKS5 代理&…

基础爬虫篇

文章目录 爬虫介绍requsets模块和快速使用携带请求头携带cookie的两种方式post携带参数模拟登录 取出cookie和处理cookie响应对象证书使用代理超时 异常处理 上传文件 爬虫介绍 # 爬虫是什么&#xff1f;-通过编程技术---》把互联网中的数据---》获取到---》数据清洗---》存到…

一次路由多次交换的概念与用处

“一次路由多次交换”是指在网络中&#xff0c;数据包首次被路由后&#xff0c;随后相同流的数据包在二层通过交换方式传输&#xff0c;不再需要路由处理。 具体来说&#xff0c;这个过程涉及到以下几个关键点&#xff1a; 路由与交换&#xff1a;路由是指根据IP地址将数据包…

第2讲:C语言数据类型和变量

第2讲&#xff1a;C语言数据类型和变量 目录1.数据类型介绍1.1字符型1.2整型1.3浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof 操作符1.5.2 数据类型长度1.5.3 sizeof 中表达式不计算 2.signed 和 unsigned3.数据类型的取值范围4. 变量4.1 变量的创建4.2 变量的分类 5…

oracle中trim函数、ltrim函数、rtrim函数的使用方法,trim()函数、ltrim ()函数、rtrim()函数的用法

在oracle中&#xff0c;trim()函数的用法有,leading 开头字符&#xff0c;trailing 结尾字符&#xff0c;both 开头和结尾字符&#xff0c;如下&#xff1a; trim(leading || trailing || both 将要被替换掉的字符" from “将要被替换的字符串") 1、trim函数去除指…

opencv判断二值的情况

目的 先说说理论&#xff1a; 什么叫图像的二值化&#xff1f;二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0&#xff08;黑色&#xff09;或者255&#xff08;白色&#xff09;&#xff0c;也就是让整个图像呈现只有黑和白的效果。在灰度化的图像中灰度值的范围为0…

kafka为什么性能这么高?

Kafka系统架构 Kafka是一个分布式流处理平台&#xff0c;具有高性能和可伸缩性的特点。它使用了一些关键的设计原则和技术&#xff0c;以实现其高性能。 上图是Kafka的架构图&#xff0c;Producer生产消息&#xff0c;以Partition的维度&#xff0c;按照一定的路由策略&#x…

人工智能和机器学习中深度学习、自然语言处理、计算机视觉详细介绍和java代码实现、数据模型训练

人工智能和机器学习领域详细介绍及Java代码实现 1. 深度学习 介绍: 深度学习是一种机器学习技术,通过多层神经网络对数据进行学习和表征。Java实现: 使用深度学习库如DL4J(DeepLearning4j)来构建和训练深度神经网络模型。数据模型训练: 示例代码如下:public class Deep…

C++力扣题目 392--判断子序列 115--不同的子序列 583--两个字符串的删除操作 72--编辑操作

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;&quo…

代码随想录算法训练营day36 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间 基于左边界排序 class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:count 0 # 需要移除的区间数量intervals.sort(keylambda x: x[0])for i in range(1, len(intervals)):if intervals[i][0] < intervals[i-1][1]…

【Logback】如何在项目中快速引入Logback日志?

目录 1、引入相关依赖或者 jar 包 2、使用logback日志 3、引入logback配置文件 4、打印logback内部状态信息 Logback 是 Java 社区中使用最广泛的日志框架之一。它是其前身 Log4j 的替代品。Logback 比所有现有的日志框架速度更快&#xff0c;占用空间更小&#xff0c;而且…