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 可以用在批處理檔案中,也可以用在命令列中 展開後,是驅動器碟符 當...