总结一下Android中的命令。

一、adb 与 shell

ADB的全称为Android Debug Bridge(调试桥)。是一个适用命令行工具,用来与模拟器实例或链接的Android设备进行通信。它可为各种设备操作提供便利,如安装调试应用等。可以在android_sdk/platform-tools/ 中找到adb工具。

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。操作系统运行的本身并不需要人来控制,但是人需要告诉操作系统做什么,这个交互程序就被称为shell。实际上shell是一个命令解释器,它解释用户输入的命令并且把它们送到内核。

注:adb 只起桥接作用 ; adb shell 将设备挂载到终端。

二、adb 组成及工作方式

ADB作为一个客户端-服务器端(两部分:ADB Server和ADB Client;ADB Server和ADB Daemon)包括三组件:

1.客户端(adb client),该组件发送命令。客户端在PC上运行,可以通过发出adb命令从命令行终端调用客户端(其实就是shell,用来发送命令给Server);

2.服务器端(adb server),该组件管理客户端和后台程序之间的通信。服务器在PC上作为后台进程运行;

3.后台程序(adb deamon),该组件在设备上运行命令。后台程序在每个模拟器或设备实例作为后台进程运行。也就是adbd (守护进程)。

注:启动adb client时,此时client首先检查是否有有已运行的adb 服务器进程。如果没有,它将启动server进程。当服务器启动时,它与本地TCP端口5037绑定,并侦听从adb client发送的命令(所有的adb客户端均使用呢端口5037与adb服务器通信)。然后,服务器设置与所有运行的模拟器/设备实例的连接。它通过扫描5555-5585(模拟器/设备使用的范围)的奇数号端口查找模拟器/设备实例。服务器一旦发现adb后台程序,它将设置与该端口的连接。请注意,每个模拟器/设备实例将获取一对按顺序排列的端口(用于控制台连接的偶数号端口和用于adb连接的奇数号端口)。

client发送的命令分为三种:1.adb server和adb help不经过server处理就能够成功的;

    2.adb devices和server通讯但是不需要和手机通讯的命令;

    3.需要deamon进行处理的命令;

三、adb 命令

全局命令:adb [-d | -e |-s serial_number]  command

-d 将adb命令发送至唯一连接的USB设备;

-e 将adb命令发送至唯一运行的模拟器实例;

-s serial_number 将adb命令发送至以其adb分配的序列号命名的特定模拟器/设备实例

常规命令:

adb help 输出支持的adb命令的列表

adb version 输出adb的版本号

adb devices 输出所有连接的模拟器和设备实例的列表

网络和端口连接命令:

adb connect device_ip_address 通过设备ip地址进行连接(wifi连接设备)

adb disconnect device_ip_address 断开wifi连接的设备

注:通过网络连接设备时,PC与设备需在同一局域网内,首次连接时需要(执行adb tcpip 5555)设置目标设备以侦听端口5555上的TCP/IP连接。

文件传输与应用安装命令:

adb push local_remote 从PC端将指定文件复制到模拟器/设备实例

adb pull remote_local 从模拟器/设备实例将指定文件复制到PC端

adb install [-r]  path_to_apk 将应用安装到设备上,-r 表重新安装(强制性)

脚本命令:

adb wait-for-device  阻止执行,直至设备处于在线状态

adb get-serialno 获取设备的ID和序列号

adb get-state 输出模拟器/设备实例的adb状态

adb reboot [bootloader | recovery | fastboot] 重启设备[重启引导模式、恢复模式、fastboot模式]

adb remount 将system分区重新挂载为可读写分区

adb root/unroot 获取root权限/取消root权限

调试命令:

adb logcat 将日志数据输出到屏幕(详解)

adb bugreport 将dumsys/dumpstate/logcat数据输出到屏幕,以用于报告错误。

服务器命令:

adb start-server 检查adb服务器进程是否在运行,如果未运行则启动它

adb kill-server 终止adb服务器进程

四、adb shell 命令

  • shell 命令二进制文件存储在模拟器/设备的文件系统中,路径为/system/bin/ ,可以通过cd命令进行查看。(使用Ctrl键+D 或输入 exit 退出shell)
  • android中的shell命令为精简的toolbox扩展工具,6.0默认的是toybox。(最强大的busybox工具)

1.在adb shell中,可以使用 Activity Manager (am) 工具发出命令以执行各种系统操作,如启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性及其他操作。

调用Activity Manager (am)命令 ,格式:am command

adb shell am start –n com.android.settings/.Settings 打开设置界面

adb shell am kill-all 终止所有后台进程

