adb的常見命令和異常報錯操作


  adb連接狀態


  • adb devices , 獲取設備列表及設備狀態
  • 設備的狀態有 3 種
  • device , 設備連接正常
  • offline , 設備離線,連接出現異常
  • unauthorized 設備為進行授權,需要在設備上是否允許調試對話框進行授權
  • adb install app在pc硬盤路徑,選中app直接拖入即可

  • 常見的錯誤情況
  1. INSTALL_FAILED_TEST_ONLY, 安裝的app的debug版本的,未簽名,adb install -t 路徑即可安裝
  2. INSTALL_FAILED_DUPLICATE_PACKAGE, 已經安裝相同包名的app, 先卸載再安裝
  • adb uninstall app的包名,卸載app
  • adb pull 將 Android 設備上的文件或者文件夾復制到本地
  • adb pull sdcard/Android/111.txt E:

小技巧,可以將本地路徑指定為桌面,方便查看, 在桌面按住shift鍵,鼠標右鍵選擇在此處打開命令行窗口,直接輸入adb pull sdcard/Android/111.txt 執行,就可將111.txt復制到桌面。

  • 前提是設備已經獲取root權限
  • adb root
  • adb remount
  • adb push 將pc上文件復制到android設備中,修改room原生應用時比較頻繁使用,如settings.apk, launcher3.apk
  • adb shell pm 命令
  • adb shell pm list package 列出android設備上的所有app
  • adb shell pm list package -s 列出android設備上的系統級別app
  • adb shell pm list package -3 列出android設備上的第三方app(用戶安裝的)
  • adb shell pm list package -f 列出app包名及對應的apk名及存放位置
  • adb shell pm list package -i 列出app包名及其安裝來源(應用市場名稱)
  • adb shell pm dump app包名 列出app的相關信息,類似獲取Manifest文件內容

查看前台 Activity


  • adb shell dumpsys activity activities "| grep mFocusedActivity"
  • adb shell am 命令

  1. 最常用的就是啟動指定的activity和發送指定的廣播
  2. 啟動指定的activity

   

操作指令 adb shell am start -n 包名/類名

注:如果啟動activity時,出現如下錯誤
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,那么找到你要調用的activity在manifest.xml中,增加

配置即可, android:name="" 可以為空字符串。

2、如果是不可控的app,例如我調用的系統原生app,那么你就洗洗睡吧,別折騰了,除非你修改源碼和上邊一樣操作,重新push替換原來的app。

  • 啟動默認瀏覽器打開一個網頁

adb shell am start -a android.intent.action.VIEW -d http://testerhome.com

  • 先停止目標應用,再啟動

adb shell am start -s com.android.camera/.Camera

  • 啟動相機

adb shell am start -n com.android.camera/.Camera

  • 啟動設置

adb shell am start -n com.android.settings/com.android.settings.Settings

  • 啟動Wifi設置

adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings

  • 啟動藍牙設置

adb shell am start -n com.android.settings/com.android.settings.bluetooth.BluetoothSettings

  • 發送指定廣播

操作指令 adb shell am broadcast -a 廣播名 --ei/es/ez 參數名 參數值 --ei/es/ez 參數名 參數值

  1. --ei integer 值
  2. --es String 值
  3. --ez boolean 值
  4. --ef float 值
  5. --el long 值

例如之前寫的
Android6.0 源碼修改之Setting列表配置項動態添加和靜態添加, 當中就通過發送廣播來接收增加配置列表項

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 指令

  1. 屏幕分辨率 adb shell wm size
  2. 屏幕密度 adb shell wm density

adb shell ifconfig 命令

  1. IP 地址 adb shell ifconfig "| grep Mask"
  2. WIFI 地址 adb shell ifconfig wlan0
  • 狀態欄和導航欄的顯示隱藏

  adb shell settings put global policy_control

  可由如下幾種鍵及其對應的值組成,格式為 key1=value1:key2=value2。

  key 含義

  1. immersive.full 同時隱藏
  2. immersive.status 隱藏狀態欄
  3. immersive.navigation 隱藏導航欄
  4. immersive.preconfirms 同時顯示

value 含義

  1. apps 所有應用
  2. 所有界面
  3. packagename 指定應用
  4. -packagename 排除指定應用 
  • 表示設置在所有界面下都同時隱藏狀態欄和導航欄。(重啟也不會失效,恢復需調用下面的命令)

  adb shell settings put global policy_control immersive.full=*

  • 表示恢復顯示

adb shell settings put global policy_control immersive.preconfirms=*

  • 表示設置在包名為 com.package1 和 com.package2 的應用里隱藏狀態欄,在除了包名為 com.package3 的所有應用里隱藏導航欄。

  adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM