前言
很早就想整理一下自己平時常用的一些adb命令卫袒,不僅為了便于以后查找,而且整理的過程自己又重新復(fù)習(xí)了一遍,但是當(dāng)我開始在度娘一搜的時候诸老,發(fā)現(xiàn)很多人已經(jīng)寫的非常詳細了,尤其是當(dāng)我發(fā)現(xiàn)了這篇adb概括
心中一句NND钳恕,怎么可以寫的這么詳細别伏,瞬間沒了想寫這篇文章的欲望,如果你點了鏈接發(fā)現(xiàn)確實很全忧额,那么恭喜你可以關(guān)掉這篇了厘肮,哈哈哈。
我就不這么想的睦番,雖然很全类茂,但不是我常用的,因人而異抡砂,所以我就權(quán)當(dāng)記筆記+替這哥們宣傳了大咱。
- adb devices , 獲取設(shè)備列表及設(shè)備狀態(tài)
設(shè)備的狀態(tài)有 3 種
- device , 設(shè)備連接正常
- offline , 設(shè)備離線,連接出現(xiàn)異常
- unauthorized 設(shè)備為進行授權(quán)注益,需要在設(shè)備上是否允許調(diào)試對話框進行授權(quán)
offline情況解決辦法碴巾,先執(zhí)行adb kill-server 命令,再執(zhí)行adb start-server 命令丑搔,再嘗試adb devices 查看列表厦瓢,如果還是offline,來來來啤月,使用必殺技煮仇,重啟大法。
當(dāng)電腦連接多個android設(shè)備并可用時谎仲,所有的adb命令都需要指定設(shè)備后執(zhí)行(當(dāng)然你也可以移除多余的設(shè)備)
adb -s <設(shè)備名稱> install/uninstall/shell/pull/push等命令
- adb install app在pc硬盤路徑浙垫,選中app直接拖入即可
常見的錯誤情況
INSTALL_FAILED_TEST_ONLY, 安裝的app的debug版本的,未簽名夹姥,adb install -t 路徑即可安裝
INSTALL_FAILED_DUPLICATE_PACKAGE杉武, 已經(jīng)安裝相同包名的app, 先卸載再安裝
adb uninstall app的包名辙售,卸載app
- adb pull 將 Android 設(shè)備上的文件或者文件夾復(fù)制到本地
adb pull sdcard/Android/111.txt E:\
小技巧轻抱,可以將本地路徑指定為桌面,方便查看旦部, 在桌面按住shift鍵祈搜,鼠標(biāo)右鍵選擇在此處打開命令行窗口,直接輸入adb pull sdcard/Android/111.txt 執(zhí)行士八,就可將111.txt復(fù)制到桌面容燕。
前提是設(shè)備已經(jīng)獲取root權(quán)限
adb root
adb remount
adb push 將pc上文件復(fù)制到android設(shè)備中,修改room原生應(yīng)用時比較頻繁使用曹铃,如settings.apk, launcher3.apk
adb shell pm 命令
adb shell pm list package 列出android設(shè)備上的所有app
adb shell pm list package -s 列出android設(shè)備上的系統(tǒng)級別app
adb shell pm list package -3 列出android設(shè)備上的第三方app(用戶安裝的)
adb shell pm list package -f 列出app包名及對應(yīng)的apk名及存放位置
adb shell pm list package -i 列出app包名及其安裝來源(應(yīng)用市場名稱)
adb shell pm dump app包名 列出app的相關(guān)信息缰趋,類似獲取Manifest文件內(nèi)容
-查看前臺 Activity
adb shell dumpsys activity activities "| grep mFocusedActivity"
adb shell am 命令
最常用的就是啟動指定的activity和發(fā)送指定的廣播
- 啟動指定的activity
操作指令 adb shell am start -n 包名/類名
注:如果啟動activity時,出現(xiàn)如下錯誤
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 > > cmp=com.mediatek.engineermode/.io.Gpio } from null (pid=3083, uid=2000) not exported from uid 1001解決辦法陕见,1秘血、如果是你自己可控的app,那么找到你要調(diào)用的activity在manifest.xml中评甜,增加
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
配置即可灰粮, android:name="" 可以為空字符串。
2忍坷、如果是不可控的app粘舟,例如我調(diào)用的系統(tǒng)原生app,那么你就洗洗睡吧佩研,別折騰了柑肴,除非你修改源碼和上邊一樣操作,重新push替換原來的app旬薯。
啟動默認(rèn)瀏覽器打開一個網(wǎng)頁
adb shell am start -a android.intent.action.VIEW -d http://testerhome.com
先停止目標(biāo)應(yīng)用晰骑,再啟動
adb shell am start -s com.android.camera/.Camera
啟動相機
adb shell am start -n com.android.camera/.Camera
啟動設(shè)置
adb shell am start -n com.android.settings/com.android.settings.Settings
啟動Wifi設(shè)置
adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings
啟動藍牙設(shè)置
adb shell am start -n com.android.settings/com.android.settings.bluetooth.BluetoothSettings
其它的類似只要你能在manifest中找到配置的,都可以通過這種方法來調(diào)用
- 發(fā)送指定的廣播
操作指令 adb shell am broadcast -a 廣播名 --ei/es/ez 參數(shù)名 參數(shù)值 --ei/es/ez 參數(shù)名 參數(shù)值
--ei integer 值
--es String 值
--ez boolean 值
--ef float 值
--el long 值
例如之前寫的
Android6.0 源碼修改之Setting列表配置項動態(tài)添加和靜態(tài)添加, 當(dāng)中就通過發(fā)送廣播來接收增加配置列表項
adb shell am broadcast -a cn.dynamic.add.settingcategoryitem --es location "0-2" --es title "紅" --es intent "com.android.settings.SCHEDULE_POWER_ON_OFF_SETTING"
- adb shell input keycode 指令
HOME 鍵 adb shell input keycode 3
返回鍵 adb shell input keycode 4
打開瀏覽器 adb shell input keycode 64
adb shell wm 指令
屏幕分辨率 adb shell wm size
屏幕密度 adb shell wm density
adb shell wm density 320/480/640 可修改屏幕密度查看效果绊序,對應(yīng)Launcher圖標(biāo)會縮放
adb shell ifconfig 命令
IP 地址 adb shell ifconfig "| grep Mask"
WIFI 地址 adb shell ifconfig wlan0
- 狀態(tài)欄和導(dǎo)航欄的顯示隱藏
命令:
adb shell settings put global policy_control <key-values>
<key-values> 可由如下幾種鍵及其對應(yīng)的值組成硕舆,格式為 key1=value1:key2=value2。
key 含義
- immersive.full 同時隱藏
- immersive.status 隱藏狀態(tài)欄
- immersive.navigation 隱藏導(dǎo)航欄
- immersive.preconfirms 同時顯示
這些鍵對應(yīng)的值可則如下值用逗號組合:
value 含義
- apps 所有應(yīng)用
所有界面
- packagename 指定應(yīng)用
- -packagename 排除指定應(yīng)用
例如:
adb shell settings put global policy_control immersive.full=*
表示設(shè)置在所有界面下都同時隱藏狀態(tài)欄和導(dǎo)航欄骤公。(重啟也不會失效抚官,恢復(fù)需調(diào)用下面的命令)
adb shell settings put global policy_control immersive.preconfirms=*
表示恢復(fù)顯示
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示設(shè)置在包名為 com.package1 和 com.package2 的應(yīng)用里隱藏狀態(tài)欄,在除了包名為 com.package3 的所有應(yīng)用里隱藏導(dǎo)航欄阶捆。
參考鏈接