linux中的adb命令 adb命令和shell命令

adb 常用命令

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

创新互联是一家专注于成都网站建设、成都做网站与策划设计,桥西网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:桥西等地区。桥西做网站价格咨询:028-86922220

2、adb install +包名       adb安装apk (覆盖安装是使用 -r 选项)

3、adb uninstall +包名      adb卸载apk

  adb uninstall -k cnblogs.apk   卸载app但保留数据和缓存文件

4、adb reboot       重启Android设备

5、adb devices      获取连接的设备列表及设备状态

6、adb push (PC到Android设备)

  例:adb push E:\0713\ellip_factroy__debug.apk storage/self/primary

7、adb pull(Android设备到PC)

  例:adb pull /storage/self/primary/EL_v3.0.0.6_release.apk E:\0713

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

9、input : 向 Android 设备发送按键

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

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

 3)adb shell input swipe   滑动事件  例如:从右往左滑动屏幕 (adb shell input swipe 800 600 100 600)

10、screencap 截图命令  adb shell screencap -p /sdcard/qq/1.png

11、screenrecord 录屏命令 adb shell screenrecord /sdcard/qq/1.mp4,执行命令后操作手机,ctrl + c 结束录制

12、clear 清除应用数据   adb shell pm clear com.baidu

13、复制、删除 、查看文件、新建文件夹

    adb shell进入Android Linux命令中,

    复制cp: cp -f /sdcard/qq/1.png /sdcard/aa

    删除文件rm:rm  /sdcard/qq/1.png

    删除文件夹rm -r:rm  -r /sdcard/qq

    查看文件cat:cat /sdcard/qq/1.txt

    新建文件夹:mkdir /sdcard/cc

                          adb shell mkdir -m 777 /sdcard/cc   创建文件夹cc并给文件夹赋予读写执行的权限

                          adb shell mkdir -p/sdcard/Download/Demo/test1,如果Demo目录不存在,执行该条命令会创建Demo目录和其子目录test1

     新建文件:touch /sdcard/cc/1.txt   

      移动文件:adb shell mv /sdcard/Download/test1.log  /sdcard/Download/Demo/

       重命名:adb shell mv /sdcard/Download/Demo/test1.log  /sdcard/Download/Demo/test.lg

14、adb logcat D:\log.txt 将日志打印到电脑上

15、获取手机内部存储信息: adb shell df /data

    获取sdcard存储信息:adb shell df /storage/sdcard

linux下关于adb命令的一些知识

Android Debug Bridge,一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互。同时这是一个包含了以下三部分的cs模式的程序:

1) adb client

从图中,我们知道client是运行在PC端的,每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。

当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。

所有的client都是通过5037端口与adb-server进行通信的。

2)adb daemon(adbd)

从图中,我们知道daemon是作为一个后台进程运行在模拟器/真实Android设备中的。

daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这么一个后台进程,并且为其分配了两个连续的端口,比如:

Emulator 1, console: 5554

Emulator 1, adb: 5555

也正因为每个设备都分一组两个端口,也已adb连接手机的最大数量为16。

说回端口的作用,在这两个端口中,其中偶数端口是用于server 与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。

2) adb server

从图中,我们同样可以知道,server也是作为一个后台的程序运行在PC端的,他负责管理client进程以及adb daemon之间的通信。

当一个server开启的时候,他会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

1.2 常用的adb命令

首先我们先来介绍一下,adb命令的使用格式吧:

adb [-d|-e|-s ]

adb是必须的,接下来方括号[]里面的内容不是必须的,最后才是我们需要执行的命令操作,例如 adb -s emulator-5554 install UCBrowser.apk (这是安装UC浏览器的意思)

下面先介绍下,前面几个参数的含义吧:

-d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错

-e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错

-s:通过设备的序列号进行指定设备执行命令

如果设备只连接有一个设备或者一个模拟器的时候,可以不用声明这三个参数,adb默认会让这部唯一连接到的设备进行命令执行。

ok,下面开始讲解常用的命令吧:

1) 查看当前PC端连接有多少设备:

adb devices

终端中的执行结果为:

