Android中的常用命令汇总

工欲善其事必先利其器,在Android开发过程中,为了开发调试,查找问题的需要,必须掌握一些常用的命令的用法,这里总结了一些在Android开发中经常会用到的命令,一共15个。


1、ps

列出所有的进程

这个命令是Android调试和问题查找的时候经常会用到的一个命令,在不带参数的情况下会输出所有的进程,

ps -t 

则会输出所有的线程。

2、printenv    显示环境变量,例:

    printenv HOSTNAME
    printenv BOOTCLASSPATH

3、 setprop  设置系统属性,和环境变量不是一个概念,例:

    setprop ctl.stop zygote
    setprop ctl.start zygote
    setprop persist.sys.usb.config adb

上面三条命令的作用分别是:停止zygote服务,启动zygote服务,开启adb调试。

4、  getprop  获取系统属性,不带参数显示所有属性,例:

    getprop sys.usb.config

5、 watchprops 监听系统属性的改变当系统属性发生改变时输出改变的系统属性。

6、  start 启动服务,它的作用相当于:

    setprop ctl.start <service>

7、 stop 停止服务

带参数时,它的作用相当于

    setprop ctl.stop <service>
不带参数的作用相当于:
    setprop ctl.stop zygote
    setprop ctl.stop surfaceflinger

8、 dmesg  输出内核的调试信息,作用和cat /proc/kmsg一样


9、  sync  同步命令,将缓存中的数据写入到存储设备。

    对于块设备,默认在挂载的时候都会开启写缓存
    如当对U盘进行写操作后,如果不调用该命令,就会造成一些缓存中的内存没有写入到U盘中,造成文件损坏的情况。


10、procrank  输出进程的内存占用情况,其中的 Uss(Unique Set Size)可用于定位进程是否有内存泄漏。


11    kill  

kill命令不仅仅可以干掉一个进程,还可以发信号给进程,如:

kill -3 <pid>


会 发送SIGQUIT给进程,在Android平台会在/data/anr/traces.txt中输出java堆栈和native堆栈信息,这对于查Java的死锁问题特别有用,但是在使用的时候请注意运行以下两条命令:

        touch  /data/anr/traces.txt
        chmod 666 /data/anr/traces.txt

因为/data/anr是system权限的,如果在执行kill之前不执行上面这两条命令,如果kill的是一个普通用户进程,那么就会因权限问题而无法输出堆栈信息到traces.txt了。

再如:

      kill -9 <pid>

发送SIGKILL给进程,用于强制结束进程,包括僵死的进程。


12、debuggerd  用于输出进程的native堆栈

用法: debuggerd -b <pid>


13、    dumpsys   用于调试service

在使用的时候,往往用

      dumpsys -l
查看所有的系统服务,再通过类似:

dumpsys cpuinfo

来获取service的调试信息,该命令实现上最终调用的就是service的dump函数。

13、  netcfg  查看或者设置当前网络连接状态,不带参数的情况输出所有的已知网络连接状态,也可以用来设置动态ip,或者关闭打开网络连接,如:

获取动态ip:

netcfg eth0 dhcp

关闭eth0:

netcfg eth0 down

打开eth0:

netcfg eth0 up

14、 screencap  截屏

例,保存当前屏幕为png图片到/mnt/sdcard/screen.png:

    screencap -p /mnt/sdcard/screen.png

 显示帮助信息:

screencap -h

15、strace 用于跟踪系统调用,这是一个强大的调试命令,这里只作下简单介绍,更详细的可以参考:http://blog.chinaunix.net/uid-26285146-id-3944345.html


示例:

      strace -f -p <pid>
      -p
        指定要跟踪的进程pid
      -f
        跟踪子进程

这里只介绍了Android中独有的或者经常用到的命令,当然,还有很多的linux命令这里没有介绍到,但已经超出了本篇文章的范围了。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。