Android開(kāi)發(fā)日常之a(chǎn)db

學(xué)無(wú)止境,有一技旁身,至少不至于孤陋寡聞。
隨著我們工作閱歷的提升,除了基本的業(yè)務(wù)開(kāi)發(fā),也需要提升我們自身在開(kāi)發(fā)效能方面的一些儲(chǔ)備與筆記。

Android開(kāi)發(fā)日常之gradle
Android開(kāi)發(fā)日常之a(chǎn)db
Android開(kāi)發(fā)日常之git
Android開(kāi)發(fā)日常之shell alias

adb的全稱為Android Debug Bridge,通過(guò)adb可以方便我們調(diào)試Android程序。作為開(kāi)發(fā)人員,掌握所需要的adb操作命令是非常必須的,就把平時(shí)工作中用得相對(duì)比較多的adb命令做個(gè)梳理。(日常中把a(bǔ)db操作命令搭配shell alias使用起來(lái)更方便)

ADB常用命令

  1. 啟動(dòng)/停止adb server命令

    adb start-server  //啟動(dòng)命令
    adb kill-server   //停止命令
    
  2. 查詢已連接設(shè)備/模擬器
    adb devices

  3. adb連接設(shè)備命令
    adb [-d|-e|-s ]
    如果只有一個(gè)設(shè)備/模擬器連接時(shí),可以省略掉 [-d|-e|-s ] 這一部分,直接使用 adb即可 。
    如果有多個(gè)設(shè)備/模擬器連接,則需要為命令指定目標(biāo)設(shè)備。

    參數(shù) 含義
    -d 指定當(dāng)前唯一通過(guò) USB 連接的 Android 設(shè)備為命令目標(biāo)
    -e 指定當(dāng)前唯一運(yùn)行的模擬器為命令目標(biāo)
    -s <serialNumber> 指定相應(yīng) serialNumber 號(hào)的設(shè)備/模擬器為命令目標(biāo)

    在多個(gè)設(shè)備/模擬器連接的情況下較常用的是-s參數(shù),serialNumber 可以通過(guò)adb devices命令獲取。如:

    $ adb devices
    List of devices attached
    cfxxxxxx device
    emulator-5554    device
    10.xxx.xxx.x:5555    device
    

    輸出里的 cfxxxxxx、emulator-5554 和 10.xxx.xxx.x:5555 即為 serialNumber。
    比如這時(shí)想指定 cfxxxxxx 這個(gè)設(shè)備來(lái)運(yùn)行 adb 命令
    獲取屏幕分辨率:

    adb -s cfxxxxxx shell wm size
    

    安裝應(yīng)用:

    adb -s cfxxxxxx install hello.apk
    

    遇到多設(shè)備/模擬器的情況均使用這幾個(gè)參數(shù)為命令指定目標(biāo)設(shè)備。

  4. 安裝 APK
    命令格式:

    adb install [-rtsdg] <apk_path>
    

    參數(shù):
    adb install 后面可以跟一些可選參數(shù)來(lái)控制安裝 APK 的行為,可用參數(shù)及含義如下:

    參數(shù) 含義
    -r 允許覆蓋安裝
    -t 允許安裝 AndroidManifest.xml 里 application 指定 android:testOnly="true" 的應(yīng)用
    -s 將應(yīng)用安裝到 sdcard
    -d 允許降級(jí)覆蓋安裝
    -g 授予所有運(yùn)行時(shí)權(quán)限
  1. 卸載應(yīng)用
    adb uninstall [-k] <packagename>
    
    <packagename> 表示應(yīng)用的包名,-k 參數(shù)可選,表示卸載應(yīng)用但保留數(shù)據(jù)和緩存目錄。
    adb uninstall com.xxx.xxx
    
  2. 查看前臺(tái) Activity
    adb shell dumpsys activity activities | grep ResumedActivity
    
    查看棧頂activity
    adb shell dumpsys activity
    ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents)
    ...
    ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)
    ...
    ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers)
    ...
    ACTIVITY MANAGER SERVICES (dumpsys activity services)
    ...
    ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)
    ...
    ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
    ...
    
  3. 查看設(shè)備信息
    1. 查看手機(jī)型號(hào)
      adb shell getprop ro.product.model
    2. 查看電池狀況
      adb shell dumpsys battery
    3. 查看屏幕分辨率
      adb shell wm size
    4. 查看屏幕密度
      adb shell wm density
    5. 查看顯示屏參數(shù)
      adb shell dumpsys window displays
    6. 查看Android系統(tǒng)版本
      adb shell getprop ro.build.version.release
    7. 查看CPU信息
      adb shell cat /proc/cpuinfo
      查看手機(jī)CPU架構(gòu)
      adb shell getprop ro.product.cpu.abi
    8. 查看內(nèi)存信息
      adb shell cat /proc/meminfo
    9. 打開(kāi)系統(tǒng)設(shè)置:
      adb shell am start -n com.android.settings/com.android.settings.Settings
    10. 打開(kāi)開(kāi)發(fā)者選項(xiàng):
      adb shell am start -a com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS
    11. 進(jìn)入WiFi設(shè)置
      adb shell am start -a android.settings.WIRELESS_SETTINGS
    12. 重啟系統(tǒng)
      adb reboot
    13. 日志相關(guān)
      adb logcat > ~/logdebug.log
      adb logcat | grep logtag
      adb logcat | grep -i logtag #忽略大小寫。

      adb logcat | grep --color=auto -i logtag #設(shè)置匹配字符串顏色。

