Android进阶Android开发Android技术知识

Android开发之ADB命令使用技巧

2016-11-23  本文已影响656人  冰鉴IT

学习Android的小伙伴们一定都听过ADB吧,如果没有听过也没有关系,下面我将介绍ADB及一些ADB命令的使用技巧.

ADB的全称是Android Debug Bridge,直接翻译过来就是Android调试桥,它就像一个纽带,可以让我们在电脑上操作手机,我们可以在电脑上对其发送一些指令来调试它.

在开始之前,我们还要做一些准备工作:

1 . 确保你电脑安装有Android SDK

2 . 将SDK下的platform-tools目录和tools目录的路径加入到系统环境变量中

这样做主要是可以让我们在任何目录下打开命令行都可以进入adb.其中platform-tools目录下有我们需要的adb,tools目录下有我们需要的android命令.

3 . 确保你手机打开了usb调试,并且已经通过数据线将手机连接到了电脑.

准备好上面的步骤以后,我们就可以开始啦.

一、进入ADB

由于我们已经配置了环境变量,所以我们可以在任意目录下打开命令行进入adb.

首先,打开命令提示符,打开方法有n多种.最慢的方式是在应用程序中找到命令提示符程序打开.或者Win+r组合键打开运行窗口,输入cmd回车即可.我一般是在任意目录下,同时按住Ctrl+Shift键,鼠标右键,选择在此处打开命令窗口.下面开始正式的命令.

1 . 输入adb version查看adb版本,输出信息如下:

Android Debug Bridge version 1.0.36
Revision 84e3321d5db3-android

2 . 输入adb shell进入shell,输出:

adb server version (31) doesn't match this client (36); killing...
* daemon started successfully *
shell@omega:/ $

上面是我之前已经连接过shell,所以它会先杀死之前的进程,然后开始开启守护进程,成功后就会出现$符号,要是玩过Linux的小伙伴一定对这个不陌生,Android其实就是基于Linux开发的,所以我们可以在这下面执行一些Linux的常见shell命令.

3 . 进入shell后输入ls | grep "data",包含data的目录,输出如下:

shell@omega:/ $ ls|grep  "data"
data
nvdata

二、ADB常用命令

首先我们先介绍一个常用命令android list targets,他会列出你SDK中已经存在的全部Android平台,我的志向结果如下:

Available Android targets:
----------
id: 1 or "android-7"
     Name: Android 2.1
     Type: Platform
     API level: 7
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
 Tag/ABIs : default/armeabi
----------
id: 2 or "android-8"
     Name: Android 2.2
     Type: Platform
     API level: 8
     Revision: 3
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
 Tag/ABIs : default/armeabi
----------
id: 3 or "android-10"
     Name: Android 2.3.3
     Type: Platform
     API level: 10
     Revision: 2
     Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854
 Tag/ABIs : default/armeabi
----------

由于有很多,此处我只是只是展示出一部分.

1 . 安装Apk程序之install命令

命令格式: adb install -r 应用程序.apk

adb install -r ku.apk
[100%] /data/local/tmp/ku.apk
        pkg: /data/local/tmp/ku.apk
Success

这里的-r参数是指如果应用已存在则替换安装,更多的参数请参考adb help.

2 . 安装Apk程序之push命令

命令格式: adb push <local><remote>

adb push ku.apk  /system/app/

以上的两种方法都可以安装Apk,但是也有所不同.
adb install命令是将apk程序安装到data/data目录下,作为普通的用户应用程序.而adb push命令是将一个文件写入手机的存储系统.只要我们拥有相应的权限,我们就可以将任何apk放到任意目录下

3 . 获取文件之pull命令

命令格式:adb pull <remote><local>

adb pull /system/app/ file/

4 . 查看Log之logcat命令

命令格式: logcat
该命令要进入shell后执行

logcat | grep "abc"

上面的命令就会查看log信息,并且只显示包含abc的log信息

5 . 查看系统盘符之df命令

adb shell df

执行结果

