一介绍:adb(Android Debug Bridge)Android 提供的一个通用的调试工具。借助这个工具,可以管理设备模拟器的状态 ,还可以进行以下的操作:

① 快速更新设备或手机模拟器中的代码,如应用或Android系统升级;

② 在设备上运行shell命令;

③ 管理设备或手机模拟器上的预定端口;

在设备或手机模拟器上上传下载文件

adb的工作方式比较特殊采用监听Socket TCP 5554等端口的方式让IDEQemu通讯,默认情况下adbdaemon相关的网络端口,所以当我们运行Eclipseadb进程就会自动运行。 ADB是一个 客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备.

1. 显示系统中全部Android平台:android list targets

2. 显示系统中全部AVD(模拟器):android list avd

3. 创建AVD(模拟器):android create avd --name 名称 --target 平台编号

4. 启动模拟器:emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)

5. 删除AVD(模拟器):android delete avd --name 名称

6. 创建SDCardmksdcard 1024M ~/名称.img

7. AVD(模拟器)所在位置:Linux(~/.android/avd)      Windows(C:\Documents and Settings\Administrator\.android\avd)

8. 启动DDMSddms

10. 对某一模拟器执行命令:abd -s 模拟器编号 命令

11. 安装应用程序:adb install -r 应用程序.apk

12. 获取模拟器中的文件: adb pull

13. 向模拟器中写文件:adb push

14. 进入模拟器的shell模式:adb shell

15. 启动SDK,文档,实例下载管理器: android

16. 缷载apk包:

      adb shell

      cd data/app

      rm apk

      exit

      adb uninstall apk包的主包名

      adb install -r apk

17. 删除系统应用:adb remount (重新挂载系统分区,使系统分区重新可写)。

      adb shell

      cd system/app

      rm *.apk

 

18. 查看adb命令帮助信息:adb help

19. 在命令行中查看LOG信息:adb logcat -s 标签名

20. adb shell后面跟的命令主要来自: 源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。

21. 获取管理员权限:adb root

22. 启动Activityadb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。

23、发布端口:你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如: adb forward tcp:5555 tcp:8000

24、复制文件:你可向一个设备或从一个设备中复制文件, 
复制一个文件或目录到设备或模拟器上: 

adb push

如:adb push test.txt /tmp/test.txt 
从设备或模拟器上复制一个文件或目录: 
adb pull
 如:adb pull /addroid/lib/libwebcore.so .

25、获取设备的ID和序列号:

     adb get-product 
     adb get-serialno

26、访问数据库SQLite3

adb shell 

sqlite3

27系统命令

#cd system/sd/data //进入系统内指定文件夹 
#ls //列表显示当前文件夹内容 
#rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 
#rm xxx //删除文件xxx 
#rmdir xxx //删除xxx的文件夹

Classes.dex文件所在位子/data/dalvik-cache

系统内置应用apk包在system/app文件夹中

第三方应用apk在data/app文件夹中

28、Logcat命令列表

Option

Description

-b 

加载一个可使用的日志缓冲区供查看,比如event 和radio . 默认值是main 。具体查看Viewing Alternative Log Buffers.

-c

清楚屏幕上的日志.

-d

输出日志到屏幕上.

-f 

指定输出日志信息的 , 默认是stdout .

-g

输出指定的日志缓冲区,输出后退出.

-n 

设置日志的最大数目 ., 默认值是4,需要和 -r 选 项一起使用。

-r 

 时 输出日志,默认值为16,需要和-f 选 项一起使用.

-s

设置默认的过滤级别为silent.

-v 

设置日志输入格式,默认的是brief 格 式,要知道更多的支持的格式,参看

adb logcat -b main -v time>app.log 打印应用程序的log

adb logcat -b radio -v time> radio.log 打印射频相关的logSIM STK也会在里面,modem相关的ATcommand等,当然跟QXDM差的很远了。

adb logcat -b events -v time  打印系统事件的日志,比如触屏事件。。。

二状态信息的有:adb shell dmesgadb shell dumpstateadb shell dumpsysadb bugreport

Adb logcat > xxx.txt此方法最为实时将log保存到xxx.txt文件中,需要手动停止

Adb logcat -d -f /sdcard/xxx.txt

29、该命令可以看到当前运行的是哪个activity,运行的一些进程等

adb shell dumpsys activity

每一个类别都有一个括号内容,给出了更加详细的指令来查看该类别下更多具体内容。因此再来尝试指令:adb shell dumpsys activity activities

另外,用"adb logcat | grep ActivityManager",也可以查看当前正在运行的Activity

