Android开发之ADB命令使用技巧

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,544评论 25 707
  • 可选类型 ------- Optional swift中引入了可选类型————如果一个常量或变量,它的值可...
    311ca7a27754阅读 3,419评论 0 0
  • 走向一座院墙, 回想到长安的梦, 有谁会拾起, 那秋日的一曲乡音。 回首曾经看过的一路风景, 回想曾经那种丝绸的温...
    硕果蕾蕾阅读 238评论 0 1
  • 大学快毕业的时候,同学们的工作基本上已经确定,大家都面临着租房的问题。那个时候,我已经公司实习,于是每天下班后都要...
    小豌豆23阅读 670评论 2 9
  • 定义一个int类型的变量,在上面加上如下注解: 调用View中getId()方法设置ID: 通过自定义的ID获取组件:
    Speronie阅读 2,095评论 0 1