Android平台下adb命令的使用技巧

1.端口转发

Android允许我们通过ADB,把Android上的某个端口映射到电脑的某个端口(adb reverse),或者把电脑的某个端口映射到Android系统的某个端口(adb forward)。

举个例子,假设电脑上开启了一个服务,监听的端口为8088。Android手机通过USB连接电脑后,在终端直接执行adb reverse tcp:8088 tcp:8088,然后在手机中访问127.0.0.1:8088,就可以访问到电脑上启动的服务了。

adb forward 时: 电脑是client,手机是server。

adb reverse 时: 电脑是server,手机是client。

adb命令的文档如下:

adb forward [--no-rebind] LOCAL REMOTE

     forward socket connection using:

       tcp:<port> (<local> may be "tcp:0" to pick any open port)

       localabstract:<unix domain socket name>

       localreserved:<unix domain socket name>

       localfilesystem:<unix domain socket name>

       dev:<character device name>

       jdwp:<process pid> (remote only)

       vsock:<CID>:<port> (remote only)

       acceptfd:<fd> (listen only)

adb reverse [--no-rebind] REMOTE LOCAL

     reverse socket connection using:

       tcp:<port> (<remote> may be "tcp:0" to pick any open port)

       localabstract:<unix domain socket name>

       localreserved:<unix domain socket name>

       localfilesystem:<unix domain socket name>

2.查看日志

adb logcat [TAG:LEVEL ] [TAG:LEVEL ] ...

TAG:LEVEL 的作用为: 输出标签为TAG的log级别大于LEVEL的日志. 例如:

adb logcat Test:I  

注意:

(1)可以指定多个[TAG:LEVEL ]

(2) TAG:S 表示为不输出该标签的日志

(3) [TAG:LEVEL ] 不会影响其他标签的日志, 所以如果要屏蔽其他标签的log请使用 *:S

adb logcat Test:I *:S

(4) 只查看Info级别以上的日志:

adb logcat *:I

3.清空当前日志缓存并重新开始查看log

adb logcat -c && adb logcat

4.将日志输出到文件

adb logcat -f <filename> 将日志输出到文件,例如:
adb logcat -f /sdcard/test.txt

导出当前日志到文件中:

adb logcat -b all -v time -d > a.log

其中-b all代表导出所有种类的日志,-v time表示导出日志中带时间格式。

adb shell  bugreport , 打印dumpsys、dumpstate、logcat的输出,用于分析错误。

输出比较多,建议重定向到一个文件中。例如:

adb shell dumpsys > d:\bugreport.log

5.清除app的数据

adb shell pm clear 这里输入包名

6.手机联系人操作

1)查询联系人

adb shell content query --uri content://com.android.contacts/contacts

2)删除联系人

adb shell content delete --uri content://com.android.contacts/contacts/1

7.修改窗口大小和屏幕密度

adb shell wm size 1920x1080

adb shell wm size reset

adb shell wm density 320

adb shell wm density reset

8.包操作

adb shell pm list package      

列出所有的应用的包名 (-s:列出系统应用  -3:列出第三方应用 -f:列出应用包名及对应的apk名称及存放位置  -i:列出应用包名及其安装来源)

adb shell pm path 包名     

列出对应包名的.apk 的位置

adb shell pm install apk存放路径   

安装应用(目标 apk 存放于PC端,用 adb install 安装;   目标 apk 存放于Android设备上,用 pm install 安装)

9.am(ActivityManager)操作

adb shell  am start 包名/.aa.bb.Activity (要启动的Activity)     

启动一个 Activity (-s先停止目标应用,再启动  -w 等待应用完成启动  -a 启动默认浏览器打开一个网页,例如:adb shell am start -a android.intent.action.VIEW -d https://wp.minicoda.com)

adb shell am monitor        

监控 crash 与 ANR

adb shell am force-stop package   

结束某包名代表的应用

adb shell am startservice    

启动一个服务

若提示失败,可输入命令adb shell am start-foreground-service -n com.test.demo/com.test.demo.ForegroundServiceDemo

即使用start-foreground-service来替换startservice可以解决这个问题。

原因:Android O 推出了Background Execution Limits,减少后台应用内存使用及耗电,一个很明显的例子就是不准后台应用通过startService启动服务。

adb shell am broadcast       

发送一个广播

10.向Android设备发送按键事件

adb shell input text 具体内容    

发送文本内容,不能发送中文

adb shell input keyevent  按键事件   

发送按键事件 例如:adb shell input keyevent KEYCODE_HOME 模拟按下Home键

adb shell input tap 触摸事件的位置 

对屏幕发送一个触摸事件 例如:点击屏幕上坐标为 300 300 的位置(adb shell input tap 300 300)

adb shell input swipe   

滑动事件  例如:从右往左滑动屏幕。

adb shell input swipe 800 600 100 600

11.截图和录屏

截图命令

adb shell screencap -p /sdcard/screenCapTest.png

录屏命令

screenrecord

4.4以上系统版本新增的录屏命令

adb shell screenrecord /sdcard/screenRecordTest.mp4

执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard/ 下。

12.其他

1)查看运行进程

adb shell procrank

2)关闭或杀掉进程

adb shell kill 366

其中366代表应用的pid。

3)保留数据和缓存文件,重新安装,升级

adb install -r test.apk

4)卸载app但保留数据和缓存文件

adb uninstall -k test.apk

5)查看目录下的文件大小

adb shell du -sh *

6)查看正在运行的Services

adb shell dumpsys activity services [packageName]

7)查看正在运行的Activity

adb shell dumpsys activity [packageName]


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值