• Android 调试桥 (adb) 使用教程/示例


    sidebar: auto
    

    Android 调试桥 (adb)

    Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

    • 客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
    • 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
    • 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

    命令

    查看已连接设备

    # 查看已连接设备
    $ adb devices
    List of devices attached
    35643218009**** device
    

    连接设备

    无线调试需要连接后才能出现在 adb devices

      1. 打开 无线调试

    系统设置 -> 开发者选项 -> 调试 -> 无线调试

      1. 连接ip地址和端口

    这里ip没有固定的话会经常变, 端口每次打开无线调试也会变

    # 连接 网络设备:ip
    $ adb connect 
    connected to 192.168.10.168:39773
    
    # 再查看一下设备列表
    $ adb devices                     
    List of devices attached
    35643218009*** device
    192.168.10.168:39773    device # ++
    

    断开连接

    $ adb disconnect 
    success
    

    安装应用/卸载应用

    $ adb install 
    success
    $ adb uninstall <包名>
    success
    

    查看已安装应用包名

    $ adb shell pm list packages
    package:com.android.wallpaperpicker
    package:com.android.providers.contacts
    package:com.android.captiveportallogin
    package:com.mediatek.dataprotection
    ...
    

    搜索包 (仅 Linux/Mac/Git Bash)

    $ adb shell pm list packages | grep "com.android"
    package:com.android.wallpaperpicker
    package:com.android.providers.contacts
    

    打开应用

    adb shell am start -W -n <包名>/

    $ adb shell am start -W -n com.example.myapplication/com.example.myapplication.MainActivity
    Starting: Intent { cmp=com.example.myapplication/.MainActivity }
    Status: ok
    Activity: com.example.myapplication/.MainActivity
    ThisTime: 191
    TotalTime: 191
    WaitTime: 246
    Complete
    

    Activity 获取方式:

    使用 apktool 工具解包, 用文本编辑器打开 AndroidManifest.xml 拿到 activityandroid:name

    第一个是首屏

    # 如何解包
    $ ./apktool.bat d woc.apk
    

    关闭应用

    $ adb shell am kill <包名>
    success
    
    # 杀死后台所有进程
    $ adb shell am kill-all
    

    上传文件

    adb push <本地文件> <设备中目标文件>

    $ adb push README.md /data/tmp/woc.md
    README.md: 1 file pushed, 0 skipped. 4.1 MB/s (683 bytes in 0.000s)
    

    下载文件

    # 下载文件到电脑中
    $ adb pull 路径
    

    查看日志

    adb logcat *

    # 过滤指定关键词 macos / linux
    $ adb logcat * | grep "connect to RTMP server by url"
    ...
    # 过滤指定关键词 windows
    $ adb logcat * | find "connect to RTMP server by url"
    ...
    

    截图

    TODO

    模拟操作

    TODO

    打开网页

    # 浏览器打开百度
    $ adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com
    

    提取应用 apk

    # 获取包文件
    $ adb shell pm list packages | grep "teamviewer"
    # 获取应用安装包所在位置
    $ adb shell pm path com.teamviewer.quicksupport.addon.universal
    # 根据 path 获取 apk
    $ adb pull /data/app/com.teamviewer.quicksupport.addon.universal-6gbqnHHmnLCq7BiaQln5Bg==/base.apk
    

    模拟输入文本

    # 注意需要转码, 比如 \e3 这种, 不能输入中文
    $ adb shell input text "hello,world"
    

    发送广播

    adb shell am broadcast -a -p --e <键> <值> ...

    # 发送广播模拟
    # 附加数据类型说明 --ei(nt),  --es(tring), --eb(ool)
    $ adb shell am broadcast -a com.lhs.xcam.cmdaction -p cn.alauncher.dvr --ei camtype 1 --es cmd startrtc --es url "rtmp://xxxx/live/livestream/233"
    

    参考

    • 指令 am : 是 activity manager 的缩写, 可以启动Activity、打开或关闭进程、发送广播等操作
  • 相关阅读:
    数字电子技术笔记——组合逻辑功能
    ios原生分享
    2.1背景位置——精确单位
    java通过FTP跨服务器动态监听读取指定目录下文件数据
    深度学习实战06-循环神经网络(RNN)实现股票预测
    系统架构设计师【第10章】: 软件架构的演化和维护 (核心总结)
    读懂NFT地板价
    Linux项目自动化构建工具-make/Makefile
    分布式数据库选型之争:数据库向左,中间件向右
    通过vuex存储token,通过前置路由守卫完成对登录操作之后的token值验证,完成登录状态的保持
  • 原文地址:https://www.cnblogs.com/edk24/p/17685262.html