• android adb介绍


    1. 什么是adb

    在SDK的Tools文件夹下包含着Android模拟器操作的重要命令ADB,ADB的全称为Android Debug Bridge,就是调试桥的作用。可以与模拟器或android设备通信。adb可分为三部分:

    • 客户端:运行在pc机上,通过console调用 adb 命令。其他工具,如ADT插件 和 DDMS工具等,都会调用adb客户端。
    • 服务器:运行在pc机上,以后台程序方式运行。负责客户端与adb 守护进程(deamon)之间的通信。
    • adb 守护进程(deamon):运行在android设备或模拟器上。

    adb工具放在android_SDK/platform-tools/下。启动adb客。户端后,会首先检测服务器是否已启动。未启动起会将服务器自动起起来,服务器绑定在tcp 5037端口。服务器会扫描5555 to 5585端口段来发现adr设备。当发现adb守护进程后,会建议连接。注意,每个连接会占用两个端口,双数端口用来响应console,单数端口用来adb连接。如,设备1,console: 5554; 设备1,adb: 5555。

    2. 启动adb

    我使用adb安装apk时,提示:

    adb server is out of date.  killing...
    ADB server didn't ACK
    * failed to start daemon *
    

    原因上,电脑上安装的手机助手占用了adb的端口5037,所以adb启动不起来。如果可以退出手机助手,且插上手机后助手也不会霸占adb的端口,倒是可以保留。无奈,我PC上的手机助手做不到,我只能卸之。卸载后就OK了,命令行下adb操作就能启动adb server了。使用adb时,需开启android的debug模式。

    3. 常用adb命令

    adb命令 解释
    adb start-server

    启动adb服务器

    adb kill-server

    终止adb服务器

    adb version

    查看adb版本

    adb version

    查看adb的各种命令和参数的介绍

    adb devices

    查看连接到pc上的adr设备。第一列为设备的uid号,第二列为设备的状态。

    • offline 此状态下adb无法通信成功。可以尝试重起adb服务器;安装高版本的adb
    • 设备列表为空  有时adb版本与device的adr版本不匹配也会遇到此问题
    adb -s deviceID xxxx

    多个设备时,指定操作其中某一个deviceID号为xxxx的设备

     adb install xxx.apk -r/d/s  
    安装app
    -r 覆盖安装,保留数据和缓存文件 -d 解决低版本version问题
     adb uninstall -k <package_name>  卸载app -k表示保留配置和缓存文件 
     adb pull <remote> <local>  从设备上取回文件  当记下日志后,就可以使用pull命令,将日志文件传到本地查看了
     adb push <local> <remote>  从pc上推送文件到设备

    4. adb shell

    ad shell即可用shell来管理android设备。因为android本质上是linux系统,所以和linux上的操作命令类似。如cd/ls/rm等。

    命令 解释
    adb shell dumpsys package <package_name> 查看与某app相关的所有信息,如action, codepath, version,权限等信息
    adb shell dumpsys activity activities|sed -En -e '/Running activities/,/Run #0/p' 查看当前activity名
    adb shell dumpsys meminfo <package_name|PID> 查看某个app的内存占用
    adb shell dumpsys batterystats <package_name> xxx.txt 获取单个应用的电量消耗信息  可以使用python historian.py xxx.txt > xxx.html将数据转为html文件

    adb shell dumpsys window|grep Surface 或

    adb shell wm size

    查看手机分辨率
    adb shell getprop | grep heapgrowthlimit / version / product 查看单个应用程序的最大内存限制 / sdk版本 / 型号
    adb shell am start -n/W <package_name>/.<activity_class_name> -n:启动某个app的某个activity  -W 启动并记录启动时长,从startActivity到应用第一帧完全显示的时长
    adb shell pm list packages 列出设备上的所有app包名
    adb shell ps | grep xxx 查看进程
    adb shell kill PID  终止某个进程
    adb shell monkey -v -p <package_name> 500 -p 对象包 -v 反馈信息级别  运行monkey
    adb shell getprop ro.build.version.release 获得设备操作系统版本

    adb -s xxxx shell getprop ro.product.model

     获得设备名
    adb [-d/-e/-s <serial no>] <command> -d 多个真机设备时,-d后

    5. adb常用命令之logcat

    adb命令语法:

    [adb] logcat [<option>] ... [<filter-spec>] ...
    • adb logcat -c 清除所有以前的日志
    • adb logcat -d 打印日志,且自动退出log模式
    • adb logcat -f 将日志输出到文件中。注意,这个文件保存在设备上,所以需要将日志创建在可写入的地方。比如/sdcard/logs.txt
    • adb logcat -s 设置默认的过滤器, 如 我们想要输出 "System.out" 标签的信息, 就可以使用adb logcat -s System.out
    • adb logcat -t N 查看最后的N条日志
    • adb logcat | grep XXX 管道命令,同Linux

    也可以进入adb shell后,运行logcat。与adb logcat 参数一样。

    6. adb常用命令pm

    pm,即package management。  详细可参看这篇博文:https://www.cnblogs.com/JianXu/p/5380882.html

    • adb shell pm list packages -3 仅显示第三方apk
    • adb shell pm list packages | grep xxxx 显示包含xxxx的已安装app名

    这个网站不错,http://adbshell.com/commands/adb-connect 与adb相关的命令这里有一些简单的介绍

    7. adb常用命令am

    《每天一个adb命令:am》

  • 相关阅读:
    UML的现状及未来发展
    终于申请好了Blog。:)
    2004年最后一场雪
    今天开始在乐世安通上班了
    狐狸与兔子问题
    今天上午
    好久没更新了啊,写写近况
    还是得考研啊!
    kettle HTTP client
    国外的一个PIC源代码网站,比较不错,基于HiTech C的。共享一下
  • 原文地址:https://www.cnblogs.com/sunada2005/p/4630924.html
Copyright © 2020-2023  润新知