Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于在调试时连接本机和手机设备.

adb有很多命令,本文只列出一些常用的命令,要查看所有的adb命令和用法, 可以在命令行中输入adb进行查看.

这些命令都是根据本人在开发过程中的使用进行总结的,以后如果发现其他常用的和有用的命令,会加入本文中.下面是一些常用的命令和用法.

一    adb常用命令


adb start-server

开启adb服务

adb kill-server

终止adb服务

adb devices

列出所有连接到adb的设备, 包括真机和模拟器

adb version

显示adb的版本号

adb install <apk file name>

将指定的app安装到唯一连接到adb的设备上,后边跟的参数为安装包的文件名

adb install -r <apk file name>

安装应用程序, 但是保留原有应用程序的所有数据

adb uninstall <package name>

将包名指定的app从目标设备上卸载,后边跟的参数为应用程序的包名

adb uninstall -k <package name>

将包名指定的app从目标设备上卸载, 但是保留配置文件和缓存

adb push <local> <remote>

将本机的文件或目录拷贝到目标设备的文件系统中

adb pull <remote> [<local>]

将目标设备中的文件或目录拷贝到本机中

adb shell

进入目标设备的Linux Shell环境, 在该环境中可以执行一些Linux命令.如在Linux Shell环境中执行ps可以查看android设备中运行的所有进程.在Linux Shell环境中执行exit可以退出Linux Shell环境

adb shell dumpsys activity

列出目标设备上的activity栈(back stack)和任务(task)的信息, 还有其他组件的一些信息和一些关于进程的信息

adb shell dumpsys packages

列出一些系统信息和所有应用的信息。这个命令的输出很庞大,在三星nexus上的输出有12000多行。这些信息

都非常详细,包括Features,Activity Resolver Table等。以下是输出的主要信息:

[plain] view plain copy
 
  1. <span style="font-family:SimSun;font-size:14px;">Verifiers:
  2. ...
  3. Libraries:
  4. ...
  5. Features:
  6. ...
  7. Activity Resolver Table:
  8. Full MIME Types:
  9. ...
  10. MIME Typed Actions:
  11. ...
  12. Receiver Resolver Table:
  13. Full MIME Types:
  14. ...
  15. Non-Data Actions:
  16. ...
  17. Service Resolver Table:
  18. Full MIME Types:
  19. ...
  20. Base MIME Types:
  21. ...
  22. Non-Data Actions:
  23. ...
  24. MIME Typed Actions:
  25. ...
  26. Preferred Activities User 0:
  27. ...
  28. Permissions:
  29. ...
  30. Registered ContentProviders:
  31. ...
  32. ContentProvider Authorities:
  33. ...
  34. Shared users:
  35. ...
  36. Settings parse messages:
  37. Read completed successfully: 149 packages, 12 shared uids
  38. ...
  39. Package warning messages:
  40. ...</span>

adb shell pm list permissions

列出目标平台上的所有权限

adb shell pm list packages

列出目标设备上安装的所有app的包名

adb shell pm list features

列出目标设备上的所有feature

使用adb命令启动一个Activity

[plain] view plain copy
  1. <span style="font-family:SimSun;font-size:14px;">adb shell am start PACKAGE_NAME/ACTIVITY_IN_PACKAGE
  2. adb shell am start PACKAGE_NAME/FULLY_QUALIFIED_ACTIVITY
  3. # example
  4. adb shell am start -n com.growingwiththeweb.example/.MainActivity
  5. adb shell am start -n com.growingwiththeweb.example/com.growingwiththeweb.example.MainActivity</span>

屏幕截图, 并使用perl命令保存截图
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png

解锁屏幕


adb shell input keyevent 82

注:
 所有以"adb shell"开头的命令,都可以先执行adb shell命令进入目标设备的Linux Shell环境, 然后在目标设备的Linux
Shell中再执行"adb shell"之后的命令.如adb shell dumpsys activity, 可以先执行adb shell, 然后再Linux
Shell中再执行dumpsys activity



二  
 adb命令中用于确定目标设备的参数




adb命令有三个重要的参数,当本机上连接了两个或以上的android设备时,这三个参数就有用武之地了:


-d
 说明adb命令的目标设备是唯一连接到adb的真机

-e
 说明adb命令的目标设备是唯一连接到adb的模拟器

-s  <specific
device> 指定adb命令的目标设备


以下为这三个参数的应用举例:


adb -d
shell

进入唯一连接到adb的真机的Linux
Shell环境


adb -e install
weibo.apk

将weibo.apk安装到唯一连接到adb的模拟器上


adb -s emulator-5554 push
weibo.apk /sdcard/weibo.apk

将weibo.apk文件复制到emulator-5554的/sdcard/weibo.apk位置

注:  根据我自己的测试,当用-d -e 或者-s
指定目标设备时,命令有时会执行的比较慢,不知道什么原因



