分享几个高阶的Android adb命令,保证你几乎没用过

424 阅读2分钟

1.打印当前项目的Activity栈信息:

adb shell

dumpsys activity activities | grep "Hist"

由于在开发中,经常要知道,当前页面在哪个Activity,通过在代码中,打log再运行的方式,效率较低,没有直接敲命令来的快 比如,打开微信,并点击到朋友圈,查看朋友圈是哪个Activity 以及当前的栈内情况,截图如下:

打印Activity栈,也有利于我们定位问题,比如,有时我们的页面上弹一个弹框(可能是个DialogActivity),可能你不知道是谁弹得,此时打印一下栈信息,一目了然,可能还会打印出来一个透明的Activity

image.png 可以看到 朋友圈的Activity是: com.tencent.mm/.plugin.sns.ui.SnsTimeLineUI 当然,如果只想看当前页面的Activity,其他的不关注,也可以用这个命令:

adb shell dumpsys window | findstr mCurrentFocus

截图如下:

image.png

2.打印apk安装的路径

adb shell pm path 做系统预装app的,可能经常用到这个命令,有时我们想知道,我们app是安装在系统路径下,还是app路径下 就敲这个命令看。

例如:还是以微信为例:

image.png 看出,微信这个三方应用,是安装在/data/app目录下 下面,我们看一个系统应用的安装路径,比如电话:

image.png

看出,电话app是安装在/system/priv-app目录下,(由于我这个是华为手机,不同手机目录可能有差异) 这个命令也有助于我们定位问题,比如,有时monkey抛出一个crash,调用栈信息里有个类路径不是我们的,此时,打印一下这个路径所属的包名的路径,可能会发现原来是一个系统应用啊。

3.查看app的签名,权限情况信息(非常实用)

adb shell dumpsys package

还是以微信为例:adb shell dumpsys package com.tencent.mm

image.png 由于这个命令打印出来的信息较多,所以 我把他打印到本地文件来看

可以看几个常用的信息:

1.签名:

image.png 有时,我们安装包的时候,会报签名不一致错误,可以用此命令查看签名

2.权限授予情况,,有时我们申请了权限,比如读写权限,却发现并没有获得该权限,那此时可以查看下到底系统给我们授予了没有。

image.png

granted = true 代表我们已经获得了对应的权限,,通过系统授予情况来进行定位问题。

以上,就是今天分享的几个命令,希望能帮助到大家。