Android调试命令总结

am命令

我们知道android底层是linux 是用c写的

应用层是用java写的apk程序

那么系统实现系统底层和应用层是如何通信的呢,比如系统要调用一个计算器程序?

那便是用的命令行工具am 底层应该是用localsocket通信
我们可以通过命令启动android中的Activity,Service,BroadcastReceiver 等组件

显式启动Activity:

am start -n {包名}/{包名}.{活动名}

隐式启动Activity:

am start -a {指定的action} -d {URI}

隐式启动服务:

am startService -a {指定的action}

隐式发送广播:

am broadcast -a {指定的action}

效果如下

1. 拨打一个电话:

am start -a android.intent.action.CALL -d tel:10086



这里-a表示动作,-d表述传入的数据,还有-t表示传入的类型。

2. 打开一个网页:

am start -a android.intent.action.VIEW -d  http://www.baidu.com (这里-d表示传入的data)

3. 打开音乐播放器:

am start -a android.intent.action.MUSIC_PLAYER 或者

am start -n com.android.music/om.android.music.MusicBrowserActivity

4. 启动一个服务:

am startservice <服务名称>



例如:am startservice -n com.android.music/com.android.music.MediaPlaybackService (这里-n表示组件)

或者   am startservice -a com.smz.myservice (这里-a表示动作,就是你在Androidmanifest里定义的) 

5. 发送一个广播:

am broadcast -a <广播动作>



例如: am broadcast -a com.smz.mybroadcast

pm命令(应用程序包)

PM工具的含义为Package Managusage: 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]安装apk程序
pm install /mnt/sdcard/uzi.apk

禁止包(或者组件),清除包的数据,可以排除个别包的影响。

pm disable {包名.组件名} 
pm enable {包名.组件名} 
pm clear {包名}

列出安装包的信息。

pm list packages -f

input工具(模拟按键工具)

input工具用于模拟用户的按键输入和文本输入。

input:
usage: input [text|keyevent] 
input text 
input keyevent 
input tap 
input swipe
input text  "1111"

ime工具(输入法管理)

ime工具用于输入法管理。

ime

usage: ime list [-a] [-s] 
ime enable ID 
ime disable ID 
ime set ID

连续命令行脚本

脚本实际上是利用了Android的shell系统运行的,同样可以传入命令行的参数。 通过使用am调用Activity,通过input进行输入事件,可以模拟一个可执行程序的执行过程。 脚本中还可以传递shell中传入的参数。
编写一个自动化脚本:test.sh

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的特殊命令

网络配置netcfg

netcfg -h

usage: netcfg [ {dhcp|up|down}]

ndc和vdc

vdc volume 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.
root@vbox86p:/mnt/sdcard # service list
Found 72 services:
0       sip: [android.net.sip.ISipService]
1       phone: [com.android.internal.telephony.ITelephony]
2       iphonesubinfo: [com.android.internal.telephony.IPhoneSubInfo]
3       simphonebook: [com.android.internal.telephony.IIccPhoneBook]
4       isms: [com.android.internal.telephony.ISms]
5       Genyd: [com.genymotion.genyd.IGenydService]
6       dreams: [android.service.dreams.IDreamManager]
7       commontime_management: []
8       samplingprofiler: []
9       diskstats: []
10      appwidget: [com.android.internal.appwidget.IAppWidgetService]
11      backup: [android.app.backup.IBackupManager]
12      uimode: [android.app.IUiModeManager]
13      serial: [android.hardware.ISerialManager]
14      usb: [android.hardware.usb.IUsbManager]
15      audio: [android.media.IAudioService]
16      wallpaper: [android.app.IWallpaperManager]
17      dropbox: [com.android.internal.os.IDropBoxManagerService]
18      search: [android.app.ISearchManager]
19      country_detector: [android.location.ICountryDetector]
20      location: [android.location.ILocationManager]
21      devicestoragemonitor: []
22      notification: [android.app.INotificationManager]
23      updatelock: [android.os.IUpdateLock]
24      servicediscovery: [android.net.nsd.INsdManager]
25      connectivity: [android.net.IConnectivityManager]
26      wifi: [android.net.wifi.IWifiManager]
27      wifip2p: [android.net.wifi.p2p.IWifiP2pManager]
28      netpolicy: [android.net.INetworkPolicyManager]
29      netstats: [android.net.INetworkStatsService]
30      textservices: [com.android.internal.textservice.ITextServicesManager]
31      network_management: [android.os.INetworkManagementService]
32      clipboard: [android.content.IClipboard]
33      statusbar: [com.android.internal.statusbar.IStatusBarService]
34      device_policy: [android.app.admin.IDevicePolicyManager]
35      lock_settings: [com.android.internal.widget.ILockSettings]
36      mount: [IMountService]
37      accessibility: [android.view.accessibility.IAccessibilityManager]

