使用ADB命令调试的总结

ADB的全称是Android Debug Bridge,是SDK的安装目录的platform-tools子目录下的一个应用程序。

环境变量配置:

要想在命令行中直接使用adb,需要配置Path环境变量,变量值为:

D:aaronandroid-sdk-windowsplatform-tools

查看已连接设备:

查看当前运行的模拟器,该命令会罗列出当前已经以调试模式连接到计算机的所有设备。

adb devices
图片描述

文件操作:

将PC上的文件push到设备中:

adb push d:xxx.txt /sdcard/

将设备中的文件pull到PC中:

adb pull /sdcard/xxx.txt d:aaron\

注意,如果直接pull到磁盘根目录,直接用磁盘名即可,否则会报错No such file or directory

adb pull /sdcard/xxx.txt d

删除设备上的某一文件:需要用到sdb shell。

adb shell rm -rf /sdcard/1.txt

启动Shell:

启动shell后可以在shell中执行一些Linux的命令,比如rm,ls等。

adb shell

当然,也可以直接在命令行中调用adb shell shellcommand args,比如:

adb shell rm -rf /sdcard/1.txt

图片描述

安装和卸载程序:

安装需要提供apk文件的完整路径。如果设备中已经存在该应用(Android中判定两个应用是否相同的依据是packageName是否相同),则会提示失败。

adb install d:xx.apk
图片描述

卸载程序,需要跟完成的包名(依据应该是AndroidManifest文件中定义的包名)可选参数-k表示卸载后保留该程序产生的数据和缓存。如果设备中不存在该应用,则提示失败。

adb uninstall [-k] com.example.xxx
图片描述

启动某一Activity:

借助shell中的am命令,简单实用如下,需要packageName以及AndroidManifest中Activity标签中的android:name的值。

adb shell am start com.example.demo/.MainActivity

此命令并不是所有的Activity都能被启动,一般用于启动LauncheActivity。

获取日志

该命令可以抓取到整个系统的所有日志,可以实用参数对日志进行优先级过滤。如果不跟路径名,则直接在终端输出日志,否则,输出到路径对应的文件,Ctrl+c结束日志抓取。

adb logcat *:[level] d:aaronlogcat.txt

过滤等级如下:

V —— Verbose 明细(最低优先级)
D —— Debug 调试
I —— Info 信息
W —— Warn 警告
E ——Error 错误
F —— Fatal 严重错误
S —— Silent 无记载(最高优先级,没有什么会被记载)
一次调试经历:师傅给的Demo,没有代码,通过am启动MainActivity打开后闪退,于是使用uninstall卸载然后install重装,完成后继续am启动,仍然闪退,于是改而查看日志,因为没有代码,无法编译,只能手动导出日志,使用logcat输出所有日志到文件,logcat只有Ctrl+c才会停止,在此期间,另开一个cmd,am启动MainActivity,然后退出logcat。在日志文件中搜寻所有Demo的包名,定位如下原因:E/AndroidRuntime(11354): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx/.MainActivity}: java.lang.RuntimeException: Fail to connect to camera service原因是相机无法打开,相机是正常的,唯一的原因是被自己写的Demo占用了,在DDMS中stop自己Demo的进程,重新am,启动成功。

一天八升水
4 声望1 粉丝

计算机本科在读