zoukankan      html  css  js  c++  java
  • Android “Command” from work summary

    总结一下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

  • 相关阅读:
    电脑使用优化工具方法
    算法练习的网站
    golang 实现链表反转打印
    刷过的算法题
    Symfony2框架实战教程——第六天#Alt:验证码
    Symfony2框架实战教程——第六天:模板重载与翻译
    [Symfony2] 在命令或控制器里跑另一个命令的N种方法
    Symfony2框架实战教程——第五天:KnpMenuBundle创建菜单项+结合Twitter Boostrap3
    Symfony2框架实战教程——第四天#Alt:用FOSUserBundle实现用户注册和登录
    Symfony2框架实战教程——第四天:用HWIOAuthBundle实现第三方登录
  • 原文地址:https://www.cnblogs.com/zeo-to-one/p/6616422.html
Copyright © 2011-2022 走看看