Filesystem               Size     Used     Free   Blksize   
/dev                     1.3G   132.0K     1.3G   4096      
/var                     1.3G     0.0K     1.3G   4096      
/sys/fs/cgroup           1.3G     0.0K     1.3G   4096      
/sys/fs/cgroup/memory: Permission denied                    
/mnt                     1.3G     0.0K     1.3G   4096      
/sys/fs/cgroup           1.3G     0.0K     1.3G   4096      
/sys/fs/cgroup/memory: Permission denied                    
/system                  2.4G     2.0G   380.2M   4096      
/cache                 418.4M   744.0K   417.7M   4096      
/protect_f               3.9M    68.0K     3.8M   4096      
/protect_s               9.2M   100.0K     9.1M   4096      
/nvdata                 27.5M     5.8M    21.7M   4096      
/nvcfg                   3.9M   136.0K     3.7M   4096      
/cust                  501.7M   444.1M    57.6M   4096      
/storage                 1.3G     0.0K     1.3G   4096      
/data                   53.6G    12.4G    41.3G   4096      
/mnt/runtime/default/emulated: Permission denied            
/storage/emulated       53.6G    12.4G    41.3G   4096      
/mnt/runtime/read/emulated: Permission denied               
/mnt/runtime/write/emulated: Permission denied              

6 . 输出所有已安装的应用

adb shell pm list packages -f

输出部分信息:

package:/data/app/com.miles.appmanage-1/base.apk=com.miles.appmanage
package:/data/app/com.codekong.sensordemo-1/base.apk=com.codekong.sensordemo
package:/system/app/Gba/Gba.apk=com.mediatek.gba
package:/system/priv-app/ImsService/ImsService.apk=com.mediatek.ims
package:/data/app/com.codekong.bluetoothdemo-1/base.apk=com.codekong.bluetoothdemo
package:/data/app/com.ali.money.shield-2/base.apk=com.ali.money.shield

7 . 模拟按键输入

命令格式: adb shell input keyevent 按键对应Code
模拟按下home

adb shell input keyevent 3

常见的按键的Code

按键名称 Code
menu 82
home 3
up 19
down 20
left 21
right 22
enter 66
back 4

8 . 模拟滑动输入
命令格式: adb shell input touchscreen <command><x1><y1><x2><y2>

adb shell input touchscreen swipe 18 655 18 0

9 . 列出运行状态之dumpsys命令

adb shell dumpsys activity activities|grep "miui"

运行结果

1|shell@cancro:/ $ dumpsys activity activities|grep "miui"
      userId=0 effectiveUid=1000 mCallingUid=u0a20 mCallingPackage=com.miui.home
          launchedFromUid=10020 launchedFromPackage=com.miui.home userId=0
    * TaskRecord{42e9cc8 #4750 A=com.miui.home U=0 sz=1}
      affinity=com.miui.home
      intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800000 cmp=com.miui.home/.launcher.Launcher}
      realActivity=com.miui.home/.launcher.Launcher
      Activities=[ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}]
      * Hist #0: ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}
          packageName=com.miui.home processName=com.miui.home
          app=ProcessRecord{99d5d34 6198:com.miui.home/u0a20}
          Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800000 cmp=com.miui.home/.launcher.Launcher }
          frontOfTask=true task=TaskRecord{42e9cc8 #4750 A=com.miui.home U=0 sz=1}
          taskAffinity=com.miui.home
          realActivity=com.miui.home/.launcher.Launcher
          dataDir=/data/user/0/com.miui.home
      TaskRecord{42e9cc8 #4750 A=com.miui.home U=0 sz=1}
        Run #0: ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}
    mLastPausedActivity: ActivityRecord{80963ff u0 com.miui.home/.launcher.Launcher t4750}

上面的命令可以列出Activity的运行状态,当然你也可以像上面一样使用grep命令过滤出你想要的信息,这个命令还可以查看更多信息,这个就要查看API文档了.

10 . 启动一个activity之am命令

命令格式: adb shell am start 包名/包名+类名

am命令的功能很强大,其它用法请查看API文档

11 . 录制屏幕之screenrecord命令

命令格式: adb shell screenrecord <存储位置>

adb shell screenrecord /sdcard/demo.mp4

12 . 重新启动之reboot命令

adb reboot

以上就是我们开发中常用的一些ADB命令,更多好用的ADB命令还需要我们多看API文档或帮助信息来进行了解.

上一篇下一篇

猜你喜欢

热点阅读