iphone subinfo等就是ServiceManager管理的服务名称。
直接利用Binder方式调用。

属性服务

Android具有prop属性系统,使用getprop和setprop可以获得属性和设置属性。

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进程的内存使用信息。

Android中的Linux命令

由于Android系统基于Linux实现,在系统中可以使用Linux中标准的方法进行调试。在Android中常用的通用Linux的调试方法主要包括以下几个:

系统信息工具(ps、kill、proc文件系统)
/dev/设备文件和/sys/文件系统
系统性能工具(vmstat和top)
gdb调试
psproc查看进程

ps 命令与linux上的一致

-A    列出所有的进程
-w    显示加宽可以显示较多的资讯
-au    显示较详细的资讯
-aux    显示所有包含其他使用者的行程

proc文件系统

/proc/<进程id>/为某一个进程的目录。

cat /proc/34/cmdline 
/system/bin/mediaserver

cat /proc/34/status #进程状态

环境变量

printenv命令用于查看系统中的各个环境变量

文件系统

moun命令用于查看系统的挂接的文件系统分区。

root@vbox86p:/mnt/sdcard # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/sda6 /system ext4 ro,relatime,data=ordered 0 0
/dev/block/sdb1 /cache ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/sdb3 /data ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/sdc /mnt/shell/emulated vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0

网络配置和信息

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实时流量监控工具

root@vbox86p:/mnt/sdcard # iftop
               Rx                              Tx
name     MTU   bytes      packets  errs  drpd  bytes      packets  errs  drpd
lo       16436 0          0        0     0     0          0        0     0
eth0     1500  266        4        0     0     554        6        0     0
eth1     1500  0          0        0     0     0          0        0     0
lo       16436 0          0        0     0     0          0        0     0
eth0     1500  1112       15       0     0     3582       16       0     0
eth1     1500  0          0        0     0     0          0        0     0
lo       16436 0          0        0     0     0          0        0     0
eth0     1500  188        3        0     0     426        3        0     0
eth1     1500  0          0        0     0     0          0        0     0
lo       16436 0          0        0     0     0          0        0     0
eth0     1500  78         1        0     0     378        2        0     0
eth1     1500  0          0        0     0     0          0        0     0
lo       16436 0          0        0     0     0          0        0     0
eth0     1500  243        4        0     0     486        4        0     0
eth1     1500  0          0        0     0     0          0        0     0

netstat网络状态的信息获取工具

130|root@vbox86p:/mnt/sdcard # netstat
Proto Recv-Q Send-Q Local Address          Foreign Address        State
 tcp       0      0 0.0.0.0:24800          0.0.0.0:*              LISTEN
 tcp       0      0 127.0.0.1:24801        0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:22468          0.0.0.0:*              LISTEN
 tcp       0      2 0.0.0.0:22470          0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:22471          0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:24296          0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:24810          0.0.0.0:*              LISTEN
 tcp       0      0 0.0.0.0:22666          0.0.0.0:*              LISTEN
 tcp       0      0 127.0.0.1:24811        0.0.0.0:*              LISTEN
 tcp       0      0 127.0.0.1:5037         0.0.0.0:*              LISTEN

win上面也可以用

netstat -ano |findstr "5037"

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
root@vbox86p:/mnt/sdcard # vmstat
procs  memory                       system          cpu
 r  b    free mapped   anon   slab    in   cs  flt  us ni sy id wa ir
 0  0  1723572  70400 127644  13768    34   69    0   0  0  0 99  0  0
 0  0  1723572  70400 127644  13768    34   87    0   0  0  1 99  0  0
 0  0  1723572  70400 127644  13768    45   95    0   0  0  0 99  0  0
 0  0  1723572  70400 127644  13768    64  269    0   3  0  0 97  0  0

top

top命令表示列出系统最耗资源的进程,主要可以检测各个进程对CPU的消耗情况,信息将一屏一屏的阶段性地打印到终端上。

  PID PR CPU% S  #THR     VSS     RSS PCY UID      Name
12696  0   0% S    75 606656K  43256K  fg system   system_server
12984  0   0% S    23 535088K  28360K  fg radio    com.android.phone
14297  0   0% R     1   6936K   1336K  fg root     top
    5  0   0% S     1      0K      0K  fg root     kworker/u:0
    6  0   0% S     1      0K      0K unk root     migration/0
    7  0   0% S     1      0K      0K  fg root     khelper

tcpdump

tcpdump命令是对网络上的数据包进行截获的工具(抓包工具),可以根据不同的协议、设备、端口等获取信息,得到的数据可供进一步的分析。

tcpdump -i any -p -s 0 
tcpdump -i any -p -s 0 -w
posted @ 2016-05-15 20:28  Tesi1a  阅读(253)  评论(0编辑  收藏  举报