android在開發者模式下,我們能夠使用adb執行andorid裝置上system/bin/目錄下的幾乎所有命令。這些命令有的和linux的原始命令功能一樣,有些是android獨有的,有些是平台新增的。但他們無一例外,功能都相當強大。熟練使用這些命令,可以有效的減少程式除錯的工作量。
adbadb devices 列出當前連線到pc的android裝置
adb -s
當連線到當前pc的android裝置大於1個時,可以使用此命令給特定的android裝置傳送指令
adb root 給adb賦予root許可權
adb remount 重新掛載檔案系統
adb kill-server 結束adb服務
adbstart-server 選擇服務是否啟動adb服務
adb install從pc安裝軟體到android裝置
adb uninstall
adb shell ps | grepphone 查詢phone程序的pid
adb shell kill pid 殺掉phone程序
adb reboot 重啟android裝置
adb rebootbootloader 重啟進入fastboot模式
adb rebootrecovery 重啟進入recovery模式
adb logcat
android日誌系統為日誌訊息保持了多個迴圈緩衝區,而且不是所有的訊息都被傳送到預設緩衝區,要想檢視這些附加的緩衝區,可以使用-b 選項,以下是可以指定的緩衝區:
radio — 檢視包含在無線/**相關的緩衝區訊息
events — 檢視事件相關的訊息
main — 檢視主緩衝區(預設緩衝區)
常用的列印方法有:
-v time 列印時間
-c 清理緩衝,在列印log之前可以先執行一次清理,可以減少無效log。
-s log_tag 列印指定的log_tag 對應的log
-f 檔名 將日誌輸出到檔案
adb bugreport 獲取bugreport log
#cat /proc/kmsg 或者dmesg 檢視核心log資訊
cpu/thread檢視
檢視當前應用有多少個執行緒在跑,每個執行緒cpu使用情況如何。如果程式寫的有問題,開啟了一些執行緒在後台跑卻從未釋放,可能給程式帶來嚴重的影響。一般在分析一些cpu使用高的問題時很好用。
#top -t
amam指令可以傳送廣播,可以啟動activity,可以啟動服務,同時還能在特定的視窗關閉他們。因此對於ui除錯和模組交叉除錯十分有用,一是對於一些不設定launcher的動作的activity,沒有辦法通過選單啟動,這時可以使用am指令,二是對於一些需要引數才能執行的activity,直接執行可能出錯或者無法呼叫其功能,需要am來啟動。三是在一些launcher和螢幕鎖視窗,沒有辦法直接呼叫其他程式,但其他程式又會在特定條件下在這些視窗啟動,為了測試他們互動運**況,需要am指令。四對於一些在特定某些廣播下執行的服務,活動,廣播接收器來說,除錯難度很大,使用am可以輕鬆解決。五對於一些視窗呼叫出錯的程式,也可以通過am指令來驗證是傳送出錯還是接收出錯。
#am start -ncom.android.music/com.android.music.musicbrowseractivity 啟動某activity
#am start -aandroid.intent.action.call -d tel:10086 撥號
#am start -aandroid.intent.action.view -d 開啟網頁
#am broadcast -aandroid.intent.action.boot_completed 傳送廣播
#am startservicecom.android.music/.mediaplaybackservice 啟動服務
pm使用pm命令可以列出手機上安裝的apk與對應的軟體包,由於使用命令刪除apk時,需要知道包名,通過這條命令加上grep或者find就能找到需要的軟體的包名
#pm list packages -f
找出對應包的安裝目錄路徑,兩條指令結合,可以知道要拷貝給別人的軟體位於手機什麼地方
#pm pathcom.android.music
可以列出使用的許可權
#pm listpermission-groups
#pm list permissions
sqlite3
#sqlite3data/data/com.android.settings/databases/profileprovider.db
sqlite version3.6.22
enter".help" for instructions 檢視幫助
enter sql statementsterminated with a ";"
sqlite>
常用命令
sqlite>.tables 檢視資料庫中所有表
sqlite>.modeline 一行乙個值輸出檢視結果
sqlite>select *from profiles; 檢視表中所有欄位及值
sqlite>.quit 或者 sqlite>.exit 退出sqlite命令列
記憶體檢視
使用場景:跟蹤程序記憶體使用情況,看是否存在記憶體**不了的問題,如果程式存在記憶體洩露問題,通過記憶體動態占用情況可以看出一些端倪。
檢視系統dalvik給每乙個程序分配的可用記憶體情況:
#getprop 獲得當前裝置的屬性
[dalvik.vm.heapgrowthlimit]:[192m] :程序最大可分配到192m 如果哪個程序超過這個值就會發生oom問題。
[dalvik.vm.heapsize]:[256m] :單個虛擬機器可分配的最大記憶體=256m
dumpsys
meminfo 顯示記憶體資訊
cpuinfo 顯示cpu資訊
account 顯示accounts資訊
activity 顯示所有的activities的資訊
window 顯示鍵盤,視窗和它們的關係
wifi 顯示wifi資訊
查應用程序占用記憶體分布:
#dumpsys meminfo
#procrank
#procrank |busyboxgrep -e "phone|mms|contacts" 檢視指定程序的記憶體占用情況
每隔10秒輸出一次music程序記憶體占用情況(指令碼)
#!/bin/bash
while true;do
adb shell procrank |grep com.android.music
sleep 10
done
#df檢視分割槽使用情況
# busybox du -h -d 1system/ 檢視system目錄下子目錄占用情況
#mount 檢視分割槽掛載資訊
ps:還有乙個強大的busybox工具,就不列了,命令太多了,不一一列出了,在使用過程中不知道怎麼使用的,千萬別忘記「help」
…....待續
Linux 常用命令集合
1.常用命令 ls 顯示當前目錄下的檔案和資料夾 ltr 按時間順序顯示檔案和資料夾的詳細資訊,不帶引數的時候 只顯示資料夾和檔案。vi 開啟檔案的內容 tar cvf file.tar file 壓縮成tar包 tar xvf file.tar file 解壓縮tar包,後面的file可以不用寫,...
Linux常用命令集合
下文中的一些linux命令是我在工作中用到收集而來的,較為碎片化,然後,不定時更新 檢視軟體是否安裝。列出所有安裝的dockerrpm qa grep docker軟體是否安裝rpm q grep docker列出軟體包安裝的檔案rpm ql docker檢視軟體所有安裝包的檔案儲存位置rpm qa...
Linux 常用命令集合
這裡記錄下linux小白常用的命令吧 1.目錄 檔案等操作 rm rf 刪除某目錄 mv 原始檔 目標檔案 類似於搬家或者重新命名 cd 返回上一級目錄 ssh 從12號登陸18號 ssh txz 11.11.11.18或者ssh txz node18 在 etc hosts裡有對應關係 scp 檔...