从上图中,我们看到了设备有的两种状态,其实执行该命令,可能返回的状态有三种:

I. device 设备已经成功连接到了adb-server

  II. offline 设备并没有连接到adb或者没有响应

  III. no device 并没有设备/模拟器连接

2) 查看adb的版本

adb version

终端中的执行结果为:

3) 给设备进行软件的安装

adb -s install

eg:

adb -s 99eb07a9 install D://Test.apk

终端中的执行结果为:

除了上面这种方法,我们还有另外一个命令:

adb -s shell pm install [options]

其中[options]中最常用的选项是-r,代表着本次安装是重新安装,会保留用户数据。

4) 卸载设备中已经安装的软件

adb -s uninstall

eg:

adb -s 99eb07a9 uninstall cn.uc.test

终端中的执行结果为:

除了上面这种方法,我们还有另外一个命令:

adb -s uninstall [options]

这里的options是-k,加上该参数表明卸载软件后依旧保留用户数据

5) 将数据从设备复制到PC中

adb -s pull

eg:

adb -s 99eb07a9 pull /sdcard/stericson-ls D://

终端的执行结果:

在D://盘中我们也可以发现stericson-ls文件

6) 讲数据从PC端复制到设备中

adb -s push

eg:

adb -s 99eb07a9 push d://stericson-ls /sdcard/

终端的执行结果:

7) 获取连接到的手机的序列号

adb get-serialno

终端的执行结果:

8)获取设备的连接状态

adb -s get-state

eg:

adb -s 99eb07a9 get-stat

终端的执行结果:

9) 等待设备连接成功

adb wait-for-device

该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

10) adb-server 的开启与关闭

adb kill-server

adb start-server

终端的执行结果:

有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。主要关掉那些软件并且杀掉那些软件自带的adb进程重来即可。

1.2 手机执行Shell命令

众所周知,Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行

填补。

下面我们讲解下如何在手机中执行Shell命令:

1) 每次都加上adb shell来进行命令的发送与执行

adb shell

2) 先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令,如图:

1.3 Activity Manager 常用命令与参数说明

一般情况下,我们最常用它来进行app的开启,并且传递一定的参数过去,比如:

adb shell am start -a android.intent.action.VIEW -n cn.uc.test/.MainActivity -d

在这里就不做太过详细和重复的说明了

1.4 Package Manager 常用命令与参数说明

1) 使一个apk处于禁用状态,相当于卸载了:

disable

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:

adb shell su disable com.UCMobile/.main.UCMobile

终端执行结果:

同时我们在手机上发现,UC浏览器的图标不见了

2) 让一个apk从禁用状态恢复过来

enable

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:

adb shell su enable com.UCMobile/.main.UCMobile

终端执行结果:

同时我们从手机上发现,UC浏览器的图标又回来啦。

3) 查看一个apk所在的路径

pm path

eg:

adb shell pm path com.UCMobile

终端执行结果:

4) 查看手机中装的所有的包

pm list packages

再次不做过多的说明

1.5其他常用的adb命令

1) 屏幕录像

例如,屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

adb shell screenrecord /sdcard/demo.mp4

2) 关闭设备请求,开启设备

adb shell stop

adb shell start

3)设备关机以及重启

adb reboot

adb shutdown

linux adb指令无响应

现象是输入adb命令之后,终端无响应,既没有提示成功也没有提示失败。

运行 ps aux | grep adb,如果有输出 adb fork-server server,则说明adb正在运行,记下pid,执行kill $(pid)。

adb命令和linux命令

adb root 获取 root 权限。

adb sideload

adb shell ps 打印进程状态。

adb shell top 展现上层 CPU 进程信息。

adb shell getprop 获取 Android 系统服务属性

adb shell setprop 设置服务属性。

adb shell dumpsys 获取系统数据。

adb logcat 打印日志文件

adb shell ip 主要用于显示一些数据

adb shell netstat 主要用于网络统计。

adb shell ping 没啥好说的,和 PC 的 ping 命令一样的。

adb shell netcfg 通过配置文件配置和管理网络连接。

adb shell cp 字面意思,很好理解,复制。

adb shell pwd 定位当前的操作位置

adb shell mv 移动或者更名文件

