一、命令篇
內存查看:
使用場景:跟蹤進程內存使用情況,看是否存在內存回收不瞭的問題,如果程序存在內存泄露問題,通過內存動態占用情況可以看出一些端倪。
2 查看系統dalvik給每一個進程分配的可用內存情況:
root@android:/ # getprop
[dalvik.vm.heapgrowthlimit]: [192m] :進程最大可分配到192m 如果哪個進程超過這個值就會發生OOM問題。
[dalvik.vm.heapmaxfree]: [8m]
[dalvik.vm.heapminfree]: [2m]
[dalvik.vm.heapsize]: [256m] :單個虛擬機可分配的最大內存=256m
[dalvik.vm.heapstartsize]: [8m]
2 查應用進程占用內存分佈:
root@android:/ # dumpsys meminfo
2 查指定進程占用內存情況,比如電話進程
root@android:/ # dumpsys meminfo | grep phone
2 查指定幾個進程占用內存情況,比如電話進程、電話本進程、信息進程
root@android:/ # dumpsys meminfo | grep -E “phone|mms|contacts”
內存泄露分析:
https://blog.csdn.net/rambomatrix/article/details/17485503
AM調試:
2 模擬發送廣播:通過命令行執行adb shell am broadcast發送廣播通。這個在調試的時候常用到。
adb shell am broadcast 後面的參數有:
[-a ]
[-d ]
[-t ]
[-c [-c ] …]
[-e|–es …]
[–ez …]
[-e|–ei …]
[-n ]
[-f ] []
例如:adb shell am broadcast -a com.android.test –es test_string “this is test string” –ei test_int 100 –ez test_boolean true說明:藍色為key,紅色為alue,分別為String類型,int類型,boolean類型
2 Android AM命令行啟動程序的方法
附上鏈接,感覺不是很常用到。
https://blog.csdn.net/sunrock/article/details/5675067
ADB命令調試
Debug 版本機器:
adb remount 重新掛載文件系統
adb pull …/Phone.apk g:/ 把Phone.apk從手機中取出來放到G盤。如果需要反編譯別人機器的apk,可以這樣取出來。
adb push …/Phone.apk system/app 把修改後的Phone.apk放入手機,放入以後需要讓phone進程重啟一次。
root@android:/ ps | grep phone 查找phone進程的pid
root@android:/ kill 1212 殺掉phone進程
USER版本機器:
使用 刷機精靈 ROOT,root成功率很高。
adb shell 進入shell
Su 獲取Root權限
root@android:/# chmod -R 777 system/ 給指定目錄賦予讀寫權限,然後可以更改這個目錄 裡面的文件。
抓取LOG
2 Adb logcat
Android日志系統為日志消息保持瞭多個循環緩沖區,而且不是所有的消息都被發送到默認緩沖區,要想查看這些附加的緩沖區,可以使用-b 選項,以下是可以指定的緩沖區:
radio — 查看包含在無線/電話相關的緩沖區消息
events — 查看事件相關的消息
main — 查看主緩沖區(默認緩沖區)
常用的打印方法有:
-v time 打印時間
-c 清理緩沖,在打印Log之前可以先執行一次清理,可以減少無效log。
-s LOG_TAG 打印指定的log tag對應的log
-f 文件名 將日志輸出到文件
CPU /THREAD查看
查看當前應用有多少個線程在跑,每個線程cpu使用情況如何。如果程序寫的有問題,開啟瞭一些線程在後臺跑卻從未釋放,可能給程序帶來嚴重的影響。
root@android:/ # top -t
可以看到電子郵件這個應用裡面所有的線程使用cpu的情況。這個數據在分析一些cpu使用高的問題時很好用。
歡迎大傢補充。