当前位置:   article > 正文

ADB常用命令及其用法大全_adb命令

adb命令

前言:
本文主要记述ADB的常用命令,关于ADB用法大全,可参考文末链接


ADB简介:

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。
注: 有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。

小技巧:记不住ADB命令?
ADB 命令的插件 adb-idea

在这里插入图片描述

查看当前连接设备:

  • 查看当前连接设备:
adb devices
  • 1
  • 如果发现多个设备:
adb -s 设备号 其他指令
  • 1

举例:
adb -s devicel install xxx.apk

查看顶部Activity:

  • windows环境下:
adb shell dumpsys activity | findstr "mFocusedActivity"
  • 1
  • Linux、Mac环境下:
adb shell dumpsys activity | grep "mFocusedActivity"
  • 1

查看日志:

adb logcat
  • 1

安装apk文件:

adb install xxx.apk
  • 1
  • 此安装方式,如果已经存在,无法安装;
    推荐使用覆盖安装:
adb install -r xxx.apk
  • 1
  • 比分直接RUN出来的包是test-onlu的无法安装,推荐使用**-t**
adb install -r -t xxx.apk
  • 1

卸载App:

adb uninstall com.zhy.app
  • 1
  • 如果想要保留数据,则:
adb uninstall -k com.zhy.app
  • 1

传递文件:

  • 往手机SDCard传递文件:
adb push 文件名 手机端SDCard路径
  • 1

例如:
adb push 帅照.jpg /sdcard/

  • 从手机端下载文件:
adb pull /sdcard/xxx.txt
  • 1

查看手机端安装的所有app包名:

adb shell pm list packages
  • 1

启动Activity:

adb shell am start 包名/完整Activity路径
  • 1

例如:
adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity

  • 如果需要携带参数(携带一个Intent,Key 为name):
adb shell am start com.zhy.aaa/com.zhy.aaa.MainActivity -e name zhy
  • 1
  • 启动一个隐式的Intent:
adb shell am start -a "android.intent.action,VIEW" -d "https://www.google.com"
  • 1

发送广播:

adb shell am broadcast -a "broadcastactionfilter"
  • 1

-如果需要携带参数(携带一个Intent,key为name):

adb shell am broadcast -a "broadcastactionfilter" -e name zhy
  • 1

启动服务:

adb shell am startservice "com.zhy.aaa/com.zhy.aaa.MyService"
  • 1

屏幕截图:

  • 可以使用screencap命令来进行手机屏幕截图,例如:
adb shell screencap /sdcard/screen.png
  • 1

录制视频:

可以使用screenrecord[options] filename命令来录制屏幕视频,例如:

adb shell screenrecord /sdcard/demo.mp4
  • 1

针对Android小白的常用ADB细致讲解操作:

一.链接ADB:

启动ADB的2种方式:

  1. 直接进入sdk/platform-tools目录:
    然后在命令行中输入adb devices来验证设备是否连接。
    缺点:每次进入platform-tools目录很麻烦。
  2. 将adb地址写入环境变量**(即配置adb为环境变量)**
  • 没有配置环境变量之前:
    在这里插入图片描述
    解决上述图片中的问题,请看下方针对MacOS和Windows系统的解决方案:
  • 对于macOS,可以这样配置:
export PATH=$PATH:<path to Android SDK>/platform-tools
  • 1

然后在命令行中输入source ~/.bash_profile或者source ~/.zshrc来更新配置文件。

  • 对于windows,可以这样配置:
  1. 先进入环境变量:
    在这里插入图片描述
    在这里插入图片描述
  2. 选择系统变量下的Path再选择编辑(你也可以选择新建,注意添加分号;)
    在这里插入图片描述
    在这里插入图片描述
    然后去寻找你的Android SDK文件夹下的platform-tools,进入该文件夹并在地址栏复制当前路径
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    最后,新建并添加复制好的路径即可。
    在这里插入图片描述
  • 验证:配置环境变量成功后,关闭当前cmd,再次进入cmd中,输入adb信息,可以看到如下图所示,那么就OK了:
    在这里插入图片描述