adb shell am force-stop package 强制关闭应用程序

2.在adb shell中,可以使用软件包管理器 (pm) 工具发出命令,以对设备上安装的应用软件包进行操作和查询。

调用软件包管理器 (pm)命令,格式:pm command

adb shell pm list package [option] filter 输出所有应用包名

adb shell pm list features 打印系统所有功能,列出所有硬件相关信息

adb shell pm install path_to_apk 安装应用( path_to_apk为设备路径)

adb shell pm dump package 打印指包名的系统状态

adb shell pm clear package_name 清除应用缓存

注:option中的 [-f(路径)|-s(系统应用)|-3(三方应用)|-i(应用安装程序)];filter表示输出含有该字符的包名

3.在adb shell中,可以使用dumpsys,dumpstate等命令,查询设备和系统相关的信息。

  • 获取系统服务信息(dumpsys)命令  详情>>

adb shell dumpsys –l 查看系统所有的服务信息(adb shell service list )

注:较为常用的服务:activity/package/cpuinfo/meminfo/battery/netstats  (查看帮助 -h)

  • 获取系统信息命令:(详情查看android adb from work -one/two/three)

adb shell getevent 获取按键信息
adb shell getprop 获取系统属性(实时的属性)
adb shell setprop 设置系统属性
adb shell wm 获取屏幕分辨率
adb shell df 列出分区列表
adb shell du 查询文件或目录的磁盘使用空间
adb shell ps 查看进程信息
adb shell free -m 以MB为单位查看系统内存使用情况
adb shell top 获取CPU/系统进程使用情况
adb shell vmstat 查看系统各种资源之间相关性能简要信息
adb shell dumpstate 系统信息状态(需root权限)

  • 列出当前系统可设置的属性命令:adb shell settings list system

    settings [--user NUM] get namespace key
    settings [--user NUM] put namespace key value
    settings [--user NUM] delete namespace key
    settings [--user NUM] list namespace

'namespace' is one of {system, secure, global}, case-insensitive
If '--user NUM' is not given, the operations are performed on the owner user.

*android5.0版本无 settings [--user NUM] list namespace

4.在adb shell中,使用命令对设备中的文件进行操作

文件操作相关命令:(adb shell 下操作)
cd 进入目录(cd ..返回上一层目录)
pwd 查看当前所在位置
ls [-a |-l |-s] 列出目录内容(列出所有文件包括隐藏文件、列出文件详情、列出文件大小)
mkdir 创建目录
rmdir 删除目录(只能删除空目录)
touch 创建文件
rm 删除文件(rm –r 删除包含文件的目录)
mv 剪切/重命名文件(重命名 mv old-name.txt new-name.txt)
cp 复制文件
dd 复制文件(if=源文件 of=目标文件)
cat 查看文件内容
find 搜索匹配条件的文件
grep 搜索匹配条件的行
chmod 文件权限修改(777 读、写、执行)

注:1.mkdir –p 1/2/3/4 创建多级目录(递归创建目录)

2.grep与window下的findstr用法一致,可以使用正则表达式;find使用通配符(* ? [])

3.经常使用cat命令查看内容的目录有:/proc/meminfo ; /proc/cpuinfo ; /proc/iomem ; /system/build.prop(构建时的属性)/country/easyimage_code,/country/prop.overlay

5.在adb shell中,使用命令对系统进行测试。

模拟用户操作命令:adb shell input [<source>] <command> [<arg>...]

The sources are:
  mouse keyboard joystick touchnavigation touchpad
  trackball stylus dpad touchscreen gamepad

The commands and default sources are:
  text <string> (Default: touchscreen)
  keyevent [--longpress] <key code number or name> ... (Default: keyboard)
  tap <x> <y> (Default: touchscreen)
  swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
  press (Default: trackball)
  roll <dx> <dy> (Default: trackball)

测试用途相关命令:

adb shell ifconfig 查看设备的IP地址
adb shell iftop 列出网络传输包情况
adb shell netstat 显示网络相关信息
adb shell ping 用于测试网络连接量
adb shell screencap –p path_picture-name 屏幕截图
adb shell screenrecord [option] path_video-name 屏幕录像(支持4.4以上)
adb shell monkey 执行Monkey命令
adb shell uiautomator 执行UIAutomator脚本

注:运行测试脚本:adb shell uiautomator runtest <name>.jar --nohup -c <class> -e <key> <value>