adb shell mkdir 创建一个文件夹

adb shell rm 删除文件或者目录

adb shell ls 列出目录内容。

adb shell pm clear 清除应用缓存。

adb shell pm path 打印 apk 的路径。

adb usb 设置设备以 USB 形式连接 PC

adb kill-server 终止 adb 进程。

adb forward 端口映射,将 PC 端的某端口数据重定向到手机端的一个端口。

adb devices 主要是用于打印当前连接的所有模拟器或者设备。

shutdown -h now 关闭系统

init 0 关闭系统

telinit 0 关闭系统

shutdown -h hours:minutes 按预定时间关闭系统

shutdown -c 取消按预定时间关闭系统

shutdown -r now 重启

reboot 重启

logout 注销

文件和目录

cd /home 进入 '/ home' 目录'

cd .. 返回上一级目录

cd ../.. 返回上两级目录

cd 进入个人的主目录

cd ~user1 进入个人的主目录

cd - 返回上次所在的目录

pwd 显示工作路径

ls 查看目录中的文件

ls -F 查看目录中的文件

ls -l 显示文件和目录的详细资料

ls -a 显示隐藏文件

ls [0-9] 显示包含数字的文件名和目录名

tree 显示文件和目录由根目录开始的树形结构

lstree 显示文件和目录由根目录开始的树形结构

mkdir dir1 创建一个叫做 'dir1' 的目录'

mkdir dir1 dir2 同时创建两个目录

mkdir -p /tmp/dir1/dir2 创建一个目录树

rm -f file1 删除一个叫做 'file1' 的文件'

rmdir dir1 删除一个叫做 'dir1' 的目录'

rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容

rm -rf dir1 dir2 同时删除两个目录及它们的内容

mv dir1 new_dir 重命名/移动 一个目录

cp file1 file2 复制一个文件

