>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24510 个阅读者 刷新本主题
 * 贴子主题:  Android adb你真的会用吗? 回复文章 点赞(0)  收藏  
作者:admin    发表时间:2019-12-30 22:03:11     消息  查看  搜索  好友  复制  引用

    

引言

本文基于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

列举当前连接的调试设备



$ adb devices
List of devices attached
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



// 安装apk时指定apk file路径
$ adb install ~/Downloads/mobileqq_android.apk
[100%] /data/local/tmp/mobileqq_android.apk
    pkg: /data/local/tmp/mobileqq_android.apk
Success

// 卸载apk时指定包名
$ adb uninstall com.tencent.mobileqq
Success

2.4 adb pull/push

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



// 拷贝本地文件到调试设备中
$ adb push ~/temp/GithubApp.trace /sdcard/
[100%] /sdcard/GithubApp.trace

// 从调试设备中拷贝文件到本地
$ adb pull /sdcard/GithubApp.trace ~/
[100%] /sdcard/GithubApp.trace

2.5 adb start/kill-server

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

2.5 adb shell

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



$ adb shell
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指向启动ActivityIntent可以是显示的指向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

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



$ adb shell screencap /sdcard/screen.png

$ adb pull /sdcard/screen.png ~/temp
[100%] /sdcard/screen.png

3.5 adb shell screenrecord

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



点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

screenrecord gif
Android4.4及以上系统可用.

2.5 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电池使用信息//
packagepackage相关信息, 相当于pm功能的集合输出诸如libs, features, packages等信息/
meminfo输出每个App的内存使用和系统内存状态可以指定包名,
例如adb shell dumpsys meminfo
com.anly.githubapp
/
window输出当前窗口相关信息/policy, animator, tokens, windows

原文链接:https://www.jianshu.com/p/5980c8c282ef

程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 admin 在 2020-01-01 15:36:44 重新编辑]
  Java面向对象编程-->Java常用类(下)
  JavaWeb开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->第一个helloapp应用
  Java网络编程-->客户端协议处理框架
  精通Spring-->Vue Router路由管理器
  Vue3开发-->Vue组件开发基础
  Android面试题汇总
  如何提高Android代码的安全性
  Android Broadcast receiver 编程
  Android内核开发:图解Android系统的启动过程
  Android UI学习 - Tab的学习和使用
  Android制作Tabs界面的常用方法
  Android 使用SQLite数据库
  Android UI学习 - TableLayout使用范例
  Android性能优化:Android UI渲染机制
  Android OpenGL ES2.0学习:基础三角形案例
  android使用工具性能优化
  Android端使用OpenGL ES加载OBJ文件数据
  Android Camera2.0 API实现摄像头预览并获取人脸关键坐标
  程序员笔记|JSBridge框架解决通信问题实现移动端跨平台开发
  Android炫酷菜单
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。