概述
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调试
ps和proc查看进程
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
转载于:https://www.cnblogs.com/Tesi1a/p/7624132.html
最后
以上就是专注小伙为你收集整理的Android调试命令总结am命令pm命令(应用程序包)input工具(模拟按键工具)ime工具(输入法管理)连续命令行脚本service属性服务Android中的Linux命令ps 命令与linux上的一致proc文件系统环境变量文件系统网络配置和信息route命令用于网络路由iftop实时流量监控工具netstat网络状态的信息获取工具vmstat在运行过程中,会定期打出一行的内容,表示系统当前的运行toptcpdump的全部内容,希望文章能够帮你解决Android调试命令总结am命令pm命令(应用程序包)input工具(模拟按键工具)ime工具(输入法管理)连续命令行脚本service属性服务Android中的Linux命令ps 命令与linux上的一致proc文件系统环境变量文件系统网络配置和信息route命令用于网络路由iftop实时流量监控工具netstat网络状态的信息获取工具vmstat在运行过程中,会定期打出一行的内容,表示系统当前的运行toptcpdump所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复