接着前几天写的ADB常用命令总结 续。
接下来写一些和应用交互的一些命令,格式如 adb shell am <command>。
adb shell 我总结分为 am命令 和 pm命令。
那么 adb命令和adb shell命令有什么区别呢?adb命令是adb这个程序自带的一些命令,而adb shell则是调用的Android系统中的命令,这些Android特有的命令都放在了Android设备的系统/ bin目录下。通过这些命令可以和Android系统的一些软件交互。其实上一篇文章已经有过一些adb shell 命令了。比如adb shell pm list packages 查看应用
Activity Manage
am 即 Activity Manage .使用它可以启动一个Activity 、Service 、Broadcast
主要是使用 am <command> 命令,常用的 <command> 如下:
.<INTENT> 参数很灵活,和写 Android 程序时代码里的 Intent 相对应,参数如下:
-a <ACTION> 指定 action,比如 android.intent.action.VIEW
-c <CATEGORY>指定 category,比如 android.intent.category.APP_CONTACTS
-n <COMPONENT> 指定完整 component 名,用于明确指定启动哪个 Activity,如 com.example.app/.ExampleActivity
<INTENT> 里还能带数据,就像写代码时的 Bundle 一样
1. 调起 Activity
adb shell am start [options] <INTENT>
比如:adb shell am start -n com.tencent.mm/.ui.LauncherUI 调用微信的界面
2.调起 Service/停止 Service
adb shell am startservice [options] <INTENT> 调起 Service
adb shell am stopservice [options] <INTENT>
比如:adb shell am startservice -n com.tencent.mm/.**.Service
adb shell am stopservice -n com.tencent.mm/.**.Service
调用微信下的某个Service
3.发送广播
adb shell am broadcast [options] <INTENT>
发送广播可以是向所有组件发送广播,也可以是只向某个组件发送一个广播
向所有组件发送一个BOOT_COMPLETED广播:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
向单个组件发送一个BOOT_COMPLETED广播:
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n cn.com.quickpark/.MyBrocastReceiver
使用 -a 广播名 -n 接收的Receiver 。这一条am 命令很使用 比如说我们的开机广播、电量广播比较难捕获,可以自己发送一条广播,就很容易测试我们的程序
下面是可以用adb发送的广播
4.停止某个应用
adb shell am force-stop <packagename>
比如:adb shell am force-stop cn.com.quickpark ,表示停止cn.com.quickpark 下的一切进程
Package Manage
pm 即 Package Manage,用于和一些应用相关的命令
1.查看设备所有的应用
adb shell pm list packages
添加过滤参数
在后面 添加一个命令过滤 比如只查看系统应用:
adb shell pm list packages -s
只查看第三方应用:
adb shell pm list packages -3
包名包含某字符串的应用:
查看包名包含字符串 tencent 的应用列表
adb shell pm list packages tencent
2.清除应用数据与缓存
adb shell pm clear <packagename>
效果相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。比如:adb shell pm clear com.qihoo360.mobilesafe 清除 360 手机卫士的数据和缓存
3.查看应用安装路径
adb shell pm path <PACKAGE>
比如:
adb shell pm path cn.com.quickpark 。输出package:/data/app/cn.com.quickpark-1.apk
模拟按键/输入(input)
另外 还有一个比较实用的功能就是input。开发中可以用它方便很多操作。格式如下:
input [<source>] <command> [<arg>...]
查看 input 命令的完整 help 信息如下:
比如使用 adb shell input keyevent <keycode> 命令,不同的 keycode 能实现不同的功能,部分Keycode如下:
按一次电源键
adb shell input keyevent 26
菜单键
adb shell input keyevent 82
滑动解锁
如果锁屏没有密码,是通过滑动手势解锁,那么可以通过 input swipe 来解锁。
命令(参数以机型 Nexus 5,向上滑动手势解锁举例):
adb shell input swipe 300 1000 300 500
参数 300 1000 300 500 分别表示起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标
查看日志
Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log
[adb] logcat [<option>] ... [<filter-spec>] ...
内核日志
adb shell dmesg
中括号里的 [14201.684016] 代表内核开始启动后的时间,单位为秒。
通过内核日志我们可以做一些事情,比如衡量内核启动时间,在系统启动完毕后的内核日志里找到 Freeing init memory 那一行前面的时间就是
网友评论