`
su1216
  • 浏览: 670919 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
深入入门正则表达式(jav...
浏览量:71915
E60283d7-4822-3dfb-9de4-f2377e30189c
android手机的安全问...
浏览量:128760
社区版块
存档分类
最新评论

android系统提供的常用命令行工具

阅读更多

本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接

 

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地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

1
0
分享到:
评论

相关推荐

    Android SDK中的常用命令行工具

    在这个环境中,ADB(Android Debug Bridge)是一个至关重要的命令行工具,它提供了与Android设备进行通信的能力,无论是物理设备还是模拟器。在本文中,我们将深入探讨ADB的两个主要功能:启动和关闭ADB服务,以及...

    Android之常用命令和工具

    ### Android之常用命令和工具详解 #### 一、获取 APK 的包名方法 在 Android 开发过程中,有时候我们需要快速地获取某个 APK 文件的包名,这有助于进行更深入的应用调试和分析工作。以下将详细介绍几种获取 APK 包...

    Android_SDK中常用命令行工具

    在Android开发过程中,Android SDK提供了一系列的命令行工具,这些工具极大地增强了开发者对设备和应用的控制能力。本文主要介绍几个常用的命令行工具及其用法。 首先,ADB(Android Debug Bridge)是Android SDK中...

    命令行创建Android项目

    以下详细介绍了通过命令行创建Android项目的步骤和常用命令。 首先,确保你已经安装了Java Development Kit (JDK),因为Android开发基于Java。接着,你需要下载并安装Android SDK,这是一个包含了开发、调试和发布...

    android系统签名工具

    1. **Keytool**:这是Java SDK附带的一个命令行工具,用于生成密钥对。基本语法是`keytool -genkey -v -keystore keystore_file -alias alias_name -keyalg RSA -keysize 2048 -validity validity_period`,其中...

    android系统使用busybox工具

    BusyBox提供了大量的命令行工具,可以用来执行各种任务。例如,使用`ifconfig`命令来查看或配置网络接口;使用`netstat`命令来查看网络连接状态;使用`ps`命令来查看正在运行的进程等。这些工具极大地丰富了Android...

    Android与命令行.docx

    3. **常用Android命令行工具** - `adb (Android Debug Bridge)`:用于连接物理设备或模拟器,执行文件传输、设备状态查询、进程管理等操作。 - `ddms (Dalvik Debug Monitor Service)`:用于内存分析、性能监视和...

    Android系统开发入门

    - **adb (Android Debug Bridge)**: 一种命令行工具,用于模拟器或真实设备上的调试工作,比如安装应用、启动应用等。 - **android 工具**: 用于创建和管理Android Virtual Devices (AVDs)。 - **AIDL (Android ...

    Android上的gcc/g++编译环境

    首先,`BusyBox_Pro_Linux_10.9.2.Andriod.CHS.AnZhi.T.apk`是BusyBox的Android版本,它是一个包含许多常用Linux命令行工具的集合,对于在没有完整Linux环境的Android系统上运行Linux命令非常有用。安装此应用后,...

    android apk 签名工具 通过该工具可替换系统APK

    `apksigner`是Google官方推出的一个命令行工具,它包含在Android SDK Build-Tools组件中。这个工具提供了强大的功能,包括验证APK的签名、对APK进行签名以及修复签名。以下是`apksigner`的一些主要功能和使用步骤: ...

    curl for android

    `curl for android` 是一个关于在Android设备上使用curl命令行工具的主题。curl是一个流行的开源工具,用于在命令行环境中传输数据,支持多种网络协议,如HTTP、HTTPS、FTP等。在Android系统中,由于其默认并不包含...

    Android开发系统shell常用脚本

    - **Logcat**:Android系统日志工具,用于查看应用程序和系统服务的日志信息。 - **输出重定向**:`&gt;` 和 `&gt;&gt;` 分别用于覆盖和追加输出到文件,方便收集和分析脚本执行过程中的信息。 8. **调试与错误处理** - *...

    android-ext4打包工具

    在Android系统中,EXT4是一种常用的文件系统,它在Linux内核中被广泛采用,包括在Android设备上作为主要的存储格式。EXT4是EXT3的升级版,提供了更高的性能和更大的文件系统大小支持。本篇文章将深入探讨“android-...

    Android常用开发工具

    5. **Android Debug Bridge (ADB)**: 一个命令行工具,用于连接计算机与Android设备,实现数据传输、设备状态查看、安装/卸载应用等操作。 6. **Layout Inspector**: 用于可视化分析Android应用的布局结构,帮助找...

    Android系统级深入开发—移植与调试.韩超.梁泉.扫描版

    根据提供的标题、描述和标签,我们可以推断这本书主要聚焦于Android系统的高级开发技术,特别是针对系统级别的移植与调试。下面将详细介绍与这些关键词相关的知识点。 ### Android系统 Android是一种基于Linux内核...

    Android Monkey测试常用命令.pdf

    Android Monkey 命令行工具 Android Monkey 是 Android SDK 中的一个命令行工具,主要用于测试 Android 应用程序的稳定性。Monkey 通过向 Android 模拟器或真机发送一系列随机事件,以测试应用程序的稳定性。 ...

    Android studio 常用技巧

    7. 内置终端:开发者无需切换到其他终端工具,可以直接在Android Studio内进行命令行操作,简化工作流程。 8. 完善的插件系统:Android Studio支持丰富的第三方插件,如Git、Markdown等,满足不同开发需求,且内置...

    Android Debug Bridge(安卓调试桥) tools platform-tools adb命令行工具

    Android四大组件有Activity,Service服务,Content Provider内容提供,BroadcastReceiver广播接收器,具体不做多讲,常用的有以下: 查看前台 Activity命令:adb shell dumpsys activity activities | findstr ...

    Android系统签名文件

    "keytool-importkeypair"是一个命令行工具,它是Java Development Kit(JDK)的一部分,用于管理JKS文件中的密钥对。例如,开发者可以用它来导入自签名的证书,或者导出私钥以便于备份和迁移。 总的来说,Android...

Global site tag (gtag.js) - Google Analytics