-e <key> <value> 以键-值的形式进行参数传递(测试用例中通过Bundle来接受参数)
-c <packagename>.<classname> 测试一个类下的所有用例
-c <packagename>.<classname>#<methonname> 测试某个特定函数或方法
可以指定多个-c ,若不指定,则运行整个jar包下的所有用例
--nohup 脚本的运行就不依赖于启动进程(parent process ),即使在 parent process 终止了(例如拔掉USB线),脚本的运行也不受影响。

详情查看安卓官网developer.android.com

Adb用法大全>>>>>>>>>>>>>>>>>>>>>>

Testing Apps on Android

Android “Command” from work summary的更多相关文章

  1. The android command is deprecated

    新版的SDK tools中的android命令已经不支持 android create project,用起来很不顺手. The "android" command is depr ...

  2. adb错误:Failed to execute android command 'adb devices'.

    好吧,我是用的phonegap3.0开发的,很简单,安装的时候一句phonegap run android –device就可以了(-device参数非必要,我是为了不跑模拟器,加上此参数限制只跑到设 ...

  3. cordova build android Command failed with exit code EACCES

    问题: 执行cordova build android 出现输出如下,编译不成功. ANDROID_HOME=/Users/huangenai/Library/Android/sdkJAVA_HOME ...

  4. "Error: ANDROID_HOME is not set and "android" command not in your PATH. You must fulfill at least one of these conditions.".

    设置环境变量 set ANDROID_HOME=C:\\android-sdk-windows set PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\ ...

  5. ANDROID_HOME is not set and "android" command not in your PATH解决

    使用nodejs安装cordova后在项目里面添加平台时出现错误: 原因就是没有配环境变量 使用phonegap开发不仅要配JDK环境变量,还要配ADT环境变量,出现这个错误很显示就是没配ADT环境变 ...

  6. Android UiAutomator

    UiAutomator是一个做UI测试的自动化框架.<Android自动化测试框架>中已有详细介绍,这里就不再累赘了. 一.首先了解自动化测试流程 自动化需求分析 测试用例设计 自动化框架 ...

  7. [Android Tips] 25. ADB Command Note

    copy from https://github.com/operando/Android-Command-Note Android Command Note Logcat adb logcat -v ...

  8. Android调试桥-Android Debug Birdge详解

    原文:http://android.eoe.cn/topic/summary Android调试桥-Android Debug Birdge Android调试桥(adb)是一个多功能的命令行功具,它 ...

  9. xamarin android,UWP 网络类型和IP地址

    App开发经常要判断网络连通情况,并判断网络类型,获取网络IP.xamarin中可以使用Dependencies提供各平台下的方法,现把各平台代码记录如下: using System; using S ...

随机推荐

  1. LinkedStack的底层实现

    package zy813ture; import java.util.EmptyStackException; public class MyLinkedStack1 { private Node ...

  2. ELK平台搭建(上)

    一.目的 为指导在Centos6.8系统下搭建标准ELK平台的工作. 二.定义 Elasticsearch Logstash Kibana结合Redis协同工作. 三.适用范围 适用于运营维护组运维工 ...

  3. C#Windows 服务的安装说明

    安装/卸载的步骤: 1 . .点击 开始,运行中输入cmd,获取命令提示符win7需要已管理员的身份启动,否则无法安装 2. 输入 : cd C:\Windows\Microsoft.NET\Fram ...

  4. Python常用模块之time模块

    python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 ...

  5. 4-24日 collections模块 random模块 time模块 sys模块 os模块

    1, collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdi ...

  6. python 的基础 学习 11天 作业题

    1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. def func1(argv): li = [] for i in r ...

  7. 读书笔记 Facebook在移动端都干了啥,居然让用户爱上广告

    文章来源:http://news.cnblogs.com/n/513297/ Facebook武器: Facebook 的武器只有一个:让广告主基于目标用户群投放个性化的精准广告.基于高质量的广告内容 ...

  8. mysql 架构 ~ MGR 与PXC的对比

    一 简介 MGR和PXC的对比 二  WriteSet1 定义 是组件对于写节点应用事务生成binlog的再封装,用来验证其他节点的事务冲突 PXC构成key db_table_组件值data bin ...

  9. mysql 查询优化 ~ explain与索引失效

    一 explain  1 扫描行数根据的是表的统计元数据  2 索引的元数据具体指的就是show index from查到的索引的区分度,索引的区分度越高越好   3 表的元数据是定期收集,所以可能不 ...

  10. Maven 分模块,启动父工程时异常

    1.1 运行方式 Maven方式:命令的 方式1:运行父工程.父工程将各个子模块聚合到一起.将ssh-web打war包发布到tomcat 方式2:直接运行web工程 其他方式:传统的,   部署到to ...