adb和shell常规命令使用_MachineHou的博客-程序员秘密_adb shell命令

技术标签: shell  android  adb  

1,通过adb 连接(WiFi连接或者数据线连接)Android设备
2,PC端进入命令窗口(win +R 组合键后,输入cmd)
3,adb shell 进入linux命令行
4,输入wm size ,查看分辨率
在这里插入图片描述
5,输入wm density 查看dpi
在这里插入图片描述
其他常用adb指令:
1.adb install +包名 adb安装apk (覆盖安装是使用 -r 选项)
2.adb uninstall +包名 adb卸载apk
3.adb connect +设备IP 网络连接Android设备
4.adb reboot 重启Android设备
5.adb devices 获取连接的设备列表及设备状态
6.adb get-state 获取设备的状态 (设备的状态有 3 钟,device:设备正常连接 , offline:连接出现异常,设备无响应 , unknown:没有连接设备)
7.查看运行在 Android设备上的 adb 后台进程:
执行 adb shell ps | grep adbd ,可以找到该后台进程,windows 请使用 findstr 替代 grep
在这里插入图片描述
8.adb shell 命令
adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下

8.1. adb shell bugreport , 打印dumpsys、dumpstate、logcat的输出,也是用于分析错误

输出比较多,建议重定向到一个文件中

adb shell dumpsys > d:\bugreport.log

8.2 pm
Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息

8.2.1 adb shell pm list package 列出所有的应用的包名 (-s:列出系统应用 -3:列出第三方应用 -f:列出应用包名及对应的apk名及存放位置 -i:列出应用包名及其安装来源)

8.2.2 adb shell pm path+包名 列出对应包名.apk 位置

8.2.3 adb shell pm install +apk存放路径 安装应用(目标 apk 存放于PC端,用 adb install 安装 目标 apk 存放于Android设备上,用 pm install 安装)

8.3 am

