本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接
android提供了不少命令行工具,方便我们调试和查看信息.下面是frameworks/base/cmds(android 6.0.1)中的命令.
$ tree cmds -L 1
cmds
├── am
├── appops
├── app_process
├── appwidget
├── backup
├── bmgr
├── bootanimation
├── bu
├── content
├── dpm
├── hid
├── idmap
├── ime
├── input
├── interrupter
├── media
├── pm
├── requestsync
├── screencap
├── settings
├── sm
├── svc
├── telecom
├── uiautomator
└── wm
上面每一个目录都是一个/一组命令.其中svc中包括power, data, wifi, usb, nfc这些开关.
这里只列举一些我平时可能用的到的命令(am, appops, ime, input, pm, screencap, settings, svc, uiautomator, wm)来演示.先从简单的开始.
ime
ime是和输入法相关的,可以通过它来启用/设置输入法,也可以列出手机中已有的输入法.
$ adb shell ime list -s com.sohu.inputmethod.sogou/.SogouIME com.google.android.inputmethod.pinyin/.PinyinIME com.sohu.inputmethod.sogou.xiaomi/.SogouIME
input
input命令可以模拟输入
比如我们想在输入框内输入123
adb shell input text 123
注意,要满足几点,首先要聚焦在输入框,另外最好使用原生输入法
我们也可以模拟系统按键,比如返回键
adb shell input keyevent KEYCODE_BACK
我们也可以模拟点击事件,比如点击x=900,y=150
$ adb shell input tap 900 150
wm
wm命令可以获得分辨率/屏幕密度等
$ adb shell wm size Physical size: 1080x1920 $ adb shell wm density Physical density: 480
还可以修改显示输入图像的比例,不过不知道有什么用,大家可以试试这个命令.
$ wm overscan 10,10,100,100 $ wm overscan reset
试过之后记得执行reset
screencap
screencap用来截屏
$ adb shell screencap -h usage: screencap [-hp] [-d display-id] [FILENAME] -h: this message -p: save the file as a png. -d: specify the display id to capture, default 0. If FILENAME ends with .png it will be saved as a png. If FILENAME is not given, the results will be printed to stdout.
我们可以直接将截屏保存到电脑中
$ adb shell screencap -p | sed 's/\r$//' > screen.png
也可以将截图保存到sd卡中
$ adb shell 'cd sdcard; screencap -p screen.png' $ adb shell ls -l sdcard/screen.png -rw-rw---- root sdcard_rw 197116 2016-06-21 11:49 screen.png
uiautomator
uiautomator可以用来做UI测试,也可以dump出当前UI结构.如果觉得hierarchy不好用,也可以试试这个命令.只不过结果是xml形式,信息也很全.
$ adb shell uiautomator Usage: uiautomator <subcommand> [options] Available subcommands: help: displays help message runtest: executes UI automation tests runtest <class spec> [options] <class spec>: <JARS> < -c <CLASSES> | -e class <CLASSES> > <JARS>: a list of jar files containing test classes and dependencies. If the path is relative, it's assumed to be under /data/local/tmp. Use absolute path if the file is elsewhere. Multiple files can be specified, separated by space. <CLASSES>: a list of test class names to run, separated by comma. To a single method, use TestClass#testMethod format. The -e or -c option may be repeated. This option is not required and if not provided then all the tests in provided jars will be run automatically. options: --nohup: trap SIG_HUP, so test won't terminate even if parent process is terminated, e.g. USB is disconnected. -e debug [true|false]: wait for debugger to connect before starting. -e runner [CLASS]: use specified test runner class instead. If unspecified, framework default runner will be used. -e <NAME> <VALUE>: other name-value pairs to be passed to test classes. May be repeated. -e outputFormat simple | -s: enabled less verbose JUnit style output. dump: creates an XML dump of current UI hierarchy dump [--verbose][file] [--compressed]: dumps compressed layout information. [file]: the location where the dumped XML should be stored, default is /sdcard/window_dump.xml events: prints out accessibility events until terminated
dump当前UI结构
adb shell uiautomator dump sdcard/test.xml
settings
settings可以修改/获取系统设置信息
$ adb shell settings usage: 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.
比如我们想查看android_id
$ adb shell settings get secure android_id 1dbbe170f8995d89
查看wifi状态
$ adb shell settings get global wifi_on 1
查看日期是否是24小时制
$ adb shell settings get system time_12_24 24
svc
svc下面有一组命令,power, data, wifi, usb, nfc,可以控制其开关
例如:
$ svc wifi svc wifi Control the Wi-Fi manager usage: svc wifi [enable|disable] Turn Wi-Fi on or off.
控制移动网络数据开关
$ adb shell svc data disable $ adb shell svc data enable
appops
appops可以查看/修改权限相关信息
$ adb shell appops get com.android.phone VIBRATE: allow; time=+1d3h57m1s111ms ago; duration=+63ms READ_CONTACTS: allow; time=+2h10m59s285ms ago READ_SMS: allow; time=+2h10m49s858ms ago WRITE_SMS: allow; time=+3m46s339ms ago READ_ICC_SMS: allow; time=+2h10m49s859ms ago WRITE_CLIPBOARD: allow; time=+10d2h24m17s819ms ago WAKE_LOCK: allow; time=+5s122ms ago; duration=+14ms READ_EXTERNAL_STORAGE: allow; time=+14h31m4s898ms ago WRITE_EXTERNAL_STORAGE: allow; time=+14h31m4s898ms ago $ adb shell appops get com.android.phone READ_CONTACTS READ_CONTACTS: allow; time=+2h28m33s274ms ago
am和pm这两个命令应该算是最复杂也是最常用的了.我们可以通过am启动页面,发送广播等,可以通过pm列出手机中的app,启用禁用app等.当然有一些是需要root权限的.这里就不再介绍了.
android手机中的命令行工具不只这些,在frameworks/native/cmds中也有一些命令,比如我们常用的dumpsys,在我之前的blog中也介绍过.
了解了这些工具,我们就可以写一些脚本来获取手机和app信息, 省去了log也方便查看和调试.
转贴请保留以下链接
本人blog地址
相关推荐
Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下: 查看前台 Activity命令:adb shell dumpsys activity activities | findstr ...
Monkey是Android SDK提供的一个命令行工具,可以简单方便的发送伪随机的用户事件流,对Android APP做压力(稳定性)测试。主要是为了测试app是否存在无响应和崩溃的情况。
是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。...
4.1.4 Android系统的四大组件 - 22 - 4.2 搭建Android开发环境 - 23 - 4.3 Android常用工具的使用 - 25 - 4.3.1 命令行的使用 - 25 - 4.3.2 Dalvik Debug Monitor Service (DDMS)的使用 - 26 - 4.4 Android 音乐...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
4.1.4 Android系统的四大组件 - 22 - 4.2 搭建Android开发环境 - 23 - 4.3 Android常用工具的使用 - 25 - 4.3.1 命令行的使用 - 25 - 4.3.2 Dalvik Debug Monitor Service (DDMS)的使用 - 26 - 4.4 Android 音乐...
包含所有用于构建 Android 应用程序的命令行工具。最常用、最有用的工具是 adb 实用程序(Android Debug Bridge)。 usb_driver 该目录包含将开发环境连接到支持 Android 的设备(例如 G1 或 Android Dev 1 解锁开发...
CodeCrafts的核心是一个可拖动的侧边栏的悬浮窗,悬浮窗可以折叠或展开,悬浮窗中包含5大块功能分别对应一个TAB, 这5大块功能分别是应用控制、开发者选项、常用功能,常用系统设置和全局功能 应用控制能力将一些日常...
通常,在设计了测试用例并通过评审之后...Monkey是一个命令行工具,可以运行在模拟器里或实际设备中,它是一种轻量级的性能测试工具。它向系统发送伪随机的事件流,实现对正在运行的应用程序进行压力测试。Monkey包括许
0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 ...
0、ANDROID常用类库说明 6 1、ANDROID文件系统与应用程序架构 7 1.1、ANDROID 文件系统 7 1.2、ANDROID应用程序架构 9 2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 ...
使用方便,完全兼容CURL工具最常用的开关,可直接作为命令行工具使用。 支持所有HTTP方法; 支持多段文件上传; 支持简单的HTTP认证。 使用ThreadLocal解决了标准Java中cookies只能全局存储的问题,cookies对于每个...
ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。 基本用法 命令语法 ...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
提供了一个基于对象模型的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java...