首页 > 其他分享 >Android 调试桥 (adb) 使用教程/示例

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

时间:2023-09-07 16:24:44浏览次数:42  
标签:shell 示例 am adb Android com android 调试

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 <IP地址:端口>
connected to 192.168.10.168:39773

# 再查看一下设备列表
$ adb devices                     
List of devices attached
35643218009*** device
192.168.10.168:39773    device # ++

断开连接

$ adb disconnect <IP地址:端口>
success

安装应用/卸载应用

$ adb install <apk路径>
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 <包名>/<Activity>

$ 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 <action> -p <package> --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、打开或关闭进程、发送广播等操作

标签:shell,示例,am,adb,Android,com,android,调试
From: https://www.cnblogs.com/edk24/p/17685262.html

相关文章

  • 【错误记录】Android Studio 创建 Module 模块报错 ( Cannot resolve external depend
    文章目录一、报错信息二、解决方案目前使用的是最新的Gradle配置,创建Module生成的源码与Gradle配置出现了冲突,导致的问题;解决此类问题,要仔细检查Gradle构建脚本,排查每个依赖库的来源;本次错误就是AS系统自动成的Module修改了Gradle构建脚本,导......
  • pagehelper分页框架进行定时跑批分页 在插入与sql语句的编写,当插入有库中有报异常显示
    以下是一个示例的业务类,使用PageHelper分页框架进行定时跑批分页插入操作,并在遇到重复数据时跳过继续插入:importcom.github.pagehelper.PageHelper;importcom.github.pagehelper.PageInfo;importorg.springframework.beans.factory.annotation.Autowired;importorg.spring......
  • 在Android和iOS上设置手机ip详细教程
    大家好!今天我们将分享一个关于如何在Android和iOS设备上设置手机ip(Layer2TunnelingProtocol)的简易教程。如果你想要通过安全且可靠的方式连接到远程网络,那么跟着本文一起学习吧!无需复杂操作,让我们开始愉快地探索吧!一、手机ip服务器是什么?首先,我们来了解一下手机ip服务器在是什么......
  • Android并发编程高级面试题汇总(含详细解析 十八)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • 一位3年Android开发的焦虑:月薪不到3万,担心被应届生取代
    前言在互联网行业,很多人去竞争一个岗位,优胜劣汰,这已经是常态了。如果能力和体力不够,就会被淘汰。看起来生动的工作生活歇斯底里却让许多人焦虑不安。最近,在脉脉上看到一名来自211本科的Android程序员表达了他的担忧:工作了三年多,今年25岁,目前的工资不到3万元。然而,考虑到再过几年就3......
  • MySQL或MariaDB查询数据添加序号
    1.通用方法:使用@变量SELECT@row_number:=@row_number+1ASrow_number,a.dept_nameFROMsys_departmenta,(SELECT@row_number:=0)bORDERBYdept_name;2.高版本即MySQL8.0或MariaDB10.5开始支持的ROW_NUMBER()函数SELECTROW_NUMBER()OVER(ORDERBYcolumn_......
  • Apache Ant入门示例
    一直以来对ant总是有一种特别陌生的感觉,对它很迷茫可也就不管它,绕过它通过其他方式来做到。现在终于醒悟了不再逃避它了。网上找了一篇文章然后跟着入了个门。 “ApacheAnt是一个基于Java的生成工具。据最初的创始人JamesDuncanDavidson介绍,这个工具的名称是anotherneatto......
  • 示例-工作清单
    W0G2X0W2IM-eyJsaWNlbnNlSWQiOiJXMEcyWDBXMklNIiwibGljZW5zZWVOYW1lIjoiVU5JVkVSU0lUQVMgSVNMQU0gTkVHRVJJIFNVTkFOIEtBTElKQUdBIiwiYXNzaWduZWVOYW1lIjoiY29kZSBtYW5vbmciLCJhc3NpZ25lZUVtYWlsIjoiMjQxNjc0NjA1QHFxLmNvbSIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25h......
  • py 导入json到redis的代码示例
    这里是一个py导入json到redis的代码示例,它会将字典、列表和元组类型的值序列化为JSON字符串。在这个修改后的脚本中,使用`json.dumps()`函数对这些数据类型进行序列化处理。```pythonimportjsonimportredis#替换为您的JSON文件路径及Redis服务器连接参数json_file_pa......
  • Android Q实现app开机自启
    开机自启动​ 开机自启,那系统开机成功会发生什么情况,借助某些信息的产生我们可以实现开机自启吗?​ 似乎原理就是这样子的,但是总需要考虑现实情况。现实就是首先这个app是系统app,所以这一步就排除了一大波的app,不过你要问难道不是系统应用就不行了吗,当然Android10以下可以一试......