• Android adb的用法


    引言

    本文基于Android官方文档, 以及个人工作的使用经验, 总结下adb的常用用法, 备忘. 

     

    1, adb简介

    adb全名Andorid Debug Bridge. 顾名思义, 这是一个Debug工具.
    然而, 为何称之为Bridge呢? 因为adb是一个标准的CS结构的工具, 是要连接开发电脑和你的调试手机的.包含如下几个部分:

    • Client端, 运行在开发机器中, 即你的开发PC机. 用来发送adb命令.
    • Deamon守护进程, 运行在调试设备中, 即的调试手机或模拟器.
    • Server端, 作为一个后台进程运行在开发机器中, 即你的开发PC机. 用来管理PC中的Client端和手机的Deamon之间的通信.

    2, 常用用法

    2.1 adb devices

    列举当前连接的调试设备

    
    
    1 $ adb devices
    2 List of devices attached
    3 DU2SSE1467010378    device

     

    2.2 adb logcat

    打印log信息

    指令说明备注
    adb logcat 打印log /
    adb logcat -c 清除手机的log buffer 有些手机权限控制, 不支持.
    adb logcat -b <buffer> 打印指定buffer的log信息

    buffer有: main(主log区,默认), events(事件相关的log),

    radio(射频, telephony相关的log)

    adb logcat -v <format> 格式化输出log 常用的用adb logcat -v time显示时间
    adb logcat -f <filename> 输出log到指定文件  

     

    2.3 adb install/uninstall

    安装卸载apk

    1 // 安装apk时指定apk file路径
    2 $ adb install ~/Downloads/mobileqq_android.apk
    3 [100%] /data/local/tmp/mobileqq_android.apk
    4     pkg: /data/local/tmp/mobileqq_android.apk
    5 Success
    6 
    7 // 卸载apk时指定包名
    8 $ adb uninstall com.tencent.mobileqq
    9 Success

     

    2.4 adb pull/push

    调试设备和开发PC之间拷贝文件.

    1 // 拷贝本地文件到调试设备中
    2 $ adb push ~/temp/GithubApp.trace /sdcard/
    3 [100%] /sdcard/GithubApp.trace
    4 
    5 // 从调试设备中拷贝文件到本地
    6 $ adb pull /sdcard/GithubApp.trace ~/
    7 [100%] /sdcard/GithubApp.trace

     

    2.5 adb start/kill-server

    启动/杀死adb简介中提到的Server端进程.

    由于adb并不稳定, 有时候莫名的问题掉线时, 可以先kill-server, 然后start-server来确保Server进程启动. 往往可以解决问题.

     

    2.6 adb shell

    进入调试设备的shell界面, 此时可以使用调试设备中的很多指令. 下文高阶用法中很多就是.

    1 $ adb shell
    2 shell@hwH60:/ $

     

    3, 高阶用法

    3.1 adb connect/disconnect

    通过wifi进行远程连接手机进行调试的.
    https://developer.android.com/studio/command-line/adb.html#wireless

    需先连上usb模式, 开启远程调试模式:
    $ adb tcpip 5555

     

    3.2 adb shell am

    am即activity manager.
    该命令用来执行一些系统动作, 例如启动指定activity, 结束进程, 发送广播, 更改屏幕属性等. 调试利器.

    指令说明备注
    start <Intent> 根据intent指向启动Activity

    Intent可以是显示的指向activity, 也可以是ACTION方式,

    并且可以添加flag, data等参数信息.

    startservice <Intent> 启动Service 可以添加flag, data等参数信息.
    broadcast <Intent> 发送广播 可以添加flag, data等参数信息.
    monitor 启动一个Crash和ANR的监听器 如有Crash或ANR会在控制台输出相关信息.
    force-stop <Package> 强制停止该包相关的一切 传入package name.
    kill <Package> 杀死该包相关的所有进程 传入package name.
    kill-all 杀死所有后台进程  
    display-size WxH 改变显示的分辨率 例如adb shell am display-size 1280x720, 手机可能不支持.
    display-density <dpi> 改变显示的density 例如adb shell am display-density 320, 手机可能不支持.

     

    3.3 adb shell pm

    pm即package manager.
    用来执行package相关的操作, 例如安装卸载, 查询系统的安装包等.

    指令说明备注
    list packages <Filter> 列出满足filter条件的所有包  
    list permissions <Group> 列出该Group的所有权限  
    list features 查看系统支持哪些feature 例如蓝牙, wifi, 摄像头等.
    install <Path>/uninstall <Package> 安装卸载  
    clear <Package> 清除应用数据  

     

    3.4 adb shell screencap

    截屏, 比截屏快捷键更加方便快捷.

    1 $ adb shell screencap /sdcard/screen.png
    2 
    3 $ adb pull /sdcard/screen.png ~/temp
    4 [100%] /sdcard/screen.png

     

    3.5 adb shell screenrecord

    录屏, 做demo的话, 可以很方便的用这个命名录制视频, 然后借助工具将其转换成gif图, 超赞. 如下:


    screenrecord gif

    Android4.4及以上系统可用.

     

    3.6 adb shell dumpsys

    强大的dump工具, 可以输出很多系统信息. 例如window, activity, task/back stack信息, wifi信息等.

    探索Activity之launchMode探索Activity之启动Intent flag和Affinity就是用adb shell dumpsys activity来输出task信息的.

    常用dumpsys:

    指令说明备注细分参数
    activity 输出app组件相关信息

    还可以用细分参数获得单项内容, 下同. 例如

    adb shell dumpsys activity activities来获取

    activity task/back stack信息.

    activites, service, providers,

    intents, broadcasts, processes

    alarm 输出当前系统的alarm信息 / /
    cpuinfo 输出当前的CPU使用情况 / /
    diskstats 输出当前的磁盘使用状态 / /
    batterystats 电池使用信息 / /
    package

    package相关信息, 相当于

    pm功能的集合

    输出诸如libs, features, packages等信息 /
    meminfo

    输出每个App的内存使用

    和系统内存状态

    可以指定包名, 例如adb shell dumpsys meminfo 

    com.anly.githubapp

    /
    window 输出当前窗口相关信息 /

    policy, animator,

    tokens, windows

     

    出处:http://www.jianshu.com/p/5980c8c282ef
  • 相关阅读:
    LIPS的历史
    语法分析生成器 LEX
    Effective JAVA 中有关Exception的几条建议
    Code Reading chap10
    Code Reading chap8
    Code Reading chap7
    Code Reading chap11
    Code Reading chap9
    软件设计中的抽象层次
    Invalid bound statement (not found) @Update注解写的怎么还报错!
  • 原文地址:https://www.cnblogs.com/georgeOfChina/p/7729632.html
Copyright © 2020-2023  润新知