adb shell logcat | grep com.android.launcher2.Launcher

1. 只显示需要的输出,白名单

最方便的当然是通过管道使用 grep 过滤了,这样可以使用 grep 强大的正则表达式匹配。简单的匹配一行当中的某个字符串,例如 MyApp:

adb logcat | grep MyAppadb logcat | grep -i myapp #忽略大小写。adb logcat | grep --color=auto -i  myapp #设置匹配字符串颜色。更多设置请查看 grep 帮助。

根据这个格式也可以设置只显示某个优先级的 log,再匹配行首第一个字符即可。例如仅显示 Error 级别 tag 为 MyApp 的输出:

adb logcat | grep "^E.MyApp"

当然也可以匹配多个,使用 | 分割多个匹配表达式,要加转义符。例如要匹配 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep "^..MyApp\|^..MyActivity"adb logcat | grep -E "^..MyApp|^..MyActivity"  #使用 egrep 无须转义符

2. 过滤不需要的输出,黑名单

还是使用 grep,用法也跟上面的一样,加一个 -v 即可。例如要过滤 tag 为 MyApp 和 MyActivity 的输出:

adb logcat | grep -v "^..MyApp\|^..MyActivity"adb logcat | grep -vE "^..MyApp|^..MyActivity"  #使用 egrep 无须转义符

3. 显示同一个进程的所有输出

有时一个程序里面的 tag 有多个,需要输出该程序(同一个 PID)的所有 tag;仅使用 tag 过滤有时也会漏掉一些错误信息,而一般错误信息也是和程序同一个 PID。还是通过 grep 实现,思路是先根据包名找到 pid 号,然后匹配 pid。写成 shell 脚本如下,参数是程序的 java 包名(如 com.android.media)。

#!/bin/bash
packageName=$1
pid=`adb shell ps | grep $packageName | awk '{print $2}'`
adb logcat | grep --color=auto $pid

4. 从当前开始显示

logcat 有缓存,如果仅需要查看当前开始的 log,需要清空之前的。

adb logcat -c && adb logcat

5. 过滤 log 文件

有时需要分析 log 文件,过滤 log 文件还是使用 grep。例如 log 文件为 myapp.log,要匹配 tag 为 MyApp 和 MyActivity 的输出,然后输出到 newmyapp.log:

cat myapp.log | grep "^..MyApp\|^..MyActivity" > newmyapp.log

 

三Log信息级别

优先级是下面的字符,顺序是从低到高:
V — 明细 verbose(最低优先级)
D — 调试 debug
I — 信息 info
W — 警告 warn
E — 错误 error
F — 严重错误 fatal
S — 无记载 silent

2. 过滤:指定标签,指定级别

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

标签TAG: 在进行log输出时需要指定标签

Log.v("Test", info );

LEVEL:

可以选择:[V D I W E S]中其中一个

TAG:X 的作用为: 输出标签为TAGlog级别大于 X的信息 . 例如:

adb logcat Test:I

输出 TestI I 级别以上的log,包括 i, w, e

注意:

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

(2) level : S 表示为不输出该标签的日志,应为没有大于S级别的日志了 

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

adb logcat Test:I *:S

3. 采用grep正则表达式过滤

grep  正则表达式参见grep与正则表达式

adb logcat | grep -E '^[VDE]/(TAG1|TAG2)'

4. 在同时输出到屏幕和文件 tee

想要把日志保存到文件,如果采用IO重定向,就无法输出到屏幕, 针对这个问题可以采用 tee命令

adb logcat | grep -E '^[VDE]/(TAG1|TAG2)' | tee my.log

 

更多相关文章

  1. Android(安卓)SDK更新困难解决方法
  2. ADB基本命令
  3. Android(安卓)so文件浅析
  4. android中图片的三级cache策略(内存、文件、网络)之二:内存缓存策略
  5. DynamicAPK基本概念
  6. 从iOS角度思考Android
  7. Android自动dump hprof文件的功能实现
  8. 如何在 Android(安卓)Studio 中引用不在项目文件夹中的 jar
  9. basic4android 开发教程翻译(二)可视化设计与猜数字程序

随机推荐

  1. Android面试题(28)-android的view加载和绘
  2. Android并发编程1-----多线程
  3. Android自定义view之EditText中显示提示
  4. Android手机GPU真弱
  5. Android(安卓)4.x手机进入安全模式的两种
  6. Android(安卓)OpenGL ES 2.0(三)---片元着
  7. tablelayout布局内容居中的问题
  8. android之AIDL跨进程通信详解
  9. android中handler使用WeakReference防止
  10. 配置vim开发Android[神器终究是神器]