8.3.1 adb shell am start +包名/.Activity (要启动的Activity) 启动一个 Activity (-s先停止目标应用,再启动 -w 等待应用完成启动 -a 启动默认浏览器打开一个网页例:adb shell am start -a android.intent.action.VIEW -d http://testerhome.com)
在这里插入图片描述
8.3.2 adb shell am monitor 监控 crash 与 ANR

8.3.3 adb shell am force-stop 后跟包名,结束应用

8.3.4 adb shell am startservice 启动一个服务

8.3.5 adb shell am broadcast 发送一个广播

8.4 input

这个命令可以向 Android 设备发送按键事件

8.4.1 adb shell input text +具体内容 发送文本内容,不能发送中文

8.4.2 adb shell input keyevent + 按键事件 发送按键事件 例如:adb shell input keyevent KEYCODE_HOME 模拟按下Home键

8.4.3 adb shell input tap +触摸事件的位置 , 对屏幕发送一个触摸事件 例如:点击屏幕上坐标为 500 500 的位置(adb shell input tap 500 500)

8.4.4 adb shell input tap , 对屏幕发送一个触摸事件

8.4.5 adb shell input swipe 滑动事件 例如:从右往左滑动屏幕

adb shell input swipe 800 600 100 600

8.5 screencap
截图命令

adb shell screencap -p /sdcard/DCIM/screenTest.png

8.6 screenrecord
4.4以上系统版本新增的录制命令

adb shell screenrecord /sdcard/demo.mp4

执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard/ 下

8.7 ime
列出设备上的输入法

adb shell ime list -s

其他
1.获取系统版本

adb shell getprop ro.build.version.release

2.获取系统api版本

adb shell getprop ro.build.version.sdk

3.获取手机相关制造商信息

adb shell getprop | grep “model|version.sdk|manufacture
r|hardware|platform|revision|serialno|product.name|brand”

3,获取手机系统信息( CPU,厂商名称等)

adb shell “cat /system/build.prop | grep “product””

4,获取手机设备型号

adb -d shell getprop ro.product.model

5,获取手机厂商名称

adb -d shell getprop ro.product.brand

6,获取手机的序列号

有两种方式
1,adb get-serialno
2,adb shell getprop ro.serialno

7,获取手机MAC地址

adb shell cat /sys/class/net/wlan0/address

8,获取手机内存信息

adb shell cat /proc/meminfo

9,获取手机存储信息

adb shell df

10,获取手机内部存储信息

adb shell df /data

11,获取Android设备屏幕分辨率

adb shell “dumpsys window | grep mUnrestrictedScreen”

12,连接多个设备对其中一个进行操作

//以adb shell 为例
adb -s 192.168.101.37:5555 shell

13,查看运行进程

adb shell procrank

14,关闭或杀掉进程

adb shell kill 366

15,保留数据和缓存文件,重新安装,升级

adb install -r test.apk

16,卸载app但保留数据和缓存文件

adb uninstall -k cnblogs.apk

17,查看目录下的文件大小

adb shell du -sh *

18,查看正在运行的Services

adb shell dumpsys activity services []

19,查看正在运行的Activity

adb shell dumpsys activity []

20,clear 清除应用数据

adb shell pm clear com.baidu

21,cp复制文件

adb shell 进入Android Linux命令中
cp -f system/app/Music/Music.apk /sdcard/Music.apk

22,删除命令

adb shell 进入Android Linux命令中
rm -r /mnt/sdcard/a.mp3
删除文件夹的时候需要加上-r参数
cd dir
rm * 删除dir中所有文件

23,重启进入recovery模式

adb reboot recovery

24,cat查看文件

cat /sdcard/test.txt

25,查看指定进程PID

ps + 进程的包名

26,查看进程具体的信息

例如:1460是要查看的进程的PID
cat /proc/1460/maps 查看进程的文件结构
cat /proc/1460/status 查看进程的状态

27,findstr 和 grep过滤搜索

1)cmd下搜索包名为com.android.launcher3的进程
adb shell ps|findstr /i “com.android.launcher3”
2)shell下面搜索
先使用adb shell进去,然后使用grep命令过滤
ps | grep “com.linux.test”

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012028250/article/details/121033505

智能推荐

报错:cannot overwrite directory ‘xxx‘ with non-directory_cannot overwrite non-directory_AI人工智能与大数据的博客-程序员秘密

在使用cp或者mv命令时,出现报错:cannot overwrite directory 'xxx' with non-directory原因是新目录下有同名的目录,写入失败。例如:新目录有文件夹docker/,如果要把另一个docker文件cp到新目录中,则会报错。欢迎关注人工智能技术分析人工智能 机器学习 深度学习AI人工智能三要素:数据、算力和算法计算机视觉(CV)任务介绍:分类、检测、分割、超分、关键点识别、图像生成、度量学习关于我缘起:新的开始公众号持续更新原创内容,欢迎订

解决“ .dll(或.ocx)控件已加载,但对DllregisterServer的调用失败,错误代码为0x80004005”问题的两种终极方法:SubInACL安装 VS 命令提示符_模块hhctrl.ocx已加载,但对diiregisterserver的调用失败,错误代码为0x80_我的编程世界的博客-程序员秘密