注意:Android SDK,你可在安卓官网去下载,或者如果你拥有AndroidStudio也会下载过它,它可存放在资源管理器下的任意位置。你知晓它的存放位置即可。

  • 手机打开“开发人员选项:(此处以华为畅玩7x手机为例)
    进入手机设备的设置,选择关于手机
    在这里插入图片描述
    在这里插入图片描述
    找到版本号,并连续点击它7次及以上,直到出现“已打开开发者人员选项“字样时停止。 然后再回到设置 ->系统,这时可以看见开发人员选项并按照图示进行勾选。
    在这里插入图片描述
  • 验证ADB连接设备成功:
    前面的步骤完成后(即环境配置成功、开发者选择中开启了USB调试模式),打开cmd(快捷键windows键+R键盘,在框中输入cmd)。在任意路径进入cmd后,输入adb device:
  • 如果没有连接手机或因为数据线问题等其他原因,则会出现下图:(失败原因请自己排查)
    在这里插入图片描述
  • 成功后,如下图所示:(下方一串字母是我的手机序列号)
    在这里插入图片描述

上方的A5R7N18202000063是我的手机设备序列号(手机不同,设备序列号也就不同),device是设备状态。
设备的3种状态:
offline ———设备未连接到adb或者没有响应
device———设备已连接到ADB
no device ———未连接到模拟器/设备

二. 安装和卸载

  1. 安装:
    我们可以使用adb install [option] <path> 命令来将电脑上的一个APP安装到手机上,例如:
    adb install crime.apk
    注意:有时候apk文件不在你的启动cmd的路径下,记得添加apk文件在你电脑上的path路径。
  • 如果当前连接的设备个数超过一个(比如开启多个模拟器)。
    那么在安装操作之前,我们需要现在cmd中输入adb devices查看当前连接的设备的序列号,并复制你想要给哪个设备安装apk文件的设备序列号。然后指定要操作的设备的序列号,执行adb -s [serial_number] command 命令。
    比如现在有多个设备连接了电脑并都打开了开发者模式,那么我如果直到了我当前华为设备的序列号后,输入下列命令:
adb -s A5R7N18202000063 install crime.apk
  • 1

即可安装成功crime.apk文件了。

  1. 覆盖安装:
    如果你当前要操作的手机设备已经安装了你想要安装的APP,你再去执行安装命令(即重复安装),就会报错:Failure [INSTALL_FAILED_ALREADY_EXISTS].解决方案为:覆盖安装:加上**-r**(replace)来替换当前已安装的应用。
adb install -r crime.apk
  • 1
  1. 卸载:
    卸载一个当前设备上的某个APP的命令为:adb uninstall [option]<packagename>,前提是你得直到你想要卸载的APP的包名。
    注意:卸载APP知道它的包名;从电脑上安装APP到手机上只需要知道电脑中APK 的存放路径和APK文件名。

APP卸载后,其缓存文件一般也会被清除。
如果要想保留缓存文件,添加 -k,即:
adb uninstall -k 包名

三.文件操作

  1. Android 手机中的文件路径:
    以前手机容量较小,一般会有可拔插的SD卡扩展内存,然后把资源数据存放到SD卡目录下。现在,手机取消了SD卡,外部存储空间很大了,但是Android仍称之为SD。为了做兼容,也会mock一个假的SD卡路径。因此,很多开发者将APP数据保存在**/sdcard**目录下。现在已经不推荐将文件存储在/sdcard目录下了。
  • 音视频文件还是应该放在SD卡目录下。 SD卡的路径是/mnt/sdcard/或者/sdcard,/sdcard是/mnt/sdcard的软链接。其中,/mnt/sdcard/DCIM一般用于存放照片,DCIM——Digital Camera Images。但是截图及APP保存图片的位置,一般是在/mnt/sdcard/Pictures。以此类推,视频文件存放在/mnt/sdcard/Movies等。

  • 当我们手机上安装完成了一个APP后,相关的文件存放在下面2个地方:
    1):APP本身被存放在/data/app 目录下。
    2):文件目录存放在/data/data/<package name>目录下,该目录下存放有数据库、SharedPreference和其他缓存数据。

  • 如果想把手机中的文件拷贝到电脑中,使用**adb pull <remote> [local]**命令。其中,local地址为空,则会拷贝到电脑当前目录下:
    例如:

adb pull /sdcard/crime.apk 
  • 1
  • 如果想要把电脑中的文件拷贝到手机里面,使用adb push <local> <remote> 命令:
adb push crime.apk /sdcard/data/data
  • 1
  1. 清除APP数据:
    在开发中,经常会遇到:清空APP缓存数据,然后进行一系列请求。如,清空APP缓存数据,可使用adb shell pm clear com.example.packagename 命令。注:该命令清除掉APP的缓存,还能把APP的数据给清空。

  2. 查看所有App的名称:
    使用如下命令:

adb shell pm list packages
  • 1

注意:该命令可以查看手机上的APP名称。可以在后面加上 -f ,这样还能显示该APP的路径。
即:

adb shell pm list packages -f 
  • 1

四.事件输入:

  1. input:
  • 使用adb shell input命令向屏幕输入一些信息,
    例如:
adb shell input text "insert%stext%shere"
  • 1

注意:%s表示空格。

  • 使用adb shell input tap命令来模拟屏幕点击事件,例如:
adb shell input tap 500 1450
  • 1

表示在屏幕上(500,1450)的坐标点上进行一次点击。

  • 使用adb shell input swipe命令来模拟手势滑动事件,例如:
adb shell input swipe 100 500 100 1450 100
  • 1

表示从屏幕坐标(100,500)开始,滑动到(100,1450)结束,整个过程耗时100ms.

  • 使用上面的命令还可以模拟”**长按(long press)**操作,也就是2个坐标点相同,耗时超过500ms.
adb shell input swipe 100 500 100 500 500
  • 1
  • 使用adb shell input keyevent命令来模拟点按实体按钮的命令,例如:
adb shell input keyevent 25
  • 1

该命令表示调低音量。数字25是在AOSP源码中的KeyEvent类里卖弄定义的一个事件常量。该类定义了将近300个事件常量。

  1. am:
    am(Activity Manager)命令来启动一个APP、启动Activity、启动广播和服务等等。
adb shell am start com.example.crime/com.example.crime.MainActivity
  • 1
  • 如果启动带有参数,则使用**-e**标签,比如有一个SecondActivity,如:
class SecondActivity : AppCompatActivity() {

    companion object {
        private val ARGUS_NAME = "argus_name"
        fun launch(activity: Activity, content: String): Intent {
            val intent = Intent(activity, SecondActivity::class.java)
            intent.putExtra(ARGUS_NAME, content)
            return intent
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)

        val name = intent.getStringExtra(ARGUS_NAME)
        nameTv.text = "Hello, $name"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

即启动SecondActivity的话需要传入一个agrus_name参数,那么在命令行中可以执行:

adb shell am start com.example.crime/com.example.crime.SecondActivity -e argus_name QiuShui
  • 1
  • 启动带的参数一般是Key-value形式,这里的key是argus_name,Value是QiuShui.
    除了默认启动的activity外,打开其他的activity时,需要在清单文件中添加android:exported="true"属性。
  • 要启动一个隐式的Intent,也就是说需要传入action等参数,在ADB调试桥中可以得知Intent的参数规范,比如**-a表示action**,-c表示category,-d表示data_uri,-e表示添加额外Key-Value信息。例如:
adb shell am start -a "android.intent.action.VIEW" -d "https://www.google.com"
  • 1

上面这个命令会启动浏览器打开谷歌网址页面。

  • am 也能发送广播和启动服务。比如启动一个广播,一般要添加一个**-a**:
adb shell am broadcast -a "our.specified.action"
  • 1

还可以在上述命令后面添加**-e**来添加额外的信息。

  • 使用下面的命令可以直接让手机重启:
adb shell am broadcast -a android.intent.action.BOOT_COMPILETED
  • 1
  • 启动一个服务也是类似,例如:
adb shell am startservice "com.example.crime/com.example.crime.MyService"
  • 1

五.事件输出:

  1. 日志信息:
    使用adb logcat可以显示日志信息,使用**command +c (Windows下:ctrl+c)**来停止日志输出。
    比起原生的adb logcat,JakeWharton大神的pidcat显示效果更好:
    在这里插入图片描述
    但我还是更喜欢AndroidStudio的日志功能,非常完善。
  2. dumpsys:
    dumpsys命令可以提供非常多的系统信息。可以通过adb shell service list来查看dumpsys能提供查询信息的服务,常用的有:
服务类名功能
activityActivityManagerServiceAMS相关信息
packagePackageManagerServicePMS相关信息
windowWindowManagerServiceWMS相关信息
inputInputManagerServiceIMS相关信息
powerPowerManagerServicePMS相关信息
procstatsProcessStatsService进程统计
batteryBatteryService电池信息
alarmAlarmManagerService闹钟信息
meminfoMemBinder内存

例如,要查看电池信息,命令行输入adb shell dumpsys battery,可以看到如下图:
在这里插入图片描述

  • 使用adb shell dumpsys activity 查看信息,会有很长的代码,分析其结构,可以把上述命令得到的信息拆分为:
dumpsys activity intents
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity permissions
dumpsys activity services
dumpsys activity recents
dumpsys activity activities
dumpsys activity processes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

我们可以选择这几个中的一个命令进行查询。例如查看界面相关的,使用adb shell dumpsys activity activities命令。
上述几种信息类型可以用缩写来表示,即adb shell dumpsys activity a等价于adb shell dumpsys activity activities命令等。注意:providers的缩写是prov、permissions的缩写是perm

  • 如果上述输出内容太多,只想关注运行的Activity结构层次其他的无所谓,可以使用grep命令来过滤:
adb shell dumpsys activity | grep -i 'run'
  • 1

我这里会得到这样的输出:

  * ContentProviderRecord{978680e u0 qiushui.me.test/com.android.tools.fd.runtime.InstantRunContentProvider}
    authority=qiushui.me.test.com.android.tools.fd.runtime.InstantRunContentProvider
    Running activities (most recent first):
        Run #1: ActivityRecord{304ded1 u0 qiushui.me.test/.SecondActivity t14}
        Run #0: ActivityRecord{19b9e16 u0 qiushui.me.test/.MainActivity t14}
    Running activities (most recent first):
        Run #0: ActivityRecord{f9bafb7 u0 com.google.android.apps.nexuslauncher/.NexusLauncherActivity t13}
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
    User #0: state=RUNNING_UNLOCKED
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

信息中:屏幕正在显示的界面是SecondActivity,然后是MainActivity.NexusLauncherActivity是处于最底层,就是Launcher.

  • 查看APP有那些进程,使用adb shell dumpsys activity p <packagename> | grep -i ‘ProcessRecord’ | grep -i 'PID’
    ,然后程序会输出信息,你可以数一下有多少个PID开头,有多少个就表示有几个进程。还可以知道分别的进程名和PID等等。
  • 查看APP使用了那些服务,使用 adb shell dumpsys activity s <package name> | grep -i ‘ServiceRecord’ 命令,显示结果中可以看出是谁推送的服务。
  • 查看当前APP的内存使用情况,使用**adb shell dumpsys meminfo <package name>**命令,显示结果可以知道当前APP内存使用情况。
  1. 屏幕截图:
  • 使用screencap<filename> 命令来进行手机屏幕截图,例如:
adb shell screencap /sdcard/screen.png
  • 1
  1. 录制视频:
    使用screenrecord [options] filename命令来录制屏幕视频,例如:
adb shell screenrecord /sdcard/demo.mp4
  • 1

注:此命令适用于Android 4.4及以上的设备中。
录制视频也有参数选项,比如 --size 设置视频大小, --time-limit设置最大录制时长等。

六.系统命令:

  • 查看进程信息:
    使用adb shell ps命令查看进程信息。可以在该命令后加包名,来查看某个应用程序的进程信息。
  • 查看CPU使用情况:
    使用**adb shell top **命令来查看系统CPU使用情况。(ctrl+c结束)

上述就是关于ADB的一些基本命令介绍。


ADB用法大全:

点开链接访问具体内容:http://www.wanandroid.com/blog/show/2310


博主认为,最可靠的信息来源还是android官方网站,数据可靠最新,如果你感兴趣想了解Android官网中的ADB信息,请访问链接:https://developer.android.com/studio/command-line/adb.html
官方网站提供的文档才是最全最可靠的信息来源!!!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号