cp dir/* . 复制一个目录下的所有文件到当前工作目录

cp -a /tmp/dir1 . 复制一个目录到当前工作目录

cp -a dir1 dir2 复制一个目录

cp -r dir1 dir2 复制一个目录及子目录

ln -s file1 lnk1 创建一个指向文件或目录的软链接

ln file1 lnk1 创建一个指向文件或目录的物理链接

touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)

file file1 outputs the mime type of the file as text

iconv -l 列出已知的编码

什么是adb命令行?

ADB(Android Debug Bridge)是Android

提供的一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序,adb.exe在你安装的android的sdk开发包platform-tools目录下。

ADB是一个C/S架构的应用程序,由三部分组成:

1)adb client, 运行在PC上(为DDMS,即IDE工作)

2)adb daemon(守护进程),运行于Emulator(为与Emulator中的VM交互工作);

3)adb server(服务进程),运行在PC(任务管理器上有),管理着adb client和adb

daemon的通信。

server与client通信的端口是是5037,adb

server会与emulator交互的,使用的端口有两个,一个是5554专门用于与Emulator实例的连接,那么数据可以从Emulator转发给IDE控制台了,另一个则是5555,专门与adb

daemon连接为后面调试使用。

adb使用方法:

adb [-d|-e|-s ]

当你发出一个命令,系统启用Android客户端。客户端并不与模拟器实例相关,所以如果双服务器/设备是运行中的,你需要用-d选项去为应被控制的命令确定目标实例。关于使用这个选项的更多信息,可以查看模拟器/设备实例术语控制命令。

1、查询模拟器/设备实例

在发布adb命令之前,有必要知道什么样的模拟器/设备实例与adb服务器是相连的。可以通过使用 devices

命令来得到一系列相关联的模拟器/设备

adbdevices

2、安装应用到模拟器/设备:

你可以使用adb从你的开发电脑上复制一个应用程序,并且将其安装在一个模拟器/设备实例。

像这样做,使用install命令。这个install命令要求你必须指定你所要安装的.apk文件的路径:

adbinstall

例如:Weibo_4.1.1.apk是在我的C盘中,

C:\adbinstallweibo_4.1.1-apk

3、卸载应用程序:

adbuninstall

注意:卸载软件时,卸载的是包名,后面跟的是包的名字,而不是.APK.

4、从模拟器/设备中拷入或拷出文件:

可以使用adbpull、push命令将文件从模拟器/设备中拷贝出来或从电脑拷入。

adbpull

用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

adbpush

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

5、启动Linux命令界面shell

adbshell

Android本来就是一个linux操作系统,通过上面的命令,就可以进入设备或模拟器的shell环境中,所以大部分都是linux的命令,如mkdir,ls,netstat,mount

等。

主要介绍几个Android特有的。

Getprop:返回Android的所有系统属性。

Getevent:打印所有的键盘和触摸事件

Logcat:输出日志

LS:用于显示目录内容

6、查看bug报告:

adb bugreport

7、记录无线通讯日志:

一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

adb shell

logcat -b radio

8、获取设备的ID和序列号:

adb get-product

adb get-serialno

ADB常用命令

Android 调试桥 (adb)  ,可与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

客户端: 用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)

PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"

守护程序 (adbd): 用于在设备上运行命令。守护程序在每个设备上作为后台进程运行

执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep.

adb nodaemon server

服务器(Service): 用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行

adb服务启动后,Windows可以在任务管理中找到adb.exe; linux ps -ef | gref adb 可以查看service

一般都是通过这样子的格式 adb [-d|-e|-s 设备序列号] 子命令

通常只有一台设备就忽略 [-d|-e|-s ] 这一部分

这里介绍一些常用的命令:

获取设备列表及设备状态

获取设备的状态

注意:设备的状态有 3 钟,device , offline , unknown

device:设备正常连接

offline:连接出现异常,设备无响应

unknown:没有连接设备

结束 adb 服务

启动 adb 服务

注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。

打印 Android 的系统日志

打印 dumpsys、dumpstate、logcat 的输出,也是用于分析错误输出比较多

打印日志后重定向到一个文件中

安装应用,覆盖安装是使用 -r 选项

注意:有些adb版本无法支持安装中文的apk

查看手机应用包名

查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数

卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名

'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录

将 Android 设备上的文件或者文件夹复制到本地

adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log

推送本地文件至 Android 设备

获取连接到的手机的序列号

获取设备的连接状态

等待设备连接成功

该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。

Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。

如何在手机中执行Shell命令?

每次都加上adb shell来进行命令的发送与执行

先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。

使一个apk处于禁用状态,相当于卸载了:

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:adb shell su disable com.UCMobile/.main.UCMobile

同时我们在手机上发现,UC浏览器的图标不见了

让一个apk从禁用状态恢复过来

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:

adb shell su enable com.UCMobile/.main.UCMobile

同时我们从手机上发现,UC浏览器的图标又出现了。

查看一个apk所在的路径

adb shell pm path com.UCMobile

查看手机中装的所有的包

屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

录屏设置时长10s,命名为demo.mp4

注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示

解决方法:

安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕

scrcpy -s device --render-expired-frames -Nr ./demo.pm4

--render-expired-frames:尽可能最大帧率

-N:不在PC端展示

-r:录制mp4/mkv文件

关闭设备请求,开启设备

设备关机以及重启

pm(package manager)可以获取一些安装到Android设备上的app的信息

pm list packages 用法:list packages [ options] filter

获取所有的应用的包名

列出系统应用

列出第三方应用

查看它们的关联文件

adb shell pm list package -f

查看软件包的安装来源

pm dump 包名 很多dump信息

安装应用

apk如果在电脑用 adb install 

如果在Android设备上用 adb shell pm install

卸载应用,同adb uninstall ,后跟包名

清除应用数据

am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)

启动一个Activity

获取到package和launch_activity

AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity

这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;

启动华为系统相机

打开音乐播放器

播放指定音乐:

先停止目标应用,再启动

等待应用完成启动

启动网页(android.intent.action.VIEW具体参考Android官网)

结束应用

input

模拟输入,向获得焦点的EditText控件输入内容

返回主界面

发送一个点击操作的指令,参数是x y坐标

从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200

长按操作,在 100 100 位置长按 1000毫秒


文章标题:linux中的adb命令 adb命令和shell命令
文章地址:http://myzitong.com/article/docgsop.html