总结一下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. Food Log with Speech Recognition and NLP

    1. 分词 word segmentation 国内有jieba 分词 2. Named Entity Recognition 训练自己的Model How can I train my own NE ...

  2. day 7 - 1 集合、copy及基础数据类型汇总

    集合:{},可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复.(不重要)集合的书写 set1 = set({1,2,3}) #set2 = {1,2,3,[2,3],{'name':' ...

  3. pythonの信号量

    #!/usr/bin/env python import threading,time def run(n): # 申请锁 semaphore.acquire() time.sleep(1) prin ...

  4. android 控件设置透明度

    问题:java文件中引用组件设置透明度:mGuideLayout.getBackground().setAlpha(125); 一直报null 修改办法:对应的布局文件中添加 android:back ...

  5. About me & OI这一年

    1 最近碰到一些 OIers 问我学 OI 的经历 回忆了一下,我做的第一道题是A+B Problem,时间:2018年2月15日 呀,正好一年了 2 我是来自 HB 的 OIer 一枚 现在高一,就 ...

  6. xht37的码风

    写在前面 众所周知,在 Dev-C++ 上有一个代码格式化的功能,快捷键Ctrl+Shift+A 我的码风致力于写出格式化后毫无变化的代码,这被认为是标准代码 同时,对不可格式化的部分(如空格),我同 ...

  7. Keepalived+LVS-DR+Nginx高可用故障切换模式

    LVS架构中,不管是NAT模式还是DR模式,当后端的RS宕掉后,调度器依然会把请求转发到宕掉的RS上,这样的结果并不是我们想要的.其实,keepalived就可以解决问题,它不仅仅有高可用的功能,还有 ...

  8. Python 编程核心知识体系(REF)

    Python 编程核心知识体系: https://woaielf.github.io/2017/06/13/python3-all/ https://woaielf.github.io/page2/

  9. MySQL之路 ——1、安装跳坑

    最近几天准备写一个JavaWeb的简单登录,注册试下手:所谓”工欲善其事必先利其器“,然后数据库方面的话,考虑用MySQL.在安装MySQL过程中,碰到了一些问题(大同小异),记录在此,诸君共勉. 1 ...

  10. VS2015 发布常见问题

    1. 发布时预编译 所示如下: 遇到的问题 使用abp时引用了System.Collections.Immutable.dll,但是项目编译一直出错, 排查: 查看项目引用,可看到System.Col ...