adb

作者: 0981b16f19c7 | 来源:发表于2019-08-01 23:55 被阅读0次

    adb 的工作原理

    启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程(adb-server)。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令--------所有 adb 客户端均使用端口 5037 与 adb-server通信。

    通过无线连接PC

    1、将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
    2、 将设备与电脑通过 USB 线连接。应确保连接成功(可运行 adb devices 看是否能列出该设备)。
    3、让设备在 5555 端口监听 TCP/IP 连接:

        adb tcpip 5555
    

    4、断开 USB 连接。
    5、 找到设备的 IP 地址。
    6、通过 IP 地址连接设备。这里的 <device-ip-address>就是上一步中找到的设备 IP 地址。

      adb connect <device-ip-address>
    

    7、断开无线连接

    adb disconnect <device-ip-address>
    

    常用命令

    参照:https://mazhuang.org/awesome-adb/#%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95
    命令语法:adb [-d|-e|-s <serialNumber>] <command>
    -d:指定真机设备,后面跟设备ID
    -e:指定模拟器设备,后面跟模拟器设备ID
    -s:指定特定设备ID的真机/模拟器

    ##获取连接的设备信息
    adb devices
    cf264b8f    device-设备已连接
    emulator-5554   offline-表示设备未连接成功或无响应
    10.129.164.6:5555   device
    ##启动/停止adb-server
    adb -P port start-server
    adb kill-server
    #查看adb版本
    adb version
    

    adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。所以如果 adbd 以普通权限执行,有些需要 root 权限才能执行的命令无法直接用 adb xxx 执行。这时可以 adb shell 然后 su 后执行命令,也可以让 adbd 以 root 权限执行,这个就能随意执行高权限命令了。(注意:部分机型需要先安装 adbd Insecure,才能指定root权限)

    adbd指定root权限
    adb root
    adbd恢复飞非root权限
    adb unroot
    

    应用管理

    查看应用列表
    adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
    
    图片.png
    安装应用
    adb install [-lrtsdg] <path_to_apk>
    卸载应用
    adb uninstall [-k] <packagename>
    -k 参数可选,表示卸载应用但保留数据和缓存目录
    清除应用数据与缓存
    adb shell pm clear <packagename>
    
    图片.png

    adb install 实际是分三步完成:
    1、push apk 文件到 /data/local/tmp
    2、调用 pm install 安装。
    3、删除 /data/local/tmp 下的对应 apk 文件。

    查看前台activities 
    adb shell dumpsys activity activities | grep mFocusedActivity
    查看正在运行的services
    adb shell dumpsys activity services [<packagename>]
    查看应用详细信息
    adb shell dumpsys package <packagename>
    输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
    查看应用安装路径
    adb shell pm path <PACKAGE>
    启动/调起Activity
    adb shell am start -n com.tencent.mm/.ui.LauncherUI
    调起service
    adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
    发送广播
    adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver
    强制停止应用
    adb shell am force-stop <packagename>
    

    统预定义广播及正常触发时机


    广播1.png
    广播2.png

    文件管理

    复制设备里的文件到电脑
    adb pull <设备里的文件路径> [电脑上的目录]
    复制电脑里的文件到设备
    adb push <电脑上的文件路径> <设备里的目录>
    模拟按键输入
    adb shell input keyevent <keycode> 
    滑动解锁
    adb shell input swipe 300 1000 300 500(起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标)
    
    模拟按键输入-keycode-01.png
    模拟按键输入-keycode-02.png

    查看日志

    Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。

    android日志
    adb logcat -v long ActivityManager:I *:S(输出日志指定格式为long,日志级别为S)
    清空日志
    adb logcat -c
    内核日志
    db shell dmesg
    
    日志优先级.png

    其他

    查看设备型号
    adb shell getprop ro.product.model
    电池状况
    db shell dumpsys battery
    屏幕分辨率
    adb shell wm size
    屏幕密度
    adb shell wm density
    显示屏参数
    adb shell dumpsys window displays
    获取android_id
    adb shell settings get secure android_id
    获取系统版本
    adb shell getprop ro.build.version.release
    获取IP地址
    db shell ifconfig | grep Mask
    获取MAC地址
    adb shell cat /sys/class/net/wlan0/address
    获取CPU信息
    adb shell cat /proc/cpuinfo
    获取内存信息
    adb shell cat /proc/meminfo
    获取系统更多属性
    adb shell cat /system/build.prop
    屏幕截图
    adb exec-out screencap -p > sc.png
    录制屏幕
    adb shell screenrecord /sdcard/filename.mp4
    

    相关文章

      网友评论

          本文标题:adb

          本文链接:https://www.haomeiwen.com/subject/tdusrctx.html