Android开发之ADB命令使用技巧

作者: 冰鉴IT | 来源:发表于2016-11-23 17:05 被阅读656次

    学习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文档或帮助信息来进行了解.

    相关文章

      网友评论

      本文标题:Android开发之ADB命令使用技巧

      本文链接:https://www.haomeiwen.com/subject/jfyvpttx.html