使用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,启动成功。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。