15.setting命令
setting命令可以很方便的更改系统设置中的参数(如修改系统默认输入法)
安卓Settings模块浅析:https://www.jianshu.com/p/ed8508fe4289
adb shell settings 控制安卓系统设置:https://blog.csdn.net/xingchenxuanfeng/article/details/52023048 <已看>
(0)# settings get system screen_off_timeout 获取屏幕的休眠时间
(1)# settings put system screen_off_timeout 999999999 设置屏幕的睡眠时间,也是用来设置系统的睡眠时间(下次断电上电后还是有效的)
(2)# settings get secure default_input_method 获得系统默认输入法
(3)# settings get system screen_brightness_mode 获取屏幕亮度模式
(4)# settings get system screen_brightness 获取屏幕亮度
(5)# settings put system screen_brightness 150 设置屏幕亮度为150
(6)# settings get global auto_time 获取日期时间选项中通过网络获取时间的状态
(7)# settings put global auto_time 0
(8)# settings get global wifi_on 获取系统wifi是否打开
(9) # settings put global wifi_on 0 关闭wifi
(10)# settings get global airlpane_mode_on 获取系统是否处于飞行模式
(11)# settings get secure android_id 获取android_id
注意这里面的system和global的区别 ?
16.TODO:怎样让Android一启动就执行一个脚本?
17.TODO:查frameworks/base/packages/SettingsProvider/res/values/defaults.xml这个文件作用?
18.查一运行adb,Ubuntu就非常卡 ?
19. pm命令
# pm list packages 列出应用列表,eg: package:android.car.usb.handler,加-s列出系统应用,加-3列出第三方应用,加[name]列出与name相关的应用(等效grep)。
# pm clear <packagename> 相当于在设置里的应用信息界面点击了「清除缓存」和「清除数据」。
21.am命令
1.am主要用于与应用程序交互,用法:am <command> 常用的<command>如下:
# start [options] <INTENT> 启动 <INTENT> 指定的 Activity
# startservice [options] <INTENT> 启动 <INTENT> 指定的 Service
# broadcast [options] <INTENT> 发送 <INTENT> 指定的广播
# force-stop <packagename> 停止 <packagename> 相关的进程, <INTENT> 参数很灵活,和写 Android 程序时代码里的 Intent 相对应。
# am start [options] <INTENT> 调起 Activity,eg: am start -n com.tencent.mm/.ui.LauncherUI
# am startservice [options] <INTENT> 调起service,eg: am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
# am broadcast [options] <INTENT> 发送广播,eg: am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver 表示向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 发送一个BOOT_COMPLETED广播,这类用法在测试的时候很实用,比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。
# am force-stop <packagename> 强制停止某一个应用
22.input命令来模拟按键输入
1.eg输入触摸: # input touchscreen tap 50 250 # input touchscreen tap 1000 250 在屏幕上可以看到和触摸了屏幕一样的效果。
2.input keyevent <keycode> 3表示home键,4表示返回键
3.input keyevent 26 电源键,关闭电源,此时车机就关机了。
4.input keyevent 82 菜单键
5.input text 12345678 例如屏幕上显示要输入wifi密码,此时这条指令就会把密码输出到屏幕中显示密码的位置。
23.adb相关命令
1.adb pull <设备里的文件路径> [电脑上的目录] 复制设备里的文件到电脑(adb命令都是在PC上执行的)
2.adb push <电脑上的文件路径> <设备里的目录>
24.logcat命令
1.logcat *:W 过滤日志则会将该级别及以上的日志输出
2.logcat ActivityManager:I MyApp:D *:S 表示输出tag=“ActivityManager”的Info以上级别日志,输出tag=“MyApp”的Debug以上级别日志,及其它tag的Silent级别日志(即屏蔽其它 tag 日志)。
3.logcat默认的几种输出格式为:
(1)brief格式为:<priority>/<tag>(<pid>): <message> eg: D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
(2)process格式为:<priority>(<pid>) <message> eg: D( 1785) Disconnected process message: 10, size: 0 (HeadsetStateMachine)
(3)tag格式为:<priority>/<tag>: <message> eg: D/HeadsetStateMachine: Disconnected process message: 10, size: 0
(4)raw格式为:<message> eg: Disconnected process message: 10, size: 0
(5)time格式为:<datetime> <priority>/<tag>(<pid>): <message> eg: 08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
(6)threadtime格式为:<datetime> <pid> <tid> <priority> <tag>: <message> eg: 08-28 22:39:39.974 1785 1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
(7)long格式为:[ <datetime> <pid>:<tid> <priority>/<tag> ] <message> eg: [ 08-28 22:39:39.974 1785: 1832 D/HeadsetStateMachine ] Disconnected process message: 10, size: 0
25.getprop获取系统属性
# getprop ro.product.model 查看设备信息 eg: Nexus 5
# getprop ro.build.version.release 获取Android系统的版本,如8.1.0
26.dumpsys 查看系统的状态 TODO:查它的具体功能 ?
1.# dumpsys battery 查看电池状态
level: 100 //当前电量
scale: 100 //最大电量
2.# dumpsys window displays 查看显示屏参数。 其打印信息中mDisplayId为显示屏编号,init是初始分辨率和屏幕密度,若app的高度比init里的要小,表示屏幕底部有虚拟按键。
3.类似命令还有:dumpcache dumpstate dumpsys TODO:查
27.wm命令
1.# wm size 查看屏幕分辨率 eg: wm size打印Physical size: 2608x720,可以看出双屏使用同一framebuffer.
2.# wm density 查看屏幕密度
28.查看各个网口的MAC地址
# cat /sys/class/net/wlan0/address
# cat /sys/class/net/eth0/address
29.CPU信息
# cat /proc/cpuinfo
29.查看更多硬件属性配置信息
# cat /system/build.prop 它里面的每一项可以通过getprop命令单独查看
30.screencap命令
# screencap -p /sdcard/sc.png 屏幕截图,目前测试发现若是有2个屏,截的图只是一个屏的。用-d指定另一个屏的id也截取不到。
31.screenrecord命令
# screenrecord /sdcard/filename.mp4 屏幕录制,停止时按 Ctrl-C,默认录制时间和最长录制时间都是 180 秒
32.wifi的配置文件目录
# ls /data/misc/wifi/
33.data命令设置系统时间
# date -s 20160823.131500
34.monkey命令
# monkey -p <packagename> -v 500 使用monkey进行压力测试,向 <packagename> 指定的应用程序发送 500 个伪随机事件。Monkey 的详细用法参考 官方文档:https://developer.android.com/studio/test/monkey.html
35.重启到recovery模式
# reboot recovery 重启到recovery模式
# reboot 从recovery重启到Android
# reboot bootloader 重启到 Fastboot 模式
36.getevent可以用来监听系统中所有的输入设备产生的事件
37. ps 命令
# ps --help
用法:ps [-AadefLlnwZ] [-gG GROUP,] [ -k FIELD,] [ -o FIELD,] [ -p PID,] [-t TTY,] [-uU USER,]
作用:列出进程信息。
eg:多个选项一起使用:# ps -o SCHED, -t, -g system, -o TCNT,
(1)要显示的进程(选择可能是以逗号分隔的列表):
-A 所有进程
-a 具有非会话领导者的终端的进程
-d 所有不是会话领导者的进程
-e 与-A相同
-g 属于GROUPs
-G 属于真正的GROUPs(在sgid之前)
-p PIDs(--pid)
-P 父PID(--ppid)
-s 在会话ID中
-t 附加到选定的TTY
-T 显示主题
-u 由USERs拥有
-U 由真实用户拥有(在suid之前)
eg:
# ps -g system 查看group为system的所有进程,其它可选项:root wifi radio audioserver logd bluetooth media vehicle_network shell cameraserver drm keystore mediaex mediacodec tombstoned bluetooth u0_aXX webview_zygote
# ps -P 1 列出init进程创建的伺服进程
# ps -p 2 然后再# ps -P 2 可以列出由kthreadd创建的伺服进程
# ps -t ttyMSM0 列出占用串口ttyMSM0的进程。结合cat /proc/cmdline中的console=ttyMSM0可以知道占用控制台的是哪些进程。
(2)对输出做修改:
-k 按+增加或-降低顺序(--sort)对FIELD进行排序
-M 测量字段宽度(根据需要扩展)
-n 显示数字USER和GROUP
-w 宽输出(不截断字段)
eg:
# ps -n 1 列出init进程的使用个数
(3)要显示哪些域(默认 = -o PID,TTY,TIME,CMD)
-f 完整列表(-o USER:12=UID,PID,PPID,C,STIME,TTY,TIME,ARGS=CMD)
-l 长列表(-o F,S,UID,PID,PPID,C,PRI,NI,ADDR,SZ,WCHAN,TTY,TIME,CMD)
-o 输出FIELD而不是默认值,每个都有可选的:size和= title
-O 将FIELDS添加到默认值
-Z 包括LABEL
(4)输出的域解释
ARGS 减去初始化路径的commandline
CMD Command (thread) name (stat[2])
CMDLINE Command line (argv[])
COMM Command filename (/proc/$PID/exe)
COMMAND Command file (/proc/$PID/exe)
NAME Process name (argv[0] of $PID)
eg:
# ps -A -o CMDLINE 只想要所有进程的cmdline
(5)使用-o输出的进程的属性
ADDR 指令指针
BIT 这个过程是32位还是64位 eg: # ps -A -o BIT 发现的确有32bit的
CPU 运行哪个处理器 eg: # ps -A -o CPU 查看所有进程都运行在哪个CPU下
ETIME 自PID启动以来经过的时间 eg:# ps -g bluetooth -o ETIME 看bluetooth服务启动时长,以分:秒表示
F 标志(1 = FORKNOEXEC 4 = SUPERPRIV) eg: # ps -g bluetooth -o F
GID 查看group ID eg: # ps -g bluetooth -o GID
GROUP 组名称 eg: # ps -g bluetooth -o GROUP
LABEL 安全标签 eg: # ps -g bluetooth -o LABEL
MAJFL 主要页面错误 eg: # ps -g bluetooth -o MAJFL
MINFL 次要页面错误 eg:# ps -g bluetooth -o MINFL
NI nice值(越低越快) eg: # ps -g bluetooth -o NI
PCPU 使用的CPU时间百分比 eg: # ps -g bluetooth -o PCPU
PCY Android调度策略 eg:# ps -g bluetooth -o PCY
PGID 流程组ID eg: # ps -g bluetooth -o PGID
PID 进程ID eg:# ps -g bluetooth -o PID
PPID 父进程ID
PRI 优先级(更高更快) eg: # ps -g bluetooth -o PRI
PSR 处理器最后执行了 eg: # ps -g bluetooth -o PSR
RGID Real(在sgid之前)组ID eg:# ps -g bluetooth -o RGID
RGROUP Real(在sgid之前)组名
RSS 常驻集大小(正在使用的页面) eg: # ps -g bluetooth -o RSS
RTPRIO 实时优先级 eg:# ps -g bluetooth -o RTPRIO
RUID Real(在suid之前)用户ID
RUSER Real(在suid之前)用户名 eg: # ps -g bluetooth -o RUSER
S 流程状态:R(运行) S(休眠) D(设备I/O) T(停止) t(跟踪) Z(僵尸) X(deader) x(死) K(wakekill) W(醒来)
SCHED 调度策略(0 = other,1 = fifo,2 = rr,3 = batch,4 = iso,5 =空闲)
STAT 过程状态(S)加:
<高优先级 N低优先级 L锁定存储器
会话负责人+前台l多线程
STIME 以hh开始的过程开始时间:mm(size:19表示yyyy-mm-dd hh:mm:ss)
SZ 内存大小(完全换出进程需要4k页) eg: # ps -g bluetooth -o SZ
TCNT 线程数 eg: # ps -g bluetooth -o TCNT
TID 线程ID eg: # ps -g bluetooth -o TID
TIME CPU的时间消耗
TTY 控制终端
UID 用户ID
USER 用户名
VSZ 虚拟内存大小(1k单位) eg:# ps -g bluetooth -o VSZ
%VSZ VSZ占物理内存的百分比 eg:# ps -o %VSZ
WCHAN 我们在内核中等待什么 eg: # ps -g bluetooth -o WCHAN