Android调试命令总结
转载表明来源:http://blog.csdn.net/yzzst/article/details/47128581
创业要接地气,GOOGLE、亚马逊、微软在中国做的怎么样,全然取决于他们的本地化程度。 ——周鸿祎
Java命令行工具
am工具(启动和调试组件)
am工具的含义为Activity Manager。
usage: am [subcommand] [options]
start an Activity: am start [-D] [-W]
-D: enable debugging
-W: wait for launch to complete
start a Service: am startservice
send a broadcast Intent: am broadcast
    start an Instrumentation: am instrument [flags]
        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
        -e  : set argument  to
        -p : write profiling data to
        -w: wait for instrumentation to finish before returning
    start profiling: am profile  start
    stop profiling: am profile  stop
    start monitoring: am monitor [--gdb ]
        --gdb: start gdbserv on the given port at crash/ANR主要參数Intent: 
显式启动Activity:
am start -n {包名}/{包名}.{活动名}
隐式启动Activity:
am start -a {指定的action} -d {URI}
隐式启动服务:
am startService -a {指定的action}
隐式发送广播:
am broadcast -a {指定的action}
启动Calculator应用:
am start -n com.android.calculator2/com.android.calculator2.Calculator 
Starting: Intent { cmp=com.android.calculator2/.Calculator }
am start -n com.android.calculator2/.Calculator 
Starting: Intent { cmp=com.android.calculator2/.Calculator }
启动应用并带有URL參数:
am start -a android.intent.action.VIEW -d http://www.baidu.com
Starting: Intent { act=android.intent.action.VIEW dat=http://www.baidu.com }
am start -a android.intent.action.CALL -d tel:12345 
Starting: Intent { act=android.intent.action.CALL dat=tel:xxx-xxx-xxxx }
几种VIEW类型(查看)的启动:
am start -a android.intent.action.VIEW -d file:///sdcard/image.jpg -t image/* 
am start -a android.intent.action.VIEW -d file:///sdcard/audio.mp3 -t audio/* 
 am start -a android.intent.action.VIEW -d file:///sdcard/video.3gp -t video/*
几种GET_CONTENT类型(获取)的启动:
am start -a android.intent.action.GET_CONTENT -t image/*  
am start -a android.intent.action.GET_CONTENT -t video/*  
am start -a android.intent.action.GET_CONTENT -t audio/*
注意: 
[–activity-brought-to-front]等的參数和 android.content.Intent类的FLAG_XXX内容相相应。 
-f參数能够直接加代表10进制或者16进制的FLAG数字。
pm工具(应用程序包)
PM工具的含义为Package Manager。
pm
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] [-s] [-f] PATH
pm uninstall [-k] PACKAGE
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
pm setInstallLocation [0/auto] [1/internal] [2/external]
列出安装包的信息。
pm list packages -f
还有一个文件: /data/system/packages.xml
禁止包(或者组件),清除包的数据。能够排除个别包的影响。
pm disable {包名.组件名} 
pm enable {包名.组件名} 
pm clear {包名}
直接安装包
pm install /sdcard/SkeletonApp.apk
pkg: /sdcard/SkeletonApp.apk Success D/installd( 36): DexInv:
— BEGIN ‘/data/app/com.example.android.skeletonapp-1.apk’ — D/dalvikvm( 763): DexOpt: load 37ms, verify+opt 52ms D/installd(
36): DexInv: — END ‘/data/app/com.example.android.skeletonapp-1.apk’
(success) —
指定路径,进行安装 
pm set-install-location  
pm get-install-location
input工具(模拟按键工具)
input工具用于模拟用户的按键输入和文本输入。
input
usage: input [text|keyevent]
input text
input keyevent
input tap
input swipe
模拟按键的输入,按键码參考 android.View.KeyEvent。
input keyevent 82 # 菜单事件(MENU) 
input keyevent 4  # 回退事件 (BACK) 
 input text “i_love_beijing” # 输入文字
模拟按键输入能够用于简单的程序调试。在Activity中实现onKeyUp()方法就可以。 
Android 4.0+才干够使用tap和swipe子命令。
ime工具(输入法管理)
ime工具用于输入法管理。
ime
usage: ime list [-a] [-s]
ime enable ID
ime disable ID
ime set ID
列出输入法:
ime list 
选择输入法  
ime set 
连续命令行脚本
脚本实际上是利用了Android的shell系统执行的。相同能够传入命令行的參数。 通过使用am调用Activity,通过input进行输入事件。能够模拟一个可执行程序的执行过程。
脚本中还能够传递shell中传入的參数。 
编写一个自己主动化脚本:
echo $*
am start -a android.intent.action.VIEW -d about://blank
echo "Enter Browser"
input keyevent 82
echo "Browser Menu"
input keyevent 22
input keyevent 22
input keyevent 66
input keyevent 4
echo "Browser Main"执行脚本:
 chmod 777 test.sh
./test.sh(我就不告诉你,非常多同学通过这样的方式去抓别人app的数据)
命令行和插入式组件结合的调试
Android应用程序APK调试的几个要点:
- 核心方法是利用命令行的Intent。
- 单次调用可使用BroadcastReceiver组件
- 后台调用可使用Service组件
- BroadcastReceiver组件也可放入其它组件内部
- 调用的參数使用Intent传入;
启动:am startservice和am broadcast 
首要參数使用-a。数据參数为-d 
AndroidManifest.xml其中要定义IntentFilter 
带数据的Intet和不带数据的Intent命令行不同 
:// : //…/ # ? 
Host是字符串,Port是整数,Path是多个字符串, Segments是字符串,QueryParameter是无顺序的多个參数。 
android.net.Uri类能够完毕參数的
public abstract String getScheme ()
public abstract String getHost()
public abstract int getPort()
public abstract String getFragment()
public abstract String getPath()
public abstract List getPathSegments()
public String getQueryParameter(String key)
public List getQueryParameters(String key)方法:
am startservice -a android.intent.action.testtools.stub1 command://?
key=10 
am startservice -a android.intent.action.testtools.stub1 -d command://?key=5 
am startservice -a android.intent.action.testtools.stub2 -d “command://?
key1=hello&key2=120” 
am broadcast -a android.intent.action.testtools.stub 
am broadcast -a android.intent.action.testtools.stub command://abc:1234#hello 
am broadcast -a android.intent.action.testtools.stub command:#/sdcard/test.txt 
am broadcast -a android.intent.action.testtools.stub command://abc/hi1/hi2/hi3#hello
參数解析方法
String action = intent.getAction();
Uri data = intent.getData();
Log.i(TAG, "action = " + action + "  data = " + data);
    if(null != data){
       String host = data.getHost();
       int port = data.getPort();
       String path = data.getPath();
       String fragment = data.getFragment();
       Log.i(TAG, "[Host]:[" + host + "] "  + "[Port]:[" + port + "] " + "[Path]:[" + path + "] "  + "[Fragment]:[" + fragment + "] ");
       List pathlist =  data.getPathSegments();
       for(int i=0;i< pathlist.size();i++ ){
          Log.i(TAG, "PATH["+i+"]:[" + pathlist.get(i) + "] ");
       }
}注意:不同的Android版本号组件能否够直接使用的问题。
Android的特殊命令
网络配置netcfg
netcfg -h
usage: netcfg [ {dhcp|up|down}]
netcfg
ndc和vdc
vdc volume list 
ndc interface list 
service
service -h
Usage: service [-h|-?]
service list
service check SERVICE
service call SERVICE CODE [i32 INT | s16 STR] … Options: i32: Write the integer INT into the send parcel. s16: Write the
UTF-16 string STR into the send parcel.
service list 
iphonesubinfo等就是ServiceManager管理的服务名称。
直接利用Binder方式调用。
属性服务
Android具有prop属性系统,使用getprop和setprop能够获得属性和设置属性。
getprop查看属性值 
getprop ro.secure 
setprop 设置属性值
usage: setprop
watchprops检測属性值变化 
watchprops用于监測属性的变化,直接执行这个命令,将形成循环,将把系统每个属性的变化列出。
watchprops
<时间> 属性 = ‘属性值’ ……
<时间> 属性 = ‘属性值’
start和stop命令。用于開始和停止init进程中的service。
start {service_name} 
stop  {service_name}
解决Android系统的daemon被kill之后又一次启动的问题
系统信息查看小工具
Android中还提供了dumpstate、dumpsys、bugreport等几个工具。用于查看系统各个方面的信息。
- dumpstate 
 工具用于将系统设备的状态导出,通过訪问sys文件系统和调用其它工具来完毕。
- dumpsys 
 用于查看应用的状态。
 因为dumpstate和dumpsys两个工具导出的内容都较多。最好在主机端配合adb来使用。
- procrank抓取内存信息 
 procrank工具用于抓取Android进程的内存使用信息。
procrank 
 
VSS = Virtual Set Size 
RSS = Resident Set Size 
PSS = Proportional Set Size 
USS = Unique Set Size
Android中的Linux命令
因为Android系统基于Linux实现,在系统中能够使用Linux中标准的方法进行调试。在Android中经常使用的通用Linux的调试方法主要包含下面几个:
- 系统信息工具(ps、kill、proc文件系统)
- /dev/设备文件和/sys/文件系统
- 系统性能工具(vmstat和top)
- gdb调试
ps和proc查看进程
ps 
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root      1     0     268    180   c009b74c 0000875c S /init
root      2     0     0      0     c004e72c 00000000 S kthreadd
各个内核线程
root      3     2     0      0     c003fdc8 00000000 S ksoftirqd/0
root      4     2     0      0     c004b2c4 00000000 S events/0
……省略。其它各个内核线程
各个由init的启动守护进程
root      27    1     248    152   c009b74c 0000875c S /sbin/ueventd
root      29    1     3916   476   ffffffff afd0bdac S /system/bin/vold
……省略,各个由init的启动守护进程
 各个应用程序进程
system    64    33    125924 29216 ffffffff afd0b6fc S system_server
……省略,各个应用程序进程使用ps -t <进程id>则表示查看某一个进程中的线程。
kill命令能够指定进程的id来杀死进程。
proc文件系统
/proc/<进程id>/为某一个进程的文件夹。
cat /proc/34/cmdline 
/system/bin/mediaserver
cat /proc/34/status #进程状态
Name:   mediaserver                           # 进程名称
State:  S (sleeping)                          # 进程状态
Tgid:   34                                    # 线程组ID
Pid:    34                                    # 进程ID
PPid:   1                                     # 父进程ID
TracerPid:      0
Uid:    1013    1013    1013    1013
Gid:    1000    1000    1000    1000
FDSize: 32
Groups: 1003 1005 1006 3001 3002 3003 3004
Threads:        8                             # 所包含的线程数环境变量
printenv命令用于查看系统中的各个环境变量
printenv 
文件系统
moun命令用于查看系统的挂接的文件系统分区。
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
none /acct cgroup rw,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block/vold/179:0 /mnt/sdcard vfatmount -t vfat /dev/block/mmcblk0p1 /sdcard 
mount -o rw,remount -t yaffs /dev/block/mtdblock0 /system
网络配置和信息
ifconfig用于配置网络
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 
ifconfig eth0  
eth0: ip 192.168.0.1 mask 255.255.255.0 flags [up broadcast running multicast]
route命令用于网络路由
route add default dev eth0 
route add default gw 192.168.1.1 dev eth0
第一行表示添加了网卡eth0。第二行表示为这个网络设备设置网关(gw)。
iftop工具用于统计网络流量。依照网络设备列出接收数据(Rx)和发送数据(Tx)的情况:
iftop实时流量监控工具
               Rx                              Tx
name     MTU   bytes  packets  errs  drpd  bytes   packets  errs  drpd
eth0     1500  0       0        0     0     0      0        0     0netstat网络状态的信息获取工具
netstat
Proto Recv-Q Send-Q Local Address     Foreign Address          State
 tcp      0   0      127.0.0.1:5037   0.0.0.0:*             LISTEN
 tcp      0   0      0.0.0.0:5555     0.0.0.0:*           LISTEN
 tcp      0      0      10.0.2.15:5555   10.0.2.2:45610        ESTABLISHEDvmstat 
vmstat在执行过程中,会定期打出一行的内容,表示系统当前的执行
- r:在执行队列中等待的进程数;
- b:在等待io的进程数。
- w:能够进入执行队列但被替换的进程;
- free:空暇的内存(单位k);
- mapped:影射的内存(单位k);
- in:每秒的中断数。包含时钟中断;
- cs:每秒的环境(上下文)切换次数;
- us:CPU使用时间;
- sy:CPU系统使用时间。
- id:闲置时间。
- VSS(Virtual Set Size):进程使用的虚拟内存
- RSS(Resident Set Size):进程使用的物理内存mstat
procs  memory                       system          cpu
 r  b    free mapped   anon   slab    in   cs  flt  us ni sy id wa ir
 0  0  348688  33004  58068   4264    18   13    0   1  0  0 99  0  0
 0  0  348688  33008  58068   4264    27   39    0   1  0  1 99  0  0
 0  0  348688  33008  58068   4264    22   21    0   0  0  1 99  0  0
 0  0  348688  33008  58068   4264    27   59    0   3  0  4 94  0  0
 0  0  348688  33008  58068   4264    19   19    0   0  0  1 99  0  0
 2  0  348068  33012  58592   4240    70  138    0  27  0  4 69  0  0
 0  0  348068  33012  58592   4240    84  188    0  42  0  8 51  0  0
 2  0  345632  33756  60124   4248   119  416    5  36  0 13 51  0  0
 0  0  344392  32660  62044   4248    96  396    0  46  0  8 46  0  0
 0  0  344020  32664  62392   4248   103  548    0  42  0  6 52  0  0
 0  0  344020  33264  62372   4248    45   80    0   2  0  5 93  0  0
 0  0  344020  33264  62372   4248    37   87    0   3  0  1 97  0  0
 0  0  343896  33264  62372   4248    23   28    0   1  0  1 98  0  0
 0  0  343896  33264  62372   4248    24   26    0   1  0  0 99  0  0
 0  0  343896  33264  61992   4248    30   41    0   4  0  3 93  0  0top
top命令表示列出系统最耗资源的进程,主要能够检測各个进程对CPU的消耗情况,信息将一屏一屏的阶段性地打印到终端上。
top  
tcpdump 
tcpdump命令是对网络上的数据包进行截获的工具(抓包工具),能够依据不同的协议、设备、端口等获取信息,得到的数据可供进一步的分析。
tcpdump -i any -p -s 0 
tcpdump -i any -p -s 0 -w
00:20:52.011779 IP 10.0.2.2.33338 > 10.0.2.15.rplay: P 88033:88057(24) ack 878157 win 8760
00:20:52.012146 IP 10.0.2.15.rplay > 10.0.2.2.33338: P 878157:878367(210) ack 88057 win 5840
00:20:52.012421 IP 10.0.2.2.33338 > 10.0.2.15.rplay: P 88057:88081(24) ack 878367 win 8760
00:20:52.012840 IP 10.0.2.15.rplay > 10.0.2.2.33338: P 878367:878559(192) ack 88081 win 5840
00:20:52.013365 IP 10.0.2.2.33338 > 10.0.2.15.rplay: . ack 878559 win 8760
00:20:52.013369 IP 10.0.2.2.33338 > 10.0.2.15.rplay: P 88081:88105(24) ack 878559 win 8760
00:20:52.013757 IP 10.0.2.15.rplay > 10.0.2.2.33338: P 878559:878863(304) ack 88105 win 5840
00:20:52.014262 IP 10.0.2.2.33338 > 10.0.2.15.rplay: P 88105:88129(24) ack 878863 win 8760
00:20:52.014679 IP 10.0.2.15.rplay > 10.0.2.2.33338: P 878863:879149(286) ack 88129 win 5840
00:20:52.015087 IP 10.0.2.2.33338 > 10.0.2.15.rplay: P 88129:88153(24) ack 879149 win 8760
00:20:52.015486 IP 10.0.2.15.rplay > 10.0.2.2.33338: P 879149:879359(210) ack 88153 win 5840/*  
* @author zhoushengtao(周圣韬)  
* @since 2015年7月3日 11:04:22  
* @weixin stchou_zst  
* @blog http://blog.csdn.net/yzzst  
* @交流学习QQ群:341989536  
* @私人QQ:445914891  
/  
Android调试命令总结的更多相关文章
- Android 调试桥 (adb) 是  命令行命令--官方拷贝过来的,留作自己查看
		Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令便于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令 ... 
- 2.[WP Developer体验Andriod开发]Andriod Studio结合Visual Studio Emulator for Android调试Android App
		0. 工欲善其事必先利其器 上一篇博客对比了一下Android和WinPhnoe的布局容器,后续篇章重点放在Android的开发上了. 说到开发就绕不开调试程序,调试Android App我们有2种选 ... 
- Android adb 命令使用总结
		adb原理 参考文档 How ADB works http://www.cnblogs.com/ifantastic/p/5186362.html http://blog.csdn.ne ... 
- Android:使用命令行工具adb、mksdcard等
		有一些Android的工具需要在命令行的环境中运行,只是可以选择Windows的开始->运行,键入cmd并确定,进入命令行的界面中运行.主要的命令行工具包括adb和mksdcard等.命令行的工 ... 
- Android adb 命令图解
		做了这么长时间的开发与管理,在命令上总是自见则过,往往却忽视了在其命令上的分享过程,所以现在稍微有点时间就把 其命令的相关操作来简单的扫盲一番吧,也系统通过这种方式去授之以渔而不是鱼,好了,我以图解的 ... 
- Android 开发笔记 “android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程 ”
		资源来源:http://blog.csdn.net/wangdong20/article/details/20839533 做Android调试的时候经常会遇到,程序写好了,准备接上手机调试,可不一会 ... 
- Android调试优化篇
		为了开发出商业级的应用程序,大规模的測试是不可避免的,同一时候为了提高应用程序的执行速度,须要进行必要的优化.在Android中.提供了丰富的调试与优化工具供开发者应用,主要包含模拟器和目标端等两种场 ... 
- 2.[Andriod]Andriod Studio结合Visual Studio Emulator for Android调试Android App
		0. 工欲善其事必先利其器 上一篇博客对比了一下Android和WinPhnoe的布局容器,后续篇章重点放在Android的开发上了. 说到开发就绕不开调试程序,调试Android App我们有2种选 ... 
- android: shell 命令
		adb是Android重要工具之一,以提供强大的特性,例如复制文件到设备或从设备复制文件.可以使用Android Shell命令行参数连接到手机本身,并发送基本的 shell 命令. 进入命令行,使用 ... 
随机推荐
- Vim常用命令及配置方案
			Vim常用命令及配置方案 几句话 很久之前就接触到vim,初学那阵觉得vim很酷炫,但确实对新手不是很友好.我也就简单看了下基本操作就上手了,但又不是长期在vim下工作,这就导致了每一次重新使用v ... 
- pycharm日常填坑
			pycharm坑很多,今天又遇见了,好吧 ,填坑 场景:从别的地方拷贝过来的项目,导入本地的pycharm 然后选择 然后 还会报错....心累 报错内容: django commands canno ... 
- (2016北京集训十)【xsy1528】azelso - 概率期望dp
			北京集训的题都是好题啊~~(于是我爆0了) 注意到一个重要的性质就是期望是线性的,也就是说每一段的期望步数可以直接加起来,那么dp求出每一段的期望就行了... 设$f_i$表示从$i$出发不回到$i$ ... 
- centos7 安装freeswitch
			1.安装运行库 yum install -y git gcc-c++ wget alsa-lib-devel autoconf automake bison broadvoice-devel bzip ... 
- 【Paper Reading】Bayesian Face Sketch Synthesis
			Contribution: 1) Systematic interpretation to existing face sketch synthesis methods. 2) Bayesian fa ... 
- Windows和Linux的编译理解
			Windows一般编译出来的x86的软件,就是只能在x86的系统上才能运行,同理,在x64系统上也是一样的道理. Linux利用gcc编译器编译,可以在Linux上面运行,但是想要在嵌入式系统上运行的 ... 
- POJ 3207 Ikki's Story IV - Panda's Trick(2-sat)
			POJ 3207 Ikki's Story IV - Panda's Trick id=3207" target="_blank" style=""& ... 
- Homebrew命令具体解释
			Homebrew命令具体解释 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一.安装Homebrew Shell环境下 ... 
- bzoj3438: 小M的作物(那年花开最小割)
			3438: 小M的作物 题目:传送门 题解: 最小割标准水题(做了几天的最小割之后表示是真的水) 为什么水:博主已经做过两道基本一样的题目了... 详情参考:bzoj3894 代码: #include ... 
- [转]Python UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 的解决办法
			UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 的解决办法 python在安装时,默认的编码是ascii,当 ... 
