首页 > 代码库 > adb:) adb push、pull、logcat and etc

adb:) adb push、pull、logcat and etc

在 android 开发过程中,常常须要看一些信息打印。

android 測试开发(类似 Java 的 JUnit)是一个好办法。可是看 logcat 才是“王道”。

为什么这样说呢。假设你看过 android 源代码就应该知道里面有非常多类似 Log** 这种语句。

所以看 logcat 会更加高速、直接的找到问题所在。从而加快您的开发。

当然。android为我们提供了一个好工具adb,全称 Android Debug Bridge。

以下结合自己在项目中的经历,跟大家分享一下 adb 这个工具。

首先保证在控制台下敲 adb 会出来非常多信息,这说明你的环境变量配置 ok,在不论什么文件夹下你都能够使用adb命令。

假设没有的话。你必须进入 adb 所在文件夹,再去使用 adb 命令。

该命令在 android 安装包 platform-tools 以下。

1. 查询有几个 android 设备连接 adb server


[java] view plaincopyprint?
  1. adb devices 

2. 安装 apk


<path_to_apk>表示你的apk文件路径(如/home/../*.apk)。

[java] view plaincopyprint?
  1. adb install <path_to_apk> 

3. 从设备拷贝文件到本地


<remote>表示手机中的目录或者文件的路径, <local>表示手机中的目录或者文件的路径

[java] view plaincopyprint?
  1. adb pull <remote> <local> 

4. 从设备拷贝文件到本地


<remote>表示手机中的目录或者文件的路径, <local>表示手机中的目录或者文件的路径

[java] view plaincopyprint?
  1. adb push <local> <remote> 

这里须要注意,假设复制目录会把目录中的文件递归复制。

如以下样例,将 /home/mark/mPro/以下的文件夹test拷贝到/sdcard以下的xx文件夹下。

假设不指定xx,那么test以下的东西会乱七八糟的放在sdcard中。

[java] view plaincopyprint?
  1. adb push /home/mark/mPro/test /sdcard/xx 

5. 查看 logcat

[java] view plaincopyprint?

  1. adb logcat 

这样的查看,控制台会把全部打印信息出来。

假设想更加小范围的查看logcat,比方自定义的Tag.


比如以下的样例:

ClientAct是自己定义的TAG,然后在Log.d("TAG", "*****info*****")方法中使用。查看该信息的命令:

[java] view plaincopyprint?
  1. adb logcat -s ClientAct:D 

假设想一次多看几个Tag相应的Logcat。能够这样:

[java] view plaincopyprint?
  1. adb logcat -s ClientAct:D TAG2:D TAG3:D 

6. adb -d、adb -e


假设你如今即启动了手机设备。又启动了模拟器,然而相查看手机的logcat,这两个參数就能够帮助你。

在上面的样例中。在adb后面加上參数-d或者-e就能够查看手机设备或者模拟器打印logcat,可是你仅仅启动一个设备就没有必要加參数啦!!

[java] view plaincopyprint?

  1. -d  直接连接USB设备 
  2. -e  直接连接模拟器 

7. 进入shell


这样,你就能够像在 linux 以下敲你的命令那么爽。可惜 android支持的命令非常少!

[java] view plaincopyprint?

  1. adb shell 

这里提出一个问题:

假如你如今电脑上已经启动两个模拟器、而且还接入了两个android手机。这时怎样操作设备。


或许,你会说关闭全部不须要操作的设备。

呵呵,这的确是一个方法,可是另一个办法。

[java] view plaincopyprint?
  1. adb devices 

获得设备的名称,例如以下:

[java] view plaincopyprint?
  1. emulator-5554   device 
  2. emulator-5556   device 

事实上 emulator-5556 就是该设备的 serial。那麽我们能够使用:

[java] view plaincopyprint?
  1. adb -s 序列号  

来操作。比方:

[java] view plaincopyprint?
  1. adb -s emulator-5556 logcat -s mark:D 


另外,能够使用以下命令获得 serialNum

[java] view plaincopyprint?
  1. adb [-e] 或者[-d] get-serialno 

关于adb的其它命令, sdk 文档的 dev guide 部分具体介绍过 adb.

假设你在使用时忘记这些命令的话,就使用以下的:

[java] view plaincopyprint?

  1. adb help 


关于 adb devices 遇到的问题能够參看:adb:) adb devices


兴许博客继续学习和探讨 adb shell 相关的命令。

adb:) adb push、pull、logcat and etc