【Android】常用重要的adb命令
?如果你是一個有心人,查看了android手機(jī)中的目錄
1.你會發(fā)現(xiàn)平常使用的android adb 命令大多都在/system/bin 和/system/xbin;
2.兩個目錄中有android自己的命令,還有toolbox和busytool的命令;
3.我發(fā)現(xiàn)android 4.x(錘子)系統(tǒng)中有busybox工具,但是android6.0(華為)沒有,不知道是不是系統(tǒng)版本的問題,還是廠商的問題。有興趣可以多研究研究;
4.個人覺得在沒有root的手機(jī)上,我們主要關(guān)注/proc、/sys、/system三個目錄,當(dāng)然主要是關(guān)注與系統(tǒng)的命令、信息的交流;
5.上圖中有標(biāo)記黃色的,都是需要關(guān)注的。如:sdcard,根據(jù)個人需要來玩吧。下面使一些常用的命令
? 更深更厲害的如果喜歡可以自己去探索,想進(jìn)行大神級別的操作就看源碼自己coding吧!
-
查看ADB幫助(就知道有哪些adb的命令,就不舉例子了,下面介紹adb shell命令):
adb help
-
獲取手機(jī)的一些系統(tǒng)屬性信息(如:系統(tǒng)版本,手機(jī)廠商,手機(jī)型號,sdk版本等)
adb shell getprop? -
獲取序列號 |?查看連接計算機(jī)的設(shè)備 |?查看模擬器/設(shè)施的當(dāng)前狀態(tài):
adb get-serialno |?adb devices |?adb get-state? -
多設(shè)備下連接目標(biāo)設(shè)備:
adb -s xxx shell -
查看log(最好在抓取log前清除緩存):
adb logcat -c && adb logcat -s ActivityManager | findstr "Dispaly" -
服務(wù)停止與啟動:
adb kill-server ?| ? adb start-server?? -
查看Service列表
adb shell service list
adb shell dumpsys activity services
-
檢查Service是否存在
adb shell service check phone -
獲取機(jī)器MAC地址:
adb shell cat /sys/class/net/wlan0/address -
獲取CPU序列號:
adb shell cat /proc/cpuinfo
-
查看當(dāng)前內(nèi)存占用:
adb shell cat /proc/meminfo -
查看IO內(nèi)存分區(qū):
adb shell cat /proc/iomem
-
安裝APK:
adb install <apkfile> //比如:adb install baidu.apk -
保留數(shù)據(jù)和緩存文件,重新安裝apk:
adb install -r <apkfile> //比如:adb install -r baidu.apk -
安裝apk到sd卡:
adb install -s <apkfile> // 比如:adb install -s baidu.apk -
卸載APK:
adb uninstall <package> //比如:adb uninstall com.baidu.search -
卸載app但保留數(shù)據(jù)和緩存文件:
adb uninstall -k <package> //比如:adb uninstall -k com.baidu.search -
啟動應(yīng)用:
adb shell am start -n <package_name>/.<activity_class_name> -
查看數(shù)據(jù)庫:
adb shell content query --uri content://settings/secure -
查看設(shè)備cpu和內(nèi)存占用情況(參數(shù):前6個;10次后推出;延遲3s;顯示線程不顯示進(jìn)程 ):
adb shell top -m 6 -n 10 -d 3 -t? -
查詢各進(jìn)程內(nèi)存使用情況:
adb shell procrank -
殺死一個進(jìn)程:
adb shell kill [pid] -
查看進(jìn)程列表:
adb shell ps -
查看指定進(jìn)程狀態(tài):
adb shell ps -x [PID] -
adb 查看最上層成activity名字:
linux:
adb shell dumpsys activity | grep "mFocusedActivity"
windows:
adb shell dumpsys activity | findstr "mFocusedActivity" -
將system分區(qū)重新掛載為可讀寫分區(qū):
adb remount -
列出目錄下的文件和文件夾,等同于dos中的dir命令:
adb shell ls -
重命名文件:
adb shell rename path/oldfilename path/newfilename -
刪除system/avi.apk:
adb shell rm /system/avi.apk -
刪除文件夾及其下面所有文件:
adb shell rm -r <folder> -
移動文件:
adb shell mv path/file newpath/file -
設(shè)置文件權(quán)限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf -
新建文件夾:
adb shell mkdir path/foldelname -
查看文件內(nèi)容:
adb shell cat <file> -
查看wifi密碼:
adb shell cat /data/misc/wifi/*.conf -
獲取設(shè)備名稱:
adb shell cat /system/build.prop -
跑monkey:
adb shell monkey -v -p your.package.name 500 -
dump堆棧:
adb shell debuggerd -b <pid> -
備份與恢復(fù):
備份:
adb backup -f c:\allowBackup.ab -noapk com.ijinshan.browser_fast
恢復(fù):
adb restore "c:\allowBackup.ab" -
拷貝文件(這些命令都是在adb下用,而不是在shell中用):
push從電腦端向手機(jī)復(fù)制文件:
adb push ?pc_path ?android_path
pull從手機(jī)端向本地復(fù)制文件:
adb pull ?android_path ?pc_path -
查看應(yīng)用程序內(nèi)存使用情況:
adb shell dumpsys meminfo <package_name>其中,package_name 也可以換成程序的pid,
pid可以通過?adb shell top | grep app_name?來查找.
內(nèi)存使用情況參考http://blog.csdn.net/bigconvience/article/details/35553983 -
查看進(jìn)程占用cpu的情況:
adb shell top -n 1 -d 0.5 | grep proc_ id -
procrank查看內(nèi)存占用:
adb shell procrankVSS - Virtual Set Size 虛擬耗用內(nèi)存(包含共享庫占用的內(nèi)存)
RSS - Resident Set Size 實際使用物理內(nèi)存(包含共享庫占用的內(nèi)存)
PSS - Proportional Set Size 實際使用的物理內(nèi)存(比例分配共享庫占用的內(nèi)存)
USS - Unique Set Size 進(jìn)程獨自占用的物理內(nèi)存(不包含共享庫占用的內(nèi)存)
-
快速查看apk內(nèi)androidmanifest文件內(nèi)容:
aapt dump xmltree xxxx.apk AndroidManifest.xml -
列出一些系統(tǒng)信息和所有應(yīng)用的信息:
adb shell dumpsys packages > d:\\packages.txt -
列出一些指定應(yīng)用的信息:
adb shell dumpsys package [com.ijinshan.duba] > d:\\duba.txt -
查看當(dāng)前誰持有WAKE_LOCK鎖對象:
adb shell dumpsys power -
查看電池用量詳情:
adb shell dumpsys batteryinfo -
搜索文件:
busybox find -name *xxx* -
電池日志:
adb shell dumpsys batterystats > x:\batterystats.txt
bugreport日志:adb bugreport > x:\bugreport.txt -
電池日志圖形界面查看
https://github.com/cacker/battery-historian -
查看應(yīng)用uid
cat /proc/<pid>/status
cat /data/system/packages.list | grep xxx -
cpu頻率
查看:
cat [%cpuFreqPath%]/cpuinfo_cur_freq (當(dāng)前cpu頻率)
修改:
echo xxx > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorcat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq (當(dāng)前cpu頻率)
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq (最大cpu頻率)
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq (最小cpu頻率)
cat /sys/devices/system/cpu/cpu0/cpufreq/related_cpus (cpu數(shù)量標(biāo)號,從0開始,如果是雙核,結(jié)果為0,1)
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies (cpu所有可用頻率)
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors (cpu所有可用調(diào)控模式)
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor (當(dāng)前使用哪種調(diào)控模式)
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_transition_latency (變頻延遲) -
zygote的堆棧dump
adb shell // 進(jìn)入shell
chmod 777 /data/anr // /data/anr設(shè)置可讀寫權(quán)限
rm -r traces.txt // 刪除原始traces
adb shell ps //查看進(jìn)程pid
kill -3?//
adb pull /data/anr/traces.txt d:/trace.txt
trace中查看cpu調(diào)度的基本信息1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 "Thread-196" prio=5 tid=27 SUSPENDED | sysTid=2271 nice=0 sched=0/0 cgrp=apps/bg_non_interactive handle=1543812984 | state=S schedstat=( 1177036142201 119659820902 234955 ) utm=84431 stm=33272 core=0 #00 pc 000217a8 /system/lib/libc.so (__futex_syscall3+8) #01 pc 0000e09c /system/lib/libc.so (__pthread_cond_timedwait_relative+48) #02 pc 0000e0f8 /system/lib/libc.so (__pthread_cond_timedwait+60) #03 pc 0005419d /system/lib/libdvm.so (dvmChangeStatus(Thread*, ThreadStatus)+72) #04 pc 00049995 /system/lib/libdvm.so #05 pc 0004b9c1 /system/lib/libdvm.so #06 pc 0006e721 /system/lib/libandroid_runtime.so #07 pc 0001e610 /system/lib/libdvm.so (dvmPlatformInvoke+112) #08 pc 0004df29 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+500) #09 pc 00027a24 /system/lib/libdvm.so #10 pc 000fedc8 [stack:2271] at android.util.Log.println_native(Native Method) at android.util.Log.println(Log.java:332) at com.android.internal.os.AndroidPrintStream.log(AndroidPrintStream.java:47) at com.android.internal.os.LoggingPrintStream.println(LoggingPrintStream.java:311) at java.net.PlainSocketImpl.read(PlainSocketImpl.java:487) at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) at java.io.InputStream.read(InputStream.java:163) at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142) at java.io.BufferedInputStream.read(BufferedInputStream.java:309) at com.sina.push.i.c.c(SourceFile:241) at com.sina.push.i.c.b(SourceFile:133) at com.sina.push.i.c.d(SourceFile:270) at com.sina.push.i.c.e(SourceFile:496) at com.sina.push.i.c.<init>(SourceFile:97) at com.sina.push.b.a.b.a(SourceFile:56) at com.sina.push.b.e.a(SourceFile:166) at com.sina.push.b.e$b$a.run(SourceFile:487)
其中schedstat=( 1177036142201 119659820902 234955 ) utm=84431 stm=33272 core=0
從左到右六個數(shù)字分別是:
1- 當(dāng)前線程在cpu上消耗的時間
2- 當(dāng)前任務(wù)在CPU任務(wù)輪詢中的等待時間
3- 當(dāng)前線程在這個cpu上運行的次數(shù)
4- 當(dāng)前線程的用戶態(tài)執(zhí)行時間
5- 當(dāng)前線程的內(nèi)核態(tài)執(zhí)行時間
6- 當(dāng)前線程在哪里個核心上執(zhí)行
實際上描述了調(diào)度的基本信息
- SYSTEM LOG
logcat -b system -v time -d *:v?-b?// 加載一個可使用的日志緩沖區(qū)供查看,比如event和radio,默認(rèn)值是main.
system // system log
-v // 輸出字段 time 顯示時間
-d // 緩沖區(qū)日志打印并退出
*:v // 日志級別高到低 E W I D V
-
獲取編譯時間
cat /proc/version -
內(nèi)核崩潰
cat /proc/last_kmsg
總結(jié)
以上是生活随笔為你收集整理的【Android】常用重要的adb命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌搜索通告:疫情期间不要关站会影响网站
- 下一篇: 华为交换机flaping_MAC地址飘移