在Android應用開發(fā)過程中,熟悉常用的adb調(diào)試命令往往能事半功倍,再此做一個匯總記錄。
adb shell vm 命令
adb shelll vm 命令在4.3以后的版本才可用,使用它可以方便的查看或者設(shè)置屏幕的分辨率、密度。
- adb shell vm size 
 查看分辨率,我本機的輸出結(jié)果如下:
 Physical size: 720x1280
 如果想要設(shè)置成其他分辨率,在size 后面加上想要的參數(shù)即可,比如
 adb shell vm size 720x1080
- adb shell vm density 
 查看屏幕密度,我本機輸出結(jié)果如下:
 - Physical density: 320
 同樣density后面也可已加上想要的密度值,比如
 - adb shell wm density 200
 
- adb shell wm overscan 
 設(shè)置窗口的顯示位置,比如想讓界面在靠左200, 靠上300,靠右400 , 靠下500的顯示區(qū)域顯示 ,可以這樣設(shè)置
 - adb shell wm overscan 200,300,400,500
 
通過vm設(shè)置的值手機重啟后依然生效,如果想回復默認的,可以參考下面的設(shè)置方法 
adb shell wm density reset
adb shell svc命令
svc 命令可以控制電源、數(shù)據(jù)流量、wifi、usb的開關(guān)狀態(tài),用法如下
Available commands:
    help     Show information about the subcommands
    power    Control the power manager
    data     Control mobile data connectivity
    wifi     Control the Wi-Fi manager
    usb      Control Usb state
比如要直接打開wifi可以用如下的命令方式 
adb shell svc wifi enable
adb shell settings命令
settings命令可以更加方便的查看、更改SettingsProvider數(shù)據(jù)庫的值,有了它不用在通過Sqlite3命令操作Settins數(shù)據(jù)庫了。用法如下:
usage:  settings [
        settings [
        settings [
'namespace' is one of {system, secure, global}, case-insensitive
If '--user NUM' is not given, the operations are performed on the owner user.
比如存放在Settings數(shù)據(jù)庫global表中的字段airplane_mode_on表明是否開啟了飛行模式,可以通過 
adb shell settings get global airplane_mode_on  
直接看到它的值,方便debug工作。
adb shell content命令
adb shell content 命令可以直接通過命令行對contentprovider數(shù)據(jù)集進行增刪改查操作,非常利于debug功做。 
比如要查看系統(tǒng)media數(shù)據(jù)庫里存放的圖片記錄,可以通過命令: 
adb shell content query --uri content://media/external/images/media直接查看,相對與Sqlite3命令更為快捷。下圖是用該命令測試的結(jié)果: 
 
 
如果要更改_id=3082這條數(shù)據(jù)的title字段可以通過命令: 
adb shell content update --uri content://media/external/images/media/3082 --bind title:s:test.png 
來實現(xiàn),測試結(jié)果如下圖: 

adb shell pm命令
pm(package manager)命令方便查看系統(tǒng)當前安裝包的一些狀態(tài),功能強大,選取幾個我經(jīng)常使用的場景.更多的使用方法直接輸入adb shell pm查看輸出幫助。
- 清除應用數(shù)據(jù)。 
 在Launcher開發(fā)的時候,更新完成桌面應用圖標的位置后,如果要查看顯示效果,就必須先把Launcher的數(shù)據(jù)清除,否則新的改動不會生效。這個時候可以用clear命令一步完成。
 adb shell pm clear com.android.launcher
- 查看當前安裝的所有 apk。 
 整機開發(fā)的時候,經(jīng)常需要查看下當前手機安裝了哪些應用,可以通過
 adb shell pm list packages查看
 查看包名和文件名對應表adb shell pm list packages -f
 查看安裝的第三方應用adb shell pm list packages -3
- 禁止或啟用一個應用 
 禁止一個應用adb shell pm disable [packagename]
 開啟一個應用adb shell pm enable [packagename]
adb shell am
am(activity manager) 命令方便調(diào)試應用的活動行為,它的使用場景比較多。網(wǎng)上的使用說明也比較多,不多加說明了。選常用的兩個
- 啟動一個activity 
 adb -d shell am start -n com.google.android.setupwizard/.SetupWizardTestActivity
- 模擬發(fā)送廣播 
 在開發(fā)SystemUI時,涉及到SIM卡狀態(tài)顯示的debug工作,模擬發(fā)送廣播就非常有用了。
 adb shell am broadcast -a android.intent.action.SIM_STATE_CHANGED --es ss ABSENT --ei slot 1
adb shell dumpsys
dumpsys 命令常用來查看activity的堆棧信息,比如 
adb shell dumpsys activity activities 
也可以查看電池信息adb shell dumpsys battery 
還可以查看某個安裝包的詳細信息 
adb shell dumpsys package com.google.android.googlequicksearchbox 
和grep命令結(jié)合可以過濾出關(guān)心的信息,比如要查看googlequicksearchbox的版本就可以使用下面的命令 
adb shell dumpsys package com.google.android.googlequicksearchbox|g 
rep versionName
adb shell screencap/screenrecord
截屏adb shell screencap -p /sdcard/test.png 
錄屏adb shell screenrecord --time-limit 10 --bit-rate 6000000 /sdcard/demo.mp4
aapt命令
aapt命令可以用來查看一個apk包含的資源類信息,比如版本號,權(quán)限等。它位于SDK下的build-tools目錄里。使用說明如下圖: 

開放SEAndroid
有時手機已經(jīng)root,但依然無法remount,導致root權(quán)限的手機無法向/system、/data等目錄push文件,這種情況很可能是因為SEAndroid在作怪,SEAndroid在Android5.0已經(jīng)全面開啟,碰到這種情況可以用命令:
  adb shell setenforce 0
暫時將SEAndroid安全檢查機制關(guān)閉,用命令:
  adb shell getenforce 
檢查返回值為Permissive則說明關(guān)閉成功。 
如果還是無法push文件,嘗試先執(zhí)行命令:
  adb disable-verity
重啟手機在執(zhí)行
  adb shell setenforce 0