常用android命令備忘錄

2021-09-01 09:10:38 字數 4665 閱讀 8000

1. 常用基本命令

adb devices

檢視當前掛載手機裝置的資訊

adb root

root userdebug版本的手機。

adb remount

將 '/system' 目錄改為可寫入的模式,預設情況下 '/system' 部分是唯讀模式的。

這個命令只適用於已被 root 的裝置, 即呼叫過 adb root之後。

注意,使用其他命令之前,最好先使用adb root和adb remount命令。

adb push test.mp4 /sdcard/

push 檔案置於sdcard下

adb pull /sdcard/test.mp4 .

將手機中特定的檔案pull到本地

adb shell

進入手機模式

adb shell + 其他linux命令

呼叫手機的一些命令,如 adb shell chmod 0777 /system/bin/test_bin

adb shell am broadcast -a android.intent.action.media_scanner_scan_file -d file:///sdcard/test.mp4

掃瞄/sdcard/目錄下,test.mp4的metadata資訊,如縮圖,時長,編碼格式等資訊。

adb shell am broadcast -a android.intent.action.media_mounted -d file:///mnt/sdcard/

adb shell pkill media

殺掉程序名中帶media關鍵字的相關進場,不需要在手機模式下: ps -df | grep mediaserver; kill -9 mediaserver程序號,這些繁瑣的操作

adb shell getprop

獲取手機所有的屬性鍵值

adb shell getprop media.stagefright.extractremote

檢視是否以remote的模式執行mediaextractor,即mpeg4extractor等解析器是否執行在media.extractor 程序中(注:android 7.0之後,將mediaserver程序拆分成mediaserver, media.extractor, media.codec等粒度更小的程序,但保留了這個鍵值屬性,手機廠商可以選擇解析執行在media.extractor還是mediaserver進場)

adb shell setprop media.stagefright.extractremote false

將media.stagefright.extractremote屬性值設定為false, 保證解析器執行在mediaserver程序中。

2. 常用除錯命令
adb logcat

檢視手機緩衝區的ap log

adb logcat -c && adb logcat -v threadtime

清除手機緩衝區log,並實時檢視ap log

adb logcat -s mediaplayer

過濾 log_tag 為 mediaplayer的相關ap log

adb logcat | grep "mediaplayer"

過濾log中包含"mediaplayer"相關的ap log

adb logcat | grep -e "mediaplayer|nuplayer"

過濾多個關鍵字相關的ap log

adb shell dmesg

檢視緩衝區的kernel log (只要距離開機的相對時間段, 沒有時間資訊,不推薦使用)

adb shell dmesg -c

檢視緩衝區的kernel log並 clear

adb shell dmesg -c

清除緩衝區的kernel log, 不會顯示到終端裝置上

adb shell dmesg -c && adb shell dmesg -w

清除緩衝區的kernel log, 並迴圈呼叫adb shell dmesg 以便實時顯示 kernel log

備註: 上述的dmesg命令不直觀,不推薦使用,推薦如下用法

adb logcat -b kernel

檢視kernel log

adb logcat -b kernel -c && adb logcat -v threadtime -b kernel

清除快取的kernel log並實時檢視kernel log

adb shell debuggerd -b + 程序號

檢視當前指定程序的各個執行緒呼叫棧

如: $adb shell ps -df | grep audioserver

audioserver 719 1 0 15:51:31 ? 00:00:15 [email protected]

audioserver 919 1 0 15:51:32 ? 00:00:04 audioserver

$adb shell debuggerd -b 919 > ~/tmp.txt

3. 部分專用除錯命令
adb shell dumpsys

檢視手機上所有的service的執行狀態(強烈不推薦這個命令,資訊太多了,不好查詢有用資訊)

adb shell service list

檢視手機上所有執行的service name(用於dumpsys後跟的引數)

我們檢視了所有的service,可以一一dumpsys指定service的狀態

adb shell dumpsys media.player

adb shell dumpsys battery

檢視當前電池的狀態資訊,是否在充電等資訊

adb shell tcpdump -s 0 -i wlan0 -w a.pcap 

抓取wlan0網絡卡的資料 並寫到 a.pcap檔案裡

根據網絡卡的不同 可能為p2p0等裝置

使用 wireshark來檢視

如果想看具體包資訊 可以過濾 http包 只看 http最後的 http/1.1 200 ok

中的conenet-length欄位 如果沒有設定 前端拿到的就是 -1

5、通過wifi連線adb來檢視log

此方法使用於手機的usb埠被其他裝置占用的情形

5.1 檢視手機ip位址

連上手機,adb shell ifconfig

找到wlan0中 inet addr: 後面的ip位址

5.2 連線埠
adb tcpip 1234

其中1234為埠號,保證沒有被其他模組使用即可

5.3 連線手機
adb connect ip:port 方式

例:adb connect 192.168.0.1:1234

注意手機和pc必須在同乙個網段中

為了不用每次都敲這些命令,我做成了bash指令碼,如下:

#!/bin/sh

adb root

sleep 1

addr_line=`adb shell ifconfig | grep "inet addr:.* bcast:"`

addr=`echo $ | sed 's/.*inet addr:\(.*\) b.*/\1/g'`

random_num=`date +%s%n`

range=$((65536 - 49152))

delta=$(( $random_num % $range))

#port=`expr 49152 + 10`

#port=$[ 49152 + 10 ]

if [ -z $1 ]; then

port=`expr 49152 + $delta`

else

port=$1

fiecho "random_num:'$random_num',range:'$range', delta:$delta, port:'$port'"

adb tcpip $

sleep 1

echo adb tcpip $

#echo adb tcpio

#sudo /home/ruzhi/system-config/bin/linux/adb connect $:$

adb connect $:$

echo adb connect $:$

echo ------------------------------------------

adb devices

---------------------

原文:

使用說明

使用說明:

將此段sh儲存到指令碼中,連線手機,

直接執行 指令碼 + 指定埠號,

比如我將這段**儲存到con.sh中,執行時輸入

con.sh 1234

指令碼會自動搜尋手機ip 位址,之後連線 1234 埠號

為了保證更高的效率,指令碼後面也可以不指定埠號,即

con.sh

埠號為 49152 - 65536 之間的乙個隨機埠號,大部分不會被占用。

---------------------

原文:

Vim 命令 備忘錄

vim 中的內部命令與 vi 編輯器中的內部命令類似。表 1 提供了 vim 中的游標移動命令。表 1.用於移動游標的 vim 命令 命令動作 h將游標向左移動 j 加號 enter 或 return 將游標向下移動 k 減號 將游標向上移動 l將游標向右移動 將游標移動到當前段落的末尾 將游標移動...

github命令備忘錄

因為公司所有的 全部放在linux系統伺服器下,並且用git分布式管理,所以工作中難免會用到許多命令,很多較少用記錄下來以備用 git的用法 1 git brach 檢視分支情況 2 git checkout master 切換到master 3 git pull 更新 從git伺服器更新 4 gi...

DOS命令備忘錄

在dos的批處理中,有時候需要知道當前的路徑。在dos中,有兩個環境變數可以跟當前路徑有關,乙個是 cd 乙個是 dp0。乙個是 cd 只與當前目錄有關 乙個是 dp0。只與指令碼有關 這兩個變數的用法和代表的內容是不同的。1.cd 可以用在批處理檔案中,也可以用在命令列中 展開後,是驅動器碟符 當...