總結一些經常使用Android adb 命令

總結一些經常使用的adb 命令

引言

  • Android開發中咱們有時候須要藉助一些命令幫助更好的高效率定位解決問題,本文就來介紹一些可能有些隱藏的而卻很是好用的命令,能夠幫咱們快速找到問題。

基礎命令

  • 像一些比較經常使用的命令好比,cd rm cp 就不介紹了,下面介紹幾個不太經常使用,瞭解以後大大提升開發效率的幾個命令。android

  • catsql

    • 該命名經常使用語查看文件,如今我往data/local/tmp push了一個config.xml文件,能夠用cat 命令對其進行查看。shell

      shell@6753_doov_legend:$ cat config.xml                                                                 
        <?xml version="1.0" encoding="UTF-8"?>
        <nqtestdata>
        <country>CN</country>
        <mcnc>604123</mcnc>
        <!--<lat>39.213123<lat>
        <lon>116.123123<lon>
        <networkcountry>123123</networkcountry>
        <networkmcnc>123123</networkmcnc>-->
        <debug>true</debug>
        <writeLog>true</writeLog>
        <serverType>VRF</serverType>
        </nqtestdata>
        shell@6753_doov_legend:$
    • 該命令還能夠結合grep命令進行過濾,好比我如今用grep 命令過濾上述文件中的debug 項數據庫

      shell@6753_doov_legend:$ cat config.xml	|grep debug
        <debug>true</debug>
        shell@6753_doov_legend:$

經常使用adb 命令

  • adb install [-l] [-r] [-s] fileapp

    • [-l] 鎖定該程序,安裝
    • [-r] 從新安裝該程序,保存數據
    • [-s] 安裝到sdcard
  • adb uninstall [-k] package_nametcp

    • [-K] 不清楚數據,卸載
  • pm clear package_nameide

    -清除指定包名的數據測試

  • pm installui

    • 對應adb install
  • pm uninstall.net

    • 對應adb install
  • adb shell dumpsys

    • adb shelll dumpsys activity top

      - 用於查看當前運行應用的的信息
        C:\Users\isaac>adb shell dumpsys activity top
        	TASK com.aliyun.homeshell id=1
        	  ACTIVITY com.aliyun.homeshell/.Launcher 296c7d6c pid=1867
        	    Local Activity 22a2410f State:
        	      mResumed=true mStopped=false mFinished=false
        	      mLoadersStarted=true
        	      mChangingConfigurations=false
        	      mCurrentConfig={1.0 ?mcc?mnc zh_CN ?layoutDir sw360dp w360dp h615dp 480dpi nrml long port finger -keyb/v/h -nav/h
        	s.6colorMap={header_color=-16731727, dark_mode=0, hw_highlighted_text=1711321521, hw_color_primary_disabled=-16731727, h
        	eader_widget_color_pressed=-2500135, hw_color_primary=-16731727, hw_color_primary_dark=-16739694, header_text_color_unch
        	ecked=-2130706434, dyncolor_mode=1, hw_dialog_ok_button_text_disable=1711321521, header_divider=-13648194, header_text_c
        	olor=-2, header_widget_color_normal=-2, header_widget_color_disable=-2}}
        	    FragmentManager misc state:
        	      mActivity=com.aliyun.homeshell.Launcher@22a2410f
        	      mContainer=android.app.Activity$1@30c7b48c
        	      mCurState=5 mStateSaved=false mDestroyed=false
        	    ViewRoot:略
        	//能夠看到當前應用的基本信息已經出來了,下面還包括整個View的層級
  • adb shell dumpsys package <package_name>

    • 能夠查看指定包名應用的詳細信息(至關於應用的AndroidManifest.xml中的內容)

      C:\Users\isaac>adb shell dumpsys package com.android.settings
        Activity Resolver Table:
          Full MIME Types:
             ...
          Base MIME Types:
             ...
          Schemes:
              printjob:
                ...
              package:
                ...
      
          Non-Data Actions:
              android.net.wifi.PICK_WIFI_NETWORK:
                2ef8f99e com.android.settings/.Settings$WifiSettingsActivity
              android.settings.SHOW_REGULATORY_INFO:
                a449c7f com.android.settings/.RegulatoryInfoDisplayActivity
              ...

    簡單的列出幾個

  • adb shell dumpsys meminfo <package_name/pid>

    • 能夠查看指定進程名或者是進程id的內存信息

      ** MEMINFO in pid 20677 [com.android.settings] **
                       Pss  Private  Private  Swapped     Heap     Heap     Heap
                     Total    Dirty    Clean    Dirty     Size    Alloc     Free
                    ------   ------   ------   ------   ------   ------   ------
          Native Heap        0        0        0        0    12288     6287     6000
          Dalvik Heap     3775     3072        0        0    20323    19251     1072
         Dalvik Other      357      252        0        0
                Stack      156      156        0        0
               Ashmem        8        0        0        0
            Other dev        6        0        4        0
             .so mmap      718      120        0        0
            .apk mmap      399        0      240        0
            .ttf mmap      117        0        0        0
            .dex mmap     1482        0     1052        0
            .oat mmap      930        0       12        0
            .art mmap      932      540        0        0
           Other mmap       27        4        0        0
           EGL mtrack    10880    10880        0        0
            GL mtrack    12620    12620        0        0
              Unknown     4088     4000        0        0
                TOTAL    36495    31644     1308        0    32611    25538     7072
      
         Objects
                       Views:      103         ViewRootImpl:        1
                 AppContexts:        3           Activities:        1
                      Assets:        4        AssetManagers:        4
               Local Binders:       21        Proxy Binders:       23
               Parcel memory:        3         Parcel count:       14
            Death Recipients:        2      OpenSSL Sockets:        0
      
         SQL
                 MEMORY_USED:        0
          PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0
  • adb shell dumpsys dbinfo <package_name>

    • 能夠查看指定包名應用的數據庫存儲信息(包括存儲的sql語句)
  • adb shell dumpsys activity services <package_name>

    • 查看該應用起了哪些服務
  • adb pull

    • 將設備中的文件放到到本地

    • eg:adb pull /sdcard/tmp.txt D:\

    命令簡單,不在多說,只是在操做的時候可能遇到文件權限問題,用chmod改一下權限便可。

  • adb forward [(遠程端)協議:端口號] [(設備端)協議:端口號]

    • 設備的端口轉發

      adb forward tcp:23946 tcp:23946
        adb forward tcp:8700 jwdp:1786

    這個命令對於咱們在調試的時候很是有用,特別在IDA調試中。

  • adb jdwp

    • 查看設備中能夠被調試的應用的進程號

      adb jdwp

    這個命令或許用途不是不少,可是對於調試的時候仍是有點用途。能夠忽略這個命令。

  • adb logcat |findstr pname/pid/keyword

    • 查看當前日誌信息

      adb logcat -s tag |findstr  <package_name>
      
        adb logcat -s ActivityManager | findstr  com.android.settings
        I/ActivityManager(  848): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000
         cmp=com.android.settings/.Settings bnds=[828,1302][1026,1542]} from uid 10024 on display 0

    這個命令你們都不陌生,也是重中之重,有的同窗或許會好奇,爲什麼不用AS查看日誌了,可是有時候AS不能知足咱們,好比咱們想開多個日誌窗口,這時候咱們能夠打開多個cmd窗口利用這個命令查看日誌信息便可。用的最多的就是-s參數,能夠直接查看對應的tag日誌信息,能夠利用findstr進行信息過濾:

    • 也能夠進入 adb shell 時 經過grep 進行過濾
  • am start -n [包(package)名]/[包名].[活動(activity)名稱]

    • 啓動一個應用

      am start -n com.android.browser/com.android.browser.BrowserActivity

    注意:能夠以debug方式啓動應用:am start –D –n …. 特別在咱們反編譯調試應用的時候,可能須要以debug方式啓動應用

  • am startservice -n [包(package)名]/[包名].[服務(service)名]

    • 啓動一個服務

      am startservice -n com.android.traffic/com.android.traffic.maniservice

    和上面命令相似,啓動服務

  • am broadcast -a [廣播動做]

    • 發送一個廣播

      am broadcast -a android.NET.conn.CONNECTIVITY_CHANGE

    和上面的命令相似,發送一個廣播,有時候咱們定義了一個廣播,可能須要測試,就能夠藉助這個功能模擬發送一個廣播。

  • netcfg

  • 查看設備的ip地址

    有時候想查看設備的ip地址,去設置頁面太費勁了,能夠直接用這個命令便可

  • aapt dump xmltree [apk包] [須要查看的資源文件xml]

    • 查看apk中的信息以及編輯apk程序包

      aapt dump xmltree demo.apk AndroidManifest.xml
  • dexdump [dex文件路徑]

    • 能夠查看一個dex文件的相信信息

      dexdump D:\classes.dex
  • cat /proc/[pid]/maps

    • 查看當前進程的內存加載狀況,查看當前進程的內存映射信息,好比加載了哪些so文件,dex文件等:
  • cat /proc/[pid]/status

    • 查看當前進程的狀態信息
  • cat /proc/[pid]/net/tcp/tcp6/udp/udp6

    • 獲取當前應用使用到的端口號信息
相關文章
相關標籤/搜索