三  
 使用adb命令行的优势




尽管现在的用户操作以图形界面为主,但是在一些情况下, 命令行具有图形界面没有的优势, 尤其是对于开发人员,
命令行能提高效率.下面举例说明:

1
 快速卸载app




在android开发过程中,
在把程序发布到手机上进行测试时,
有时必须要卸载以前的版本以删除原来的数据,此时只要在命令行中输入


adb uninstall
<包名>

即可卸载, 而在手机上卸载,
要经过如下步骤:


设置 --> 应用程序 --> 管理应用程序
--> 在列表中找到要卸载的程序 --> 点击要卸载的应用程序 --> 卸载


2
 快速删除目录(文件夹)




如果程序在sd卡上创建了目录MyApp,在该目录中有数据库和一些其他文件,在将程序发布到手机上测试时,
需要删除原来创建的目录再重新创建.这时只需要执行以下命令:


adb shell
cd
/mnt/sdcard
rm -r MyApp
这样的话就不必再在文件浏览器中寻找这个目录并删除它 . 
 

Android开发中adb命令的常用方法的更多相关文章

  1. Android开发中Ant命令编译和APK签名的一些心得

    本文章麦子学院跟小伙伴们详细的分享一下关于Android Ant命令行编译和APK签名详解一些实现方法,这是一个朋友在自己做安卓开发时写的,希望对大家会有所帮助呀. 最近在做Android开发时,需要 ...

  2. Android开发——常用ADB命令的使用

    ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备.它的功能如下: 运行设备的sh ...

  3. Android开发笔记---adb命令

    adb命令的使用: adb shell命令:pm list packages -f:显示包名称及相应的APK文件

  4. 【转】Android开发中adb启动失败adb连接异常的解决办法 offline

    原文网址:http://www.cnblogs.com/yejiurui/p/4173521.html 一.情况描述: 我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 ...

  5. Android开发中adb启动失败adb连接异常的解决办法

      一.情况描述:   我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 adb connect异常 比如会出现下面这样 : [2014-12-18 16:18:26 ...

  6. Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

    Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...

  7. 如何在Android开发中让你的代码更有效率

    最近看了Google IO 2012年的一个视频,名字叫做Doing More With Less: Being a Good Android Citizen,主要是讲如何用少少的几句代码来改善And ...

  8. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

  9. 【转】android开发中关于模拟器emulation的常见问题

    [转]android开发中关于模拟器emulation的常见问题 Trouble: 无法启动android模拟器,提示 XDM authorization key matches an existin ...

随机推荐

  1. Chrome 好玩的插件

    1 Lastpass : 用来把往各个网址的密码云端存储. 2 EditThisCookie  : 查看网页的Cookie 3 Postman Interceptor :  用来配合Postman 进 ...

  2. QTableView中使用Delegate方式来实现对特定列的文本进行换行

    问题:由于表格的一个列中,有个别文本过长,默认情况下,QTableView不支持对某列的文本换行,所以需要通过Delegate方式来实现这样的效果 头文件的Delegate #pragma once ...

  3. 代理Proxy初探

    Proxy,也就是"代理"了. 意思就是.你不用去做,别人取代你去处理.比方说:租房.你仅仅要找到"我爱我家"中介,把全部的事情交给他们去代劳, "我 ...

  4. 【转】 mysql反引号的使用(防冲突)

    转载地址:http://blog.itechol.com/space.php?uid=33&do=blog&id=6681 1.mysql语句中 反引号 [`]作用: 避免表明.字段名 ...

  5. ios中网络请求缓存

    #import <Foundation/Foundation.h> #import "ASIFormDataRequest.h" @protocol NetWorkde ...

  6. PHP-Windows下搭建PHP-MSF环境【原创】

    环境: Windows7 64位 php-7.0.19 php-swoole-1.9.15 php-yac-2.0.2 php-redis-3.1.2 php-mongodb-1.2.10 遇坑: C ...

  7. 听听各位对Ubuntu的UI的看法

    2012-7-15 15:46    最近升级到Ubuntu 12.4 .发现其界面效果真的时越来越炫啦.我就在想,你Ubuntu你图什么啊, 你是以个Linux系统,你的重点在于让系统运行更稳定,更 ...

  8. scipy稀疏矩阵

    那些零元素数目远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称为稀疏矩阵(sparse matrix). 不同类型的矩阵有不同的压缩方式,比如对角矩阵只存储对角元素即可.要想充分压缩,就要找到 ...

  9. 【LeetCode】215. Kth Largest Element in an Array (2 solutions)

    Kth Largest Element in an Array Find the kth largest element in an unsorted array. Note that it is t ...

  10. 【LeetCode】203. Remove Linked List Elements

    Remove Linked List Elements Remove all elements from a linked list of integers that have value val. ...