VB开发环境下开发的程序经常会遇到打包好的工程能够无问题安装,但是安装后却显示“ ****.dll(或.ocx控件已加载但对DllRegisterServer的调用失败,错误代码为0x80004005(或其他其他类似错误代码)。这样的问题明白人一看就知道这是dll或ocx控件未正确注册的原因,但是怎样解决这个问题,确是比较棘手。     遇到这个问题的时候大家首先能想到的是手动注册该控件。一般

Visual Object Tracking: MDNet + VITAL_高精度计算机视觉的博客-程序员秘密

visual object tracking的项目,运行中碰到些小问题。Windows下matlab运行的这两个项目非常接近,https://github.com/HyeonseobNam/MDNethttps://github.com/ybsong00/Vital_release两个项目的运行,都要先看readme.md文件(比如matlab版本不能太低,要R2014或以上),尤其是...

CString.AllocSysString(),BSTR,_bstr_t的内存泄露_wzb198606的博客-程序员秘密

从百度百科里可以知道CString.AllocSysString()的内存释放是通过SysFreeString()函数来进行,今天在使用一个第三方库的时候有下列语句导致了内存泄露构造函数CString name;_bstr_t m_name = name.AllocSysString();析构函数::SysFreeString(m_name);究其原因是

在uni-app项目里使用node服务实现模拟接口_祈澈菇凉的博客-程序员秘密

在uniapp的项目里面,怎么写入模拟接口数据?现在使用node服务实现几个模拟接口,当然是用mock也是可以的哦,方法有很多种,目的只有一个,就是能够娴熟的应用在项目场景里面。1:json数据写在data底下的js里面json.jslet data = { //这里放数据 "categories": [ "1", ...

vue2.0中引入UEditor的一些坑。。。。_weixin_30685047的博客-程序员秘密

开发后台系统的时候,富文本编辑器肯定是必不可少的,然后呢~在天朝当然要属百度编辑器(UEditor)最成熟了,功能全面,文档齐全(相对),ui优美(。。。,对于程序员来说)等等许多方面(MMP,还不是因为有中文文档和国人使用经验参考),所以使用百度编辑器就是不二之选了,早前再angular1的项目中使用过UE,主要是由后端配置好用,直接扔一个demo给我们,照着插入就OK了,现在呢,只能自己封装...

随便推点

AcWing 畜栏预定_aochongbi5356的博客-程序员秘密

AcWing 畜栏预定Description有N头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。给定N头牛和每头牛开始吃草的时间A以及结束吃草的时间B,每头牛在[A,B]这一时间段内都会一直吃草。当两头牛的吃草区间存在交集时(包括端点),这两头牛不能被安排在同一个畜栏吃草。求需要的最小畜栏数目和每头牛对应的畜栏方案。Input第1...

java基础入门----TreeMap练习2_陳紋欽的博客-程序员秘密

import java.util.*;/* * 练习2: "asdadwrffcfg"获取该字符串中字母出现的个数 打印结果 a(2)d(1) * * 注意到字母和次数之间有映射关系,可以选择map集合 * * 思路 1.将字符串转换成字符数组,因为要对每个字母进行操作 * 2.定义一个Map集合,因为

javascript的getElementById()方法案例_Android开发Neil的博客-程序员秘密

getElementById() 寻找一个有着给定 id 属性值的元素,返回值是一个有着给定 id 属性值的元素节点。如果不存在这样的元素,它返回 null.var oElement = document.getElementById ( sID )该方法只能用于 document 对象dom2.htmlwindow.onload=f

Uni-app 订单页 下拉加载更多_uniapp下拉加载更多_YoloAva的博客-程序员秘密

订单页面 下拉加载逻辑:1.给每个Tab绑定滑动触底事件reachBottom(currentIndex),传入了currentIndex。在函数内判断:为哪个index,并且对应数组比如orderTotal > this.orderList.length,这就说明可以加载更多,就==》pageNum++;并调用查询订单的接口this.__init()。2.接口返回200后有个判断:若pageNum=1,将请求到的list直接赋值;若pageNum>1,就用p...

MySQl中多行合并成一列_mysql多行多列合并为一行一列_爱笑的小黑同学的博客-程序员秘密

mysql> select * from aa;+------+------+| id| name |+------+------+|1 | 10||1 | 20||1 | 20||2 | 20||3 | 200||3 | 500|+------+------+6 rows in set (0.00 sec)以id分组,把name字段的值打印在一行,逗号分隔(默认)mysql>...

推荐文章

热门文章

相关标签