天天看點

ADB常用指令和logcat

一 adb常用指令

1. 檢視裝置

adb devices      //目前連接配接的裝置, 連接配接到計算機的android裝置或者模拟器将會顯示處理

2. 安裝軟體 解除安裝軟體

adb install xxx.apk               //安裝軟體

adb install -r xxx.apk            //重新安裝該軟體

adb uninstall apk包名.apk         //解除安裝apk軟體 

3. 登入裝置shell

adb shell                //進入手機的超級終端Terminal

adb shell <command指令>  //直接shell運作裝置指令, 相當于執行遠端指令

4. 從PC上發送檔案到手機

adb push <本地路徑> <遠端路徑>

adb push D:\xxx.apk system/app/

//A[system/app/]為手機路徑,B[D:\xxx.apk]為電腦路徑,,把檔案從電腦複制到手機上

5. 從手機上下載下傳檔案到PC

adb pull <遠端路徑> <本地路徑>

adb pull system/app/xxx.apk D:\

//A[system/app/xxx.apk]為手機路徑,B[D:\]為電腦路徑,,把檔案從手機中複制到電腦上

6. 其他

adb remount           //重新挂載檔案系統

adb reboot            //重新開機手機

adb reboot recovery   //重新開機到Recovery界面

adb reboot bootloader //重新開機到bootloader界面

二 log使用

android.util.Log常用的方法有以下5個:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。

根據首字母對應VERBOSE,DEBUG,INFO, WARN,ERROR。

1、Log.v 的調試為黑色,任何消息都會輸出

2、Log.d 的輸出為藍色,僅輸出debug調試資訊

3、Log.i 的輸出為綠色,一般提示性消息information,無v和d的資訊,會顯示i、w和e的資訊

4、Log.w 的意思為橙色,warning資訊,需要我們注意優化Android代碼,會輸出e的資訊。

5、Log.e 為紅色錯誤資訊,分析檢視棧資訊。

三 adb logcat過濾

1. 隻顯示需要的輸出,白名單

最友善的當然是通過管道使用 grep 過濾了,這樣可以使用 grep 強大的正規表達式比對。簡單的比對一行當中的某個字元串,例如 MyApp:

adb logcat | grep MyApp

adb logcat | grep -i myapp #忽略大小寫。

2 儲存log

使用-d參數,可以在讀完所有log後傳回,而不會一直等待,在自動化較有用。例如:

adb logcat -d -s xxx > xxx.log //得到filter為xxx的日志,存入xxx.log,然後傳回。

3 其他

adb logcat -s TAG名稱             //顯示某一TAG的日志資訊:

adb logcat -v time -s videocamera //列印出 log 資訊中時間,以及包含關鍵字 "videocamera" 的所有 log

四 系統調用指令

1.檢視程序的memInfo

adb shell dumpsys meminfo 程序名   //在該指令的後面要加上程序的名字,以确定是哪個程序。

adb shell dumpsys meminfo com.android.mms将得到com.android.mms程序使用的記憶體資訊:

Applications Memory Usage (kB):

Uptime: 495867 Realtime: 3319185

** MEMINFO in pid 2362 [com.android.mms] **

                         Shared  Private     Heap     Heap     Heap

                   Pss    Dirty    Dirty     Size    Alloc     Free

                ------   ------   ------   ------   ------   ------

       Native        0        0        0     3072     2939      117

       Dalvik     6594    11816     6236    15047    14308      739

       Cursor        0        0        0

       Ashmem        0        0        0

    Other dev        4       32        0

     .so mmap      879     1240      500

    .jar mmap        0        0        0

    .apk mmap      141        0        0

    .ttf mmap      119        0        0

    .dex mmap     1185        0        0

   Other mmap      127       20      124

      Unknown     1840      344     1836

        TOTAL    10889    13452     8696    18119    17247      856

 Objects

               Views:       44         ViewRootImpl:        1

         AppContexts:        3           Activities:        1

              Assets:        4        AssetManagers:        4

       Local Binders:       24        Proxy Binders:       38

    Death Recipients:        0

     OpenSSL Sockets:        0

 SQL

         MEMORY_USED:        0

  PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0

2.adb shell top

top指令是Linux下常用的性能分析工具,可實時顯示系統中各個程序的資源使用情況,有點像Windows的任務管

理器。

3.adb shell cat /proc/meminfo

隻能得出系統整個記憶體的大概使用情況

可以用來檢視剩餘的空間,通常系統的剩餘空間量為:MemFree + Cached

N:\>adb shell cat /proc/meminfo

MemTotal:         908816 kB

MemFree:          347540 kB

Buffers:           17440 kB

Cached:           148340 kB

SwapCached:            0 kB

Active:           243316 kB

Inactive:         128280 kB

如上剩餘空間為 347540 kB + 148340 kB

4.adb shell procrank

檢視所有程序的記憶體使用情況,哪些app/程序占用記憶體過多。

一般以PSS欄為參考,關注PSS值較大的程序。

N:\>adb shell procrank

  PID      Vss      Rss      Pss      Uss  cmdline

  383   72900K   61928K   30386K   27472K  system_server

  643   62996K   57472K   26467K   24092K  com.android.phone

  699   89816K   49876K   19985K   18116K  com.android.launcher

  503   49708K   44444K   14833K   12904K  com.android.systemui

  789   42392K   42184K   13735K   11648K  android.process.acore

  583   41864K   41568K   12369K   10584K  com.android.settings

 2362   51204K   40140K   11098K    9540K  com.android.mms

 1118   38668K   38452K   10775K    9484K  com.aspire.mmservice

  802   37892K   37656K   10604K    9384K  com.android.contacts

 1391   33760K   33560K    7168K    6004K  cn.emagsoftware.gamehall:b

 1343   32480K   32256K    6277K    5200K  cn.wps.moffice_eng

  550   32908K   32684K    5649K    4300K  android.process.media

 1152   31628K   31412K    5018K    3992K  cmccwm.mobilemusic

五、adb啟動 應用程式 (1)檢視app包名: 進入android作業系統 adb shell 在[email protected]:/ # 後邊,輸入 cd data/data 然後輸入ls 這樣就能看見android系統上安裝的安裝包 包名: 例如: cn.com.conversant.swiftsync.android com.android.backupconfirm com.android.browser com.android.calculator2 com.android.calendar com.android.camera ... (2)adb啟動 應用程式 adb shell am start -n cn.com.conversant.swiftsync.android/ cn.c om.conversant.swiftsync.android.main.SplashActivity 備注:adb shell am start -n 包名/ Activity類的類名 包名和Activity類的類名一定要輸入正确,可以用re-sign工具(在最後的彈出資訊框會顯示出包名和Activity類名)。 六、adb停止 應用程式 adb shell am force-stop   cn.com.conversant.swiftsync.android 備注: cn.com.conversant.swiftsync.android為包名。

繼續閱讀