首先应该知道一下adb命令和adb shell命令的区别:

1.adb
adb命令是PC端adb程序自带的命令;

ADB的全称为Android Debug Bridge,字面意思就是安卓调试桥,ADB是一个“客户端-服务器端“的关联程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.ADB是android sdk里的一个工具,用这个工具可以直接操作管理android模拟器或者真实的andriod设备。简单点说,它是Android系统提供的一套工具,通过它,我们可以在电脑上建立一个连接到手机的通道,然后可以在电脑上向手机发送一些指令,完成一些我们需要做的工作。
它的主要功能有:
1) 运行设备的shell(命令行)
2)管理模拟器或设备的端口映射
3)计算机和设备之间上传/下载文件
4)将本地apk软件安装至模拟器或android设备

2.adb shell

简单说,adb shell 命令是调用Android系统的命令,放在安卓设备的System/bin目录下,是手机端的命令。

具体来看,Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。操作系统运行的本身其实并不需要人来控制,但人需要告诉操作系统做什么,这个交互程序,就被称为shell。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。
Android 基于 Linux,那么 Linux shell 命令在 Android 里大都也是适用的。所有以“adb shell”开头的命令,都可以先执行adb shell命令进入目标设备的Linux Shell环境,然后在目标设备的Linux Shell中再执行“adb shell”之后的命令。或者直接执行adb shell  先进入shell环境,然后再执行shell命令,就不用加adbshell了 比如:

adb shell dmesg内容说明 adb shell有什么用_包名

退出shell模式:exit 或者 ctrl + D
adb 常用命令:

  • adb devices  查看连接情况和设备号

当有多设备链接时时候,执行命令会报错误

adb shell dmesg内容说明 adb shell有什么用_linux_02

 

1.可以在命令前通过-s 和设备号指定设备adb -s STSDU19C25005533

2.如果只有一个设备和模拟器连接电脑,可以通过:adb -e 来指明是操作模拟器(Emulator); adb -d 来指明是操作设备(Device)

adb shell dmesg内容说明 adb shell有什么用_android_03

 

  • adb shell getprop ro.build.version.release  查看安卓版本号,尤其鸿蒙系统需要用到

查看应用包名:

1.打印当前运行应用的包名:

adb shell dumpsys window windows | findstr name=

adb shell dumpsys window w | findstr name=

adb shell dumpsys window | findstr mCurrentFocus

adb shell dmesg内容说明 adb shell有什么用_android studio_04

 2.adb shell pm list package | findstr zhihu

adb shell dmesg内容说明 adb shell有什么用_android studio_05

 3.adb shell pm list package -3 -f -i zhihu

adb shell dmesg内容说明 adb shell有什么用_android_06

        -3(-s系统应用)表示第三方app;-f 安装来源 -i 模糊匹配  

查看日志:

        注意,window用 findstr;linux或者进入shell模式用grep

1.adb logcat  命令窗口直接查看所有日志,没有太大意义

2.adb logcat > D:log2.txt   将日志保存到本地

3.adb logcat -c 清除日志,一般每次保存查看前都要清理一下

4.adb logcat | findstr com.huawei.hms.ads. 查询包含findstr 后的内容

5.adb logcat | findstr com.huawei.hms.ads.  > D:log2.txt   将特定日志保存到本地

  • adb logcat -b crash >error.txt   查看直接闪退日志
  • adb bugreport > log.txt  程序意外终止
  • adb pull data/anr/traces.txt > anr_log.txt app出现anr时会在data/anr目录下生成traces.txt文件

注意:打印日志时候,常报   【写入错误】,这时候需要设置编码语言,设置为UTF-8就好了hcp显示活动页的编码,ANSI的编码是936,UTF-8是65001.执行  CHCP 65001就设置为UTF-8了。

adb shell dmesg内容说明 adb shell有什么用_linux_07

  官网地址:安卓开发日志部分

fc D:\off.txt D:\on.txt

7.adb logcat *:E ->d:\log.txt   查看E及以上日志

默认级别为V,输出人日志最低,日志级别最低

D —— Debug

I —— Info

W —— Warning

E —— Error

F —— Fatal 致命

S —— Silent(最高,啥也不输出)

安装软件: 

adb install  <apk文件路径>   安装应用,apk存放在pc端

adb shell pm install <apk文件路径>  安装应用,apk存放在手机端端

adb shell pm set-install-location 0/1/2 设置应用安装位置  0:默认 1:内存 2:sdcard

adb shell pm get-install-location  获取安装位置,如图

adb shell dmesg内容说明 adb shell有什么用_android studio_08

adb uninstall <包名>  例如 adb uninstall com.ziroom.ziroomcustomer 卸载软件

adb uninstall -k <包名>  卸载软件,但保留数据

adb shell pm uninstall <包名>  卸载软件,但保留数据

adb shell pm clear <包名> 清除应用数据,执行后和新安装的一样

2.2. am命令

2.2.1.如何获取activity名

adb shell dumpsys package com.zhihu.android

adb  shell dumpsys activity | findstr mActivityComponent 可以查到对应启动的activity

adb shell dmesg内容说明 adb shell有什么用_adb shell dmesg内容说明_09

2.2.2. 启动应用

adb shell am start -n com.zhihu.android/.app.ui.activity.LauncherActivity

2.2.3. 停止目标应用再启动

adb shell am start -s com.zhihu.android/.app.ui.activity.LauncherActivity

2.2.4. 等待应用完成后再启动

adb shell am start -w com.zhihu.android/.app.ui.activity.LauncherActivity

2.2.5. 启动默认浏览器并打开一个网页

adb shell am start -a android.intent.action.VIEW -d http://baidu.com

2.2.6. 启动电话拨打10086

adb shell am start -a android.intent.action.CALL -d tel:10086

2.2.7. 启动监控

启动后手机的操作都会记录
adb shell am monitor

2.2.8. 结束应用

adb shell am force-stop 包名

2.3. input命令

2.3.1. 发送文本内容

adb shell input text 123456

2.3.2. 模拟按下HOME

adb shell input keyevent KEYCODE_HOME

2.3.3. 点击屏幕上坐标为(500,500)位置

adb shell input tap 500 500

2.3.4. 从右向左滑动屏幕

adb shell input swipe 900 500 100 500

adb shell input draganddrop 500 624.5 200 624.5 1000 (拖动)

2.3.5. 长按动作

在小的距离内,较长的持续时间滑动就是长按
adb shell input swipe 500 500 501 501 2000

2.4.截屏

adb shell screencap -p /sdcard

2.5. 设置/获取手机端口号

adb shell setprop service.adb.tcp.port 5555adb shell getprop service.adb.tcp.port

adb push D:\log5.txt  sdcard/360 将电脑d盘文件推送到手机存储/360文件夹下 注意斜杠方向

 adb pull sdcard/360/sdk D:\Download 将手机文件推送到电脑

adb start-server  启动服务

adb kill-server  关闭服务

更多dumpsys知识,参考dumpsys命令用法

adb shell wm size //查看屏幕分辨率
adb shell wm density //查看屏幕密度
adb shell wm density 320 //修改屏幕密度=320ppi
adb shell wm density reset //恢复原屏幕密度

adb shell dumpsys gfxinfo com.pplive.androidphone 查看流畅度相关

adb脚本编写自动化测试(也可以用Espresso实现自动化)

@echo off
set /p a=请输入:
adb shell screencap -p /sdcard/%a%.png
adb pull /sdcard/%a%.png
echo. & pause

如果运行时发现 “ 请输入” 为乱码,是因为需要将他设置为ANSI编码格式。 

常用命令

1、打电话

adb shell am start -a android.intent.action.CALL -d tel:10086

2、打开QQ

adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

3、打开微信

adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI

4、打开支付宝

adb shell am start com.eg.android.AlipayGphone/.AlipayLogin

5、杀死支付宝

adb shell am force-stop com.eg.android.AlipayGphone

6、关闭QQ

adb shell am force-stop com.tencent.mobileqq

7、点击事件

adb shell input tap 500 500

8、home键

adb shell input keyevent 3

9、返回键

adb shell input keyevent 4

10、截图(保存到sdcard)

adb shell /system/bin/screencap -p /sdcard/screenshot.png

11、录屏

adb shell screenrecord /sdcard/test.mp4

adb pull /sdcard/test.mp4 /Users/dhht/Desktop/test.mp4

12、亮屏

adb shell input keyevent 26

13、上下滑动

adb shell input swipe 700 2000 700 1000

14、左右滑动

adb shell input swipe 100 1000 1000 1000

15、拖动

adb shell input draganddrop 500 624.5 200 624.5 1000

16、等待

adb sleep 5 (等待多少秒)

查看进程

在shell模式下

1.top 查看全部运行的

2.top | grep com.pplive.androidphone  特定的

grep keyword | head -n 10  前10行

grep keyword | tail -n 10   后10行

grep keyword | sed -n "7,13p"  7-13行

获取手机界面xml:adb shell /system/bin/uiautomator dump --compressed /data/local/tmp/uidump.xml
上传xml到桌面:adb pull /data/local/tmp/uidump.xml C:/Users/13633/Desktop
————————————————


文件内容相同 值为0不相同值为1有一个文件不存在值为2 所以加上%errorlevel%的判断即可 @echo off :abc rem 你自己添加 fc file1 file2 if %errorlevel%==0 pause else (goto abc)


待整理学习 

adb shell am start <package>/<activity>
例子: adb shell am start com.android.mms/com.android.mms.MainActivity
触发内存级别回调:
adb shell am send-trim-memory [--user <USER_ID>] <PROCESS>
[HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]
例子: adb shell am send-trim-memory com.android.mms RUNNING_LOW