Android命令行工具學習總結


 

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>              強制停止某一個應用

參考:Am命令用法

 

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相關命令

adb學習筆記 

24.logcat命令

Android中的logcat和日志打印

 

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.內核中進程狀態的定義

static const char * const task_state_array[] = {

    /* states in TASK_REPORT: */
    "R (running)",        /* 0x00 */
    "S (sleeping)",        /* 0x01 */
    "D (disk sleep)",    /* 0x02 */
    "T (stopped)",        /* 0x04 */
    "t (tracing stop)",    /* 0x08 */
    "X (dead)",        /* 0x10 */
    "Z (zombie)",        /* 0x20 */
    "P (parked)",        /* 0x40 */

    /* states beyond TASK_REPORT: */
    "I (idle)",        /* 0x80 */
};

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM