1. adb devices
主要作用:查看當前已連接的設(shè)備,連接到計算機的Android設(shè)備或者模擬器將會以列表的形式顯示。
輸出格式:[serialNumber][state]
l? 如果當前沒有模擬器或者設(shè)備運行,adb則會返回List of devices attached為空
l? offline:表明設(shè)備沒有連接到計算機或無響應(yīng)
l? device:設(shè)備已經(jīng)連接到計算機。注意,該狀態(tài)并不表示Android設(shè)備可用,當Android設(shè)備處于啟動階段時,若連接成功也會返回該狀態(tài)。
2.? ? adb install <apk文件路徑>
主要作用:將指定的apk文件安裝到設(shè)備上,<apk文件路徑>可以從本地文件夾拖動到終端中。
常用參數(shù):
adb install –r 覆蓋安裝
adb install –s 安裝到SD卡
adb install –rs覆蓋安裝到SD卡
adb –s <serial number> install 選定設(shè)備安裝
當有多個設(shè)備連接時,可以用下面的命令來直接選定設(shè)備進行安裝。
adb [-d|-e|-s <serial number>] install <path_to_apk>
d:真機(多個設(shè)備中只有一個真機時適用)
e:模擬器(多個設(shè)備中只有一個模擬器時適用)
s:序列號
adb –d install ./test.apk
adb –s emulator-5556 install ./test.apk
3.? ? adb uninstall <包名>
主要作用:卸載設(shè)備上的指定程序
查看包名路徑:/data/app,系統(tǒng)安裝包路徑:/sys/data,這兩個路徑下文件的查看都需要root權(quán)限
adb uninstall –k <包名>
adb shell pm uninstall –k <包名>
卸載程序但是保留其配置和緩存文件,即/data/data/packname下的數(shù)據(jù)與/sdcard/程序名 的數(shù)據(jù)
4.? ? adb push/pull
主要作用:復制文件
1)adb push <本地路徑><設(shè)備路徑>
把pc上的文件或文件夾復制到設(shè)備中。
adb push /home/test.apk /sdcard/
2)adb pull <設(shè)備路徑><本地路徑>
把設(shè)備上的文件或文件夾復制到電腦
adb pull /sdcard/log/test.xls /home/
Pull命令后可不輸入本地地址,不輸入時文件會復制到當前終端所在目錄
5.? ? 關(guān)閉和啟動adb服務(wù)
sudo –s
adb kill-server? //關(guān)閉adb服務(wù)
adb start-server //啟動adb服務(wù)
6.? ? sudo –i和sudo –s的區(qū)別
sudo –i:在root用戶下,使用root權(quán)限執(zhí)行adb命令
sudo –s:在當前用戶下,使用root權(quán)限執(zhí)行adb命令
7.? ? adb logcat
主要作用:查看日志,在命令行中顯示調(diào)試信息
adb logcat >> <指定文件路徑>? 將logcat信息保存在指定文件中
>> 追加
>覆蓋
adb logcat –help:查看logcat命令幫助文檔
adb logcat -v time >C:\Users\pphou\Desktop\error.log
每一條日志消息都有一個標記和優(yōu)先級與其關(guān)聯(lián)。
格式為:<priority>/<tag>
過濾不同優(yōu)先級的log:adb logcat *:W(過濾比W優(yōu)先級低的log)
標記是一個簡短的字符串,用于標識原始消息的來源(例如“View”來源于顯示系統(tǒng))。
優(yōu)先級是下面的字符,順序從低到高:
V—Verbose 明細(最低優(yōu)先級)
D—Debug 調(diào)試
I—Info 信息
W—Warm 警告
E—Error 錯誤
F—Fatal 嚴重錯誤
S—Silent 無記載(最高優(yōu)先級,沒有什么會被記載)
建議配合Eclipse使用,查看logcat
8.? ? adb shell
由于Android是基于Linux內(nèi)核的操作系統(tǒng)。因此,在Android上可以執(zhí)行shell命令。
常用命令如下:
ls? ? 查看文件夾
cd? ? 改變目錄
cat <文件名>? ? 查看文件內(nèi)容
rm? ? 刪除文件
mkdir <文件夾>? ? 新建文件夾
cp? ? 復制文件到另一目錄
exit? 退出shell命令
adb shell <command>? ? 直接運行設(shè)備命令
adb shell su –c “<command>”? ? 直接運行root權(quán)限命令
9.? ? adb shell am
am start –n <包名>/<包名>.<Activity名>? 啟動程序
am force-stop <包名>? ? 強制停止程序
am kill <包名> 殺死與包名有關(guān)的后臺進程,不影響用戶體驗,相當于一般的清理內(nèi)存功能
am kill-all? ? 殺死所有后臺進程
10. adb shell pm
pm path <包名>? 查看apk安裝在手機后的路徑
pm uninstall [-k] <包名>? 卸載程序(-k:保留配置文件)
pm clear <包名>? ? 清除應(yīng)用緩存數(shù)據(jù)
11. 其他常用命令
adb help? ? 顯示幫助信息
adb version? 顯示adb版本
adb reboot? ? 重啟手機
adb shell am broadcast -a android.intent.action.MASTER_CLEAR(恢復出廠)
adb shell dumpsys window | grep init 查看手機的分辨率
adb logcat -s ActivityManager? ? ? ? Activity的啟動時間
12.常用命令使用
1.adb shell pm list package? ? 查看手機上所有的安裝包
2.adb shell pm list package -3? ? 查看第三方安裝包
3.adb shell pm list packages -s? ? ?查看系統(tǒng)的包
4.adb shell pm list packages -e “要搜索的內(nèi)容”? ? ?查看啟動包中搜索的包
5.adb shell dumpsys window | findstr mCurrentFocus? ?獲取當前打開的APP包名(前面的為包名,斜杠后面的是當前啟動的acivity)
adb shell dumpsys activity activities | grep "peo"
6.adb shell pm clear (apk包名)? 清除應(yīng)用數(shù)據(jù)與緩存
7.adb shell am force-stop com.peopxxx.activity? 強制停止應(yīng)用
13.殺掉monkey進程
adb shell ps | findstr monkey
adb shell kill 23033(進程號)
14.monkey設(shè)置白名單
--pkg-whitelist-file:只執(zhí)行白名單文件里面的包/apk ?
adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt
(以白名單為例)
? 1.首先手機要連接成功
? 2.在本地新建一個whitelist的txt文檔
? 3.使用命令adb shell pm list packages 查看手機中的包名
? 4.將需要執(zhí)行的包名寫進whitelist中
? 5.在命令行使用adb remount 進行掛載(有的不需要掛載)
? 6.使用push命令:adb push C:\xxx\Desktop\whitelist.txt /data/local/tmp 將文件push到手機中
? 7.執(zhí)行命令:C:\Users\Administrator>adb shell monkey --pkg-whitelist-file /data/local/tmp/whitelist.txt -v 10000 >"C:\xxx\Desktop\log.txt"
黑名單--pkg-blacklist-file?:不執(zhí)行黑名單文件里面的包/apk ? ??
adb shell monkey --pkg-blacklist-file /data/local/tmp/blacklist.txt
15.adb命令查看cpu與內(nèi)存使用率
adb shell dumpsys meminfo? ?--查看內(nèi)存信息
具體查看某個pid的內(nèi)存信息,輸入命令:dumpsys meminfo pid
通過adb shell top,得到pid。
參數(shù)含義: dalvik:dalvik使用的內(nèi)存
native:native堆上的內(nèi)存,指C\C++堆的內(nèi)存(android3.0以后bitmap就是放在這兒)?
?other:除了dalvik和native的內(nèi)存,包含C\C++非堆內(nèi)存······
Pss:該內(nèi)存指將共享內(nèi)存按比例分配到使用了共享內(nèi)存的進程?
?heap alloc:已使用的內(nèi)存?
?heap free:空閑的內(nèi)存?
?share dirty:共享,但有不能被換頁出去的內(nèi)存
privatedirty:非共享,又不能被換頁出去的內(nèi)存(比如linux系統(tǒng)中為了提高分配內(nèi)存速度而緩沖的小對象,即使你的進程已經(jīng)退出,該內(nèi)存也不會被釋放)
查看cpu信息:方法一
輸入命令:top -m 10 (-m顯示最大數(shù)量,-s 按指定行排序)
參數(shù)含義:
? ? PID? : progress identification,應(yīng)用程序ID?
? ? S? ? : 進程的狀態(tài),其中S表示休眠,R表示正在運行,Z表示僵死狀態(tài),N表示該進程優(yōu)先值是負數(shù)?
? ? #THR : 程序當前所用的線程數(shù)?
? ? VSS? : Virtual Set Size虛擬耗用內(nèi)存(包含共享庫占用的內(nèi)存)?
? ? RSS? : Resident Set Size實際使用物理內(nèi)存(包含共享庫占用的內(nèi)存)?
? ? PCY? : 前臺(fg)和后臺(bg)進程?
? ? UID? : User Identification,用戶身份ID?
? ? Name : 應(yīng)用程序名稱?
方法二:
命令:adb shell dumpsys cpuinfo
adb shell dumpsys cpuinfo | findstr "xx"
16.測試結(jié)果分析
程序無響應(yīng),ANR問題:在日志中搜索“ANR”
崩潰問題:在日志中搜索“CRASH”
其他問題:在日志中搜索”Exception”