ADB其他命令

  1. 清除應(yīng)用數(shù)據(jù)與緩存

    adb shell pm clear <packagename>
    

    <packagename> 表示應(yīng)用名包,這條命令的效果相當(dāng)于在設(shè)置里的應(yīng)用信息界面點(diǎn)擊了「清除緩存」和「清除數(shù)據(jù)」。

    adb shell pm clear com.xxx.xxx
    
  2. 與應(yīng)用交互操作
    主要是使用 am <command> 命令,常用的 <command> 如下:

    command 用途
    start [options] <INTENT> 啟動(dòng) <INTENT> 指定的 Activity
    startservice [options] <INTENT> 啟動(dòng) <INTENT> 指定的 Service
    broadcast [options] <INTENT> 發(fā)送 <INTENT> 指定的廣播
    force-stop <packagename> 停止 <packagename> 相關(guān)的進(jìn)程

    <INTENT> 參數(shù)很靈活,和寫 Android 程序時(shí)代碼里的 Intent 相對(duì)應(yīng)。

    用于決定 intent 對(duì)象的選項(xiàng)如下:

    參數(shù) 含義
    -a <ACTION> 指定 action,比如 android.intent.action.VIEW
    -c <CATEGORY> 指定 category,比如 android.intent.category.APP_CONTACTS
    -n <COMPONENT> 指定完整 component 名,用于明確指定啟動(dòng)哪個(gè) Activity,如 com.example.app/.ExampleActivity

    <INTENT> 里還能帶數(shù)據(jù),就像寫代碼時(shí)的 Bundle 一樣:

    參數(shù) 含義
    --esn <EXTRA_KEY> null 值(只有 key 名)
    -e --es <EXTRA_KEY> <EXTRA_STRING_VALUE>`
    --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> boolean 值
    --ei <EXTRA_KEY> <EXTRA_INT_VALUE> integer 值
    --el <EXTRA_KEY> <EXTRA_LONG_VALUE> long 值
    --ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> float 值
    --eu <EXTRA_KEY> <EXTRA_URI_VALUE> URI
    --ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE> component name
    --eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...] integer 數(shù)組
    --ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...] long 數(shù)組
    1. 調(diào)起Activity

      adb shell am start [options] <INTENT>
      

      例如:

      adb shell am start -n com.tencent.mm/.ui.LauncherUI
      

      表示調(diào)起微信主界面。

      adb shell am start -n com.cc.test/.MainActivity --es "params" "hello, world"
      

      表示調(diào)起 com.cc.test/.MainActivity 并傳給它 string 數(shù)據(jù)鍵值對(duì) params - hello, world。

    2. 調(diào)起Service

      adb shell am startservice [options] <INTENT>
      

      例如:

      adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
      
    3. 發(fā)送廣播

      adb shell am broadcast [options] <INTENT>
      

      可以向所有組件廣播,也可以只向指定組件廣播。
      例如,向所有組件廣播 BOOT_COMPLETED:

      adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
      

      又例如,只向 com.cc.test/.BootCompletedReceiver 廣播 BOOT_COMPLETED:

      adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n com.cc.test/.BootCompletedReceiver
      
    4. 強(qiáng)制停止應(yīng)用

      adb shell am force-stop <packagename>
      

      命令示例:

      adb shell am force-stop com.xxx.xxx
      
    5. 撤銷應(yīng)用程序的權(quán)限

      1. 向應(yīng)用授予權(quán)限。只能授予應(yīng)用程序聲明的可選權(quán)限
      adb shell pm grant <packagename> <PACKAGE_PERMISSION>
      

      例如:adb -d shell pm grant packageName android.permission.BATTERY_STATS

      1. 取消應(yīng)用授權(quán)
      adb shell pm revoke <packagename> <PACKAGE_PERMISSION>
      
  3. 模擬按鍵/輸入

    Usage: input [<source>] <command> [<arg>...]
    
    The sources are:
          mouse
          keyboard
          joystick
          touchnavigation
          touchpad
          trackball
          stylus
          dpad
          gesture
          touchscreen
          gamepad
    
    The commands and default sources are:
          text <string> (Default: touchscreen)
          keyevent [--longpress] <key code number or name> ... (Default: keyboard)
          tap <x> <y> (Default: touchscreen)
          swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
          press (Default: trackball)
          roll <dx> <dy> (Default: trackball)
    

    比如模擬點(diǎn)擊://在屏幕上點(diǎn)擊坐標(biāo)點(diǎn)x=50 y=250的位置。

    adb shell input tap 50 250

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ADB,即 Android Debug Bridge,它是 Android 開(kāi)發(fā)/測(cè)試人員不可替代的強(qiáng)大工具,也是...
    網(wǎng)絡(luò)安全自修室閱讀 19,044評(píng)論 0 6
  • [ 二話不說(shuō),先附原文地址:https://github.com/mzlogin/awesome-adb[http...
    xiaodouyaer閱讀 1,008評(píng)論 0 2
  • 查看設(shè)備屏幕分辨率、density 查看CPU 信息 查看棧頂?shù)腶ctivity 查看所有在運(yùn)行的任務(wù)棧 查看正在...
    一林花色閱讀 3,021評(píng)論 0 0
  • adb shell 運(yùn)行l(wèi)ua文件 1, android設(shè)備root權(quán)限2, 將liblasa.so push到/...
    artemi閱讀 1,634評(píng)論 0 1
  • 參考鏈接 超詳細(xì)的dubug教程 Android Studio 調(diào)試技巧 Android中開(kāi)發(fā)需要的高效助推的命令...
    小人物灌籃閱讀 6,665評(píng)論 1 4

友情鏈接更多精彩內(nèi)容