ADB的全称是Android Debug Bridge,翻译过来就是Android调试桥。顾名思义,主要用于PC端和Android设备调试连接的作用。从最早的Eclipse到现在的Android Studio,其实底层和Android设备的链接,都是依赖的ADB去做的。
adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。
所以如果 adbd 以普通权限执行,有些需要 root 权限才能执行的命令无法直接用 adb xxx 执行。这时可以 adb shell 然后 su 后执行命令,也可以让 adbd 以 root 权限执行,这个就能随意执行高权限命令了。
安装
adb无法安装debug包,提示Failure [INSTALL_FAILED_TEST_ONLY]解决办法
$ adb install -t debug.apk
这一点在adb的说明中有明确的提示, -t 即表示允许test package
$ adb
......
app installation:
install [-lrtsdg] PACKAGE
install-multiple [-lrtsdpg] PACKAGE...
push package(s) to the device and install them
-l: forward lock application(将应用安装到保护目录 /mnt/asec)
-r: replace existing application(替换已存在应用)
-t: allow test packages(允许安装 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的应用)
-s: install application on sdcard(将应用安装到sdcard)
-d: allow version code downgrade (debuggable packages only)(允许降级覆盖安装)
-p: partial application install (install-multiple only)(部分安装apk标志)
-g: grant all runtime permissions(授予所有运行时权限)
日志
将指定包名的APP日志保存到文件中
adb logcat grep <packagename> -> D://hce.txt
需要打印时间和级别是Error的信息
adb logcat -v time *:E
除缓存的log
adb logcat -c
APP操作
清理App数据
adb shell pm clear <packagename>
将已安装的应用提取出来
查看设备上应用的包名
adb shell pm list <packagename>
-s:系统应用
-3: 第三方应用
-字符串:查看包名包含字符串的应用列表同:adb shell pm list packages | grep 字符串
查看应用安装路径
adb shell pm path <packagename>
导出路径下的APP文件
adb pull /data/app/com.facebook.katana-2/base.apk ../
其他
查看应用详细信息
adb shell dumpsys package <packagename>
查看屏幕分辨率
adb shell wm size
屏幕密度
adb shell wm density
显示屏参数
adb shell dumpsys window displays
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
Display: mDisplayId=0
init=1080x1920 420dpi cur=1080x1920 app=1080x1794 rng=1080x1017-1810x1731
deferred=false layoutNeeded=false
其中 mDisplayId 为 显示屏编号,init 是初始分辨率和屏幕密度,app 的高度比 init 里的要小,表示屏幕底部有虚拟按键,高度为 1920 - 1794 = 126px 合 42dp
android_id
adb shell settings get secure android_id
Android 系统版本
adb shell getprop ro.build.version.release
IP 地址
adb shell netcfg
内存信息
adb shell cat /proc/meminfo
退出adb
ctrl+c
网友评论