Android · 2020年8月13日 0

adb常用命令

adb常用命令
1.adb devices , 获取设备列表及设备状态(adb -s 设备号 其他指令 adb -s devicel install xxx.apk)
2.adb get-state , 获取设备的状态
3.adb install 用于安装(此时需要用 -r 参数来重新安装。)
4.adb uninstall 用于卸载(adb uninstall 后面带的是应用的包名,而不是应用名。adb uninstall -k 表示保留数据)
5.adb shell pm list packages –f (查看系统所有应用的包名)
6.adb push 命令将PC机上的文件推到 DLT-RK3288 机器上;
7.adb pull 命令将DLT-RK3288机器上的文件拉到PC机上;
{
例如:
adb push d:/new.txt /sdcard/
将D盘下new.txt文件 推到内部存储器
adb pull /sdcard/new.txt d:\
将DLT-RK3288 内部存储器根目录下的new.txt 拉到D盘
}

  1. adb shell pm list package
    Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息
    -s:列出系统应用
    -f:列出应用包名及对应的apk名及存放位置
    9.adb shell
    {
    通过adb shell 命令,就可以进入设备或者模拟器的shell环境了,在这个Linux shell中,我们就可以执行各种Linux命令了。
    如果只想执行一条shell命令,就可以采用:adb shell [shell_command],在实际使用中,经常与grep或findstr一起使用,起到过滤作用,查看自己需要的关键信息。
    常见命令:
    如 ls, cd, rm, mkdir, touch, pwd, cp, mv, ifconfig, netstat, ping, ps, top等,进入adb shell即可执行,与linux相似
    }
    10.adb logcat
    {
    一.在cmd窗口查看手机的Log日志 有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志。在cmd窗口中输入如下命令: //格式1:打印默认日志数据 adb logcat //格式2:需要打印日志详细时间的简单数据 adb logcat -v time //格式3:需要打印级别为Error的信息 adb logcat *:E //格式4:需要打印时间和级别是Error的信息 adb logcat -v time *:E //格式5:将日志保存到电脑固定的位置,比如D:\log.txt adb logcat -v time >D:\log.txt 这时手机日志更新什么日志,cmd窗口也会同步更新数据。 但是这样没有过滤条件,如果Log日志很多,很难找到我们想要的信息, 当然也可以复制cmd中的数据到一个文本中慢慢处理的,就是效率不高。 下面介绍adb logcat中的详细参数命令以及如何才能高效的打印日志,或者把日志保存到我们指定的位置。 二.adb logcat 详解 adb logcat如果用过,但是具体命令又不记得,可以输入adb logcat -help,查看一下一些简单的数据格式: 日志过滤:adb logcat <tag>[:priority] tag表示标签,priority输出的级别,日志默认级别是V,如果错误日志我们选择E就可以。 Android 的日志分为如下几个优先级(priority): V —— Verbose(最低,输出得最多) D —— Debug I —— Info W —— Warning E —— Error F —— Fatal S —— Silent(最高,啥也不输出) 按某级别过滤日志则会将该级别及以上的日志输出。比如,命令:adb logcat *:W 其实*可以是某个tag,如果没有指明,就表示所有。 tag可以由多个 [:priority] 组成。比如,命令: adb logcat ActivityManager:I MyApp:D *:S 表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。 adb logcat选项解析 --"-s"选项 : 设置输出日志*:s的标签, 只显示该标签的日志; --"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功; --"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功; --"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样; --"-v"选项 : 设置日志的输出格式, 注意只能设置一项; --"-c"选项 : 清空所有的日志缓存信息; --"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞; --"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞; --"-g"选项 : 查看日志缓冲区信息; --"-B"选项 : 以二进制形式输出日志; 把日志信息保存到电脑中 adb logcat最后添加” > 保存文件的地址,比如需要将的信息保存到电脑中使用下面的命令: adb logcat -v time > D:\log.txt }
  2. 查看顶部Activity:
    win adb shell dumpsys activity | findstr “mFocusedActivity”
    linux adb shell dumpsys activity | grep “mFocusedActivity”
  3. 启动Activity:
    adb shell am start 包名/完整Activity路径
    {
    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
    }
    13.启动一个隐式的Intent:
    adb shell am start -a “android.intent.action,VIEW” -d “https://www.google.com”
    14.发送广播:
    adb shell am broadcast -a “broadcastactionfilter”
    -如果需要携带参数(携带一个Intent,key为name):
    adb shell am broadcast -a “broadcastactionfilter” -e name zhy
    15.启动服务:
    adb shell am startservice “com.zhy.aaa/com.zhy.aaa.MyService”
    16.屏幕截图:
    可以使用screencap命令来进行手机屏幕截图
    adb shell screencap /sdcard/screen.png
    17.录制视频:
    可以使用screenrecord[options] filename命令来录制屏幕视频,例如:
    adb shell screenrecord /sdcard/demo.mp4
    18.事件输入:
    18.1 input
    使用adb shell input命令向屏幕输入一些信息
    adb shell input text “insert%stext%shere”(注意:%s表示空格)
    使用adb shell input tap命令来模拟屏幕点击事件
    adb shell input tap 500 1450(表示在屏幕上(500,1450)的坐标点上进行一次点击)
    使用adb shell input swipe命令来模拟手势滑动事件
    adb shell input swipe 100 500 100 1450 100(表示从屏幕坐标(100,500)开始,滑动到(100,1450)结束,整个过程耗时100ms)
    使用上面的命令还可以模拟”长按(long press)操作,也就是2个坐标点相同,耗时超过500ms.
    adb shell input swipe 100 500 100 500 500
    使用adb shell input keyevent命令来模拟点按实体按钮的命令
    adb shell input keyevent 25(该命令表示调低音量。数字25是在AOSP源码中的KeyEvent类里卖弄定义的一个事件常量。该类定义了将近300个事件常量。)
    18.2 am
    am(Activity Manager)命令来启动一个APP、启动Activity、启动广播和服务等等。
    启动一个activity,最简单的命令可以使用adb shell am start com.package.name/com.package.name.ActivityName
    如果启动带有参数,则使用-e标签
    {
    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" } } adb shell am start com.example.crime/com.example.crime.SecondActivity -e argus_name 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"(上面这个命令会启动浏览器打开谷歌网址页面。) am 也能发送广播和启动服务 adb shell am broadcast -a "our.specified.action" 还可以在上述命令后面添加**-e**来添加额外的信息 使用下面的命令可以直接让手机重启 adb shell am broadcast -a android.intent.action.BOOT_COMPILETED 启动一个服务也是类似 adb shell am startservice "com.example.crime/com.example.crime.MyService" (https://blog.csdn.net/qq_39969226/article/details/87897863) 19.事件输出
    19.1 日志信息adb logcat
    19.2 dumpsys dumpsys命令可以提供非常多的系统信息(可以通过adb shell service list来查看dumpsys能提供查询信息的服务)
    19.3 屏幕截图:
    使用screencap 命令来进行手机屏幕截图(adb shell screencap /sdcard/screen.png)
    19.4 录制视频:
    使用screenrecord [options] filename命令来录制屏幕视频(adb shell screenrecord /sdcard/demo.mp4){注:此命令适用于Android 4.4及以上的设备中。
    录制视频也有参数选项,比如 –size 设置视频大小, –time-limit设置最大录制时长等。}
    20.系统命令
    20.1 查看进程信息:
    使用adb shell ps命令查看进程信息。可以在该命令后加包名,来查看某个应用程序的进程信息。
    20.2 查看CPU使用情况:
    使用**adb shell top **命令来查看系统CPU使用情况。(ctrl+c结束)
    https://www.wanandroid.com/blog/show/2310
    https://developer.android.com/studio/command-line/adb.html
    https://github.com/mzlogin/awesome-adb
    https://blog.csdn.net/wang18323834864/article/details/78618748

21.查看当前adb版本
adb version
22.adb-server 的开启与关闭
adb kill-server adb start-server

  1. 手机重启
    adb reboot
  2. 获得应用的apk所在路径
    adb shell pm path 应用的包名
  3. adb shell input keycode 指令
    HOME 键 adb shell input keycode 3
    返回键 adb shell input keycode 4
    打开浏览器 adb shell input keycode 64
  4. adb shell wm 指令
    屏幕分辨率 adb shell wm size
    屏幕密度 adb shell wm density
    adb shell wm density 320/480/640 可修改屏幕密度查看效果,对应Launcher图标会缩放
  5. adb shell ifconfig 命令
    IP 地址 adb shell ifconfig “| grep Mask”
    WIFI 地址 adb shell ifconfig wlan0
  6. 状态栏和导航栏的显示隐藏
    adb shell settings put global policy_control ( 可由如下几种键及其对应的值组成,格式为 key1=value1:key2=value2。)
    immersive.full 同时隐藏
    immersive.status 隐藏状态栏
    immersive.navigation 隐藏导航栏
    immersive.preconfirms 同时显示
    {
    adb shell settings put global policy_control immersive.full=*
    表示设置在所有界面下都同时隐藏状态栏和导航栏。(重启也不会失效,恢复需调用下面的命令) adb shell settings put global policy_control immersive.preconfirms=* 表示恢复显示 adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3 表示设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。 }
  7. 关闭指定包名的应用程序 (force-stop )
    adb shell am force-stop com.some.package
  8. 杀死与应用程序的包名称相关联的所有进程。该命令只会杀死安全的进程,不会影响用户体验。 (kill [options] )
    adb shell am kill com.some.package

Share this: