zoukankan      html  css  js  c++  java
  • Android 的独特shell命令

        Android本来就是一个linux操作系统,所以大部分都是linux的命令,如mkdir,ls,netstat,mount,ps 等,这里就不具体介绍了,

    主要介绍几个Android特有的。
    getprop 返回Android的所有系统属性。
    getevent 打印所有的键盘和触摸事件
    logcat 输出日志
    printenv 系统环境变量
    am 运行start/broadcast/instrument(instrument可以运行自动化测试代码,其它的还没有试过)
    # Android模拟器启动命令模式
    在android-sdk-windows-1.1 ools执行emulator以执行模拟器
    加上-skin参数,指定显示模式HVGA-L,即可改为横向
    emulator - skin HVGA-L (480*320,水平显示)
    emulator - skin HVGA-L (320*480,垂直显示,模拟器预设模式)
    emulator - skin HVGA-L (320*240,水平显示)
    emulator - skin HVGA-L (240*320,垂直显示)
    # 使用mksdcard指令模拟1GB的记忆卡
    mksdcard 1024M sacard.img
    # 模拟插入sd卡的模拟器
    emulator - sdcard sdcard.img
    # 使用 adb+push 上传文件SD记忆卡
    adb push 001.jpg /sdcard (复制文件到/sdcard目录下)
    adb push pictures /sdcard
    adb push mp3 /sdcard
    adb shell (Android 模拟器启动命令模式)
    #cd /sdcard (进入 /sdcard 目录)
    #ls (查看 SD 记忆卡中的档案)
    # 使用 adb+pull 从sdcard卡下载文件
    adb pull /sdcard/001.jpg . (下载 /sdcard 目录下的档案)
    adb pull /sdcard/pictures . (下载 sdcard 目录下的 pictures 目录)
    # 删除 SD 卡里面的档案
    adb shell
    #cd /sdcard
    #rm 001.jpg (删除 SD 记忆卡里的档案)
    #rm -r * (删除 SD 记忆卡里所有档案与目录)
    # Android仿真器影片播放方法
    mksdcard 4096M video.img (制作一个图像文件的 SD 记忆卡)
    adb push video.avi /sdcard (从计算机复制图像文件到 SD 卡中)
    emulator -sdcard video.img (启动模拟器并载入SD卡)
    adb install iiivpa.apk (安装Meridian Video Player)
    接下来就可以用装上去的player播放.mp4、3gp与.wmv三种文件格式
           # 安装 APK 应用程序
    adb install filename.apk (安装filename.apk)
    adb install -r filename.apk (保留已设定数据,重新安装filename.apk)
    adb -s emulator-5554 install filename.apk (指定安装 APK 套件在 5554 的 Android 仿真器中)
    # 移除 APK 应用程序
    adb uninstall package
    adb uninstall -k package (移除程序时,保留数据)
    此package名称不是安装APK套装时的文件名或显示在仿真器中的应用程序名称
    可以先到/data/data或data/app目录下,查询想移除的package名称
    adb shell
    ls /data/data 或 /data/app (查询package名称)
    exit
    adb uninstall package (移除查询到的 Package)
    $adb devices (显示目前有多少个仿真器正在执行)
    $adb -s (指定模拟器来操作操作)
    adb -s emulator-5554 install email.apk
    $adb install apkfile (安装 APK 应用程序)

    adb install email.apk

           $adb uninstall package (移除 APK 应用程序)
    adb uninstall com.android.email
    $adb shell (进入android shell命令模式)
    $ls
    $dmesg (查看 Android Linux Kernel 运行信息)
    ls - 显示文件目录
    cd - 进入目录
    rm - 删除文件
    mv - 移动文件
    mkdir - 产生目录
    rmdir - 删除目录
    $adb push (复制文件到 SD 卡)
    adb push mp3 /sdcard
    $adb pull . (从Android 系统下载文件)
    adb pull /data/app/com.android.email
    $adb logcat (监控模拟器运作记录,以Ctrl + c离开监控模式)
    $adb bugreport (产生adb出错报告)
    $adb get-state (获得adb模拟器工作状态)
    $adb start-server (启动adb服务器)
    $adb kill-server (关掉adb服务器)
    $adb forward tcp:6100 tcp:7100 (更改模拟器通讯网路)
    $adb shell ps -x (显示android模拟器上所有在执行的进程)
    $adb version (显示 adb 版本)
    $adb help (显示 adb 指令参数)

    5、搜索模拟器/设备的实例:
       取得当前运行的模拟器/设备的实例的列表及每个实例的状态:
    adb devices
    6、查看bug报告:
    adb bugreport
    7、记录无线通讯日志:
    一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
    adb shell
    logcat -b radio
    8、获取设备的ID和序列号:
    adb get-product
    adb get-serialno
    9、访问数据库SQLite3
    adb shell
    sqlite3
    # Emulator 命令行启动参数
    emulator -timezone Asia/Taipei (指定时区)
    emulator -no-boo-anim (省略开机小机器人启动画面)
    emulator -scale auto (调整模拟器视窗大小)
    emulator - scale factor (factor: 0.1-3.0)
    emulator -dpi-device 300 (更改仿真器的分辨率,default为 165dpi)
    emulator -skin (更改模拟器显示模式)
    emulator -help-keys (显示键盘快速说明)
    emulator -shell (相当于adb shell 功能)
    emulator -data data.img (使 /data 目录使用 data.img 的文件空间)
    emulator -sdcard sdcard.img (使 /sdcard 目录使用 sdcard.img 的文档空间)
    emulator -cache cache.img (浏览器暂存空间)
    emulator -wipe-data (使模拟器恢复到原始设置)
    emulator -help (显示 emulator 指令参数)
    Using SQLite from Shell in Android
    命令模式下
    #ls 查看即可


    其他:

    1. Android支持的linux command不多,在/system/bin下面可以找到,其中大部分都是Android的工具,只有一小部分是linux原有的命令

    2. 一些常用的Android命令(这里只总结Android中特有的,其他的linux命令资料就很多了)

    a)getprop/watchprops

    getprop列出系统的属性,前面十名字,后面是值
    # getprop
    getprop
    [ro.secure]: [0]
    [ro.allow.mock.location]: [1]
    [ro.debuggable]: [1]
    [persist.service.adb.enable]: [1]
    [ro.kernel.qemu]: [1]
    [ro.kernel.console]: [ttyS0]
    [ro.kernel.android.checkjni]: [1]
    [ro.kernel.android.qemud]: [ttyS1]
    [ro.kernel.android.ndns]: [1]
    [ro.factorytest]: [0]
    [ro.serialno]: []

    watchprosp动态监视这些属性的变化,比如我修改系统的语言为中文,就会打印出:
    # watchprops
    watchprops
    1269420653 persist.sys.language = 'zh'
    1269420653 persist.sys.language = 'CN'

    b) wipe <system|data|all>
    wipe表示清除模拟器或者真机上的数据,比如你的模拟器用了很久,装了很多软件就可以用这个来清除
    system表示清除 /system下的数据
    data表述清除 /data 下的数据

    c) am
    usage: am [subcommand] [options]

      start an Activity: am start [-D] <INTENT>
      -D: enable debugging

      send a broadcast Intent: am broadcast <INTENT>

      start an Instrumentation: am instrument [flags] <COMPONENT>
      -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
      -e <NAME> <VALUE>: set argument <NAME> to <VALUE>
      -p <FILE>: write profiling data to <FILE>
      -w: wait for instrumentation to finish before returning

      start profiling: am profile <PROCESS> start <FILE>
      stop profiling: am profile <PROCESS> stop

      <INTENT> specifications include these flags:
      [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
      [-c <CATEGORY> [-c <CATEGORY>] ...]
      [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
      [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
      [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
      [-n <COMPONENT>] [-f <FLAGS>] [<URI>]

    am是管理activity的工具,主要有4种用法
    am start/stop <INTENT> 表示启动或者停止一个activity,INTENT的参数可以在AndroidManifest.xml中的intent-filter中找到
    比如我要打开发送邮件的activity就可以这样写
    # am start -a android.intent.action.SEND_MULTIPLE
    am start和StartActivity方法是一个作用

    am也可以发送一个broadcast,后面的INTENT和上面同
    除此之外还可以 start profiling和Instrumentation,这两个还不知怎么用,欢迎大家补充

    d)pm
    pm就是package manager,可以带下面的参数,因为帮助都说的很清楚了,我就不作解释了
    usage: pm [list|path|install|uninstall]
      pm list packages [-f]
      pm list permission-groups
      pm list permissions [-g] [-f] [-d] [-u] [GROUP]
      pm list instrumentation [-f] [TARGET-PACKAGE]
      pm list features
      pm path PACKAGE
      pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] PATH
      pm uninstall [-k] PACKAGE
      pm enable PACKAGE_OR_COMPONENT
      pm disable PACKAGE_OR_COMPONENT

    The list packages command prints all packages. Options:
      -f: see their associated file.

    The list permission-groups command prints all known
    permission groups.

    The list permissions command prints all known
    permissions, optionally only those in GROUP. Options:
      -g: organize by group.
      -f: print all information.
      -s: short summary.
      -d: only list dangerous permissions.
      -u: list only the permissions users will see.

    The list instrumentation command prints all instrumentations,
    or only those that target a specified package. Options:
      -f: see their associated file.

    The list features command prints all features of the system.

    The path command prints the path to the .apk of a package.

    The install command installs a package to the system. Options:
      -l: install the package with FORWARD_LOCK.
      -r: reinstall an exisiting app, keeping its data.
      -t: allow test .apks to be installed.
      -i: specify the installer package name.

    The uninstall command removes a package from the system. Options:
      -k: keep the data and cache directories around.
    after the package removal.

    The enable and disable commands change the enabled state of
    a given package or component (written as "package/class").

    e)svc
    svc可硬用来管理wifi,power和data
    svc [wifi|data|power] [option]

    usage: svc wifi [enable|disable]
      打开或者关闭wifi

    usage: svc power stayon [true|false|usb|ac]
      true电源一直保持stay on的状态,
      usb插上usb才保持stay on
      ac充电的时候

    f)bootanimation
    显示开机动画,在替换默认的开机动画的时候可以用这个来调试

    g)getevent & sendevent
    getevent监控当前的事件,鼠标事件,按键事件,拖动滑动等

    # getevent
    getevent
    add device 1: /dev/input/event0
      name: "qwerty2"
    /dev/input/event0: 0001 001e 00000001
    /dev/input/event0: 0001 001e 00000000

    其中/dev/input/event0是device的名字 0001是type, 001e是键码, 最后一个根据type不同而不同
    比如上面的倒数第二条就是按下a键的keydown,最后一个是按下a的keyup
    具体的type,code,value的定义可以在源码/frameworks/base/core/java/android/view/KeyEvent.java中找到

    sendevent发送时间,格式和上面的一样,需要注意的是在get中code显示的是十六进制,而send中需要用十进制,例如

    # sendevent /dev/input/event0 1 5 1
    这个命令就是发送数字4的keydown消息,所以在屏幕上就会一直打印出很多个4(因为没有发送keyup)

    h)一项常用的print message命令
    dumpsy
    dumpstate
    logcat
    dmesg
    这几条命令都集成在ddms里面了,所以一般用的很少

  • 相关阅读:
    设计模式整理_单例设计模式
    设计模式整理_工厂模式
    设计模式整理_装饰者模式
    设计模式整理_观察者模式
    设计模式整理_策略模式
    JavaSE复习_7 异常
    JavaSE复习_6 枚举类
    JavaSE复习_5 Eclipse的常见操作
    pta编程题19 Saving James Bond 2
    ImportError: No module named PIL
  • 原文地址:https://www.cnblogs.com/riskyer/p/3306427.html
Copyright © 2011-2022 走看看