总结一些常用Android adb 命令
2019獨角獸企業重金招聘Python工程師標準>>>
總結一些常用的adb 命令
引言
- Android開發中我們有時候需要借助一些命令幫助更好的高效率定位解決問題,本文就來介紹一些可能有些隱藏的而卻非常好用的命令,可以幫我們快速找到問題。
基礎命令
-
像一些比較常用的命令比如,cd rm cp 就不介紹了,下面介紹幾個不太常用,了解之后大大提高開發效率的幾個命令。
-
cat
-
該命名常用語查看文件,現在我往data/local/tmp push了一個config.xml文件,可以用cat 命令對其進行查看。
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] file
- [-l] 鎖定該程序,安裝
- [-r] 重新安裝該程序,保存數據
- [-s] 安裝到sdcard
-
adb uninstall [-k] package_name
- [-K] 不清楚數據,卸載
-
pm clear package_name
-清除指定包名的數據
-
pm install
- 對應adb install
-
pm uninstall
- 對應adb install
-
adb shell dumpsys
-
adb shelll dumpsys activity top
- 用于查看當前運行應用的的信息C:\Users\isaac>adb shell dumpsys activity topTASK com.aliyun.homeshell id=1ACTIVITY com.aliyun.homeshell/.Launcher 296c7d6c pid=1867Local Activity 22a2410f State:mResumed=true mStopped=false mFinished=falsemLoadersStarted=truemChangingConfigurations=falsemCurrentConfig={1.0 ?mcc?mnc zh_CN ?layoutDir sw360dp w360dp h615dp 480dpi nrml long port finger -keyb/v/h -nav/hs.6colorMap={header_color=-16731727, dark_mode=0, hw_highlighted_text=1711321521, hw_color_primary_disabled=-16731727, header_widget_color_pressed=-2500135, hw_color_primary=-16731727, hw_color_primary_dark=-16739694, header_text_color_unchecked=-2130706434, dyncolor_mode=1, hw_dialog_ok_button_text_disable=1711321521, header_divider=-13648194, header_text_color=-2, header_widget_color_normal=-2, header_widget_color_disable=-2}}FragmentManager misc state:mActivity=com.aliyun.homeshell.Launcher@22a2410fmContainer=android.app.Activity$1@30c7b48cmCurState=5 mStateSaved=false mDestroyed=falseViewRoot:略//可以看到當前應用的基本信息已經出來了,下面還包括整個View的層級
-
-
adb shell dumpsys package <package_name>
-
可以查看指定包名應用的詳細信息(相當于應用的AndroidManifest.xml中的內容)
C:\Users\isaac>adb shell dumpsys package com.android.settingsActivity 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$WifiSettingsActivityandroid.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 HeapTotal Dirty Clean Dirty Size Alloc Free------ ------ ------ ------ ------ ------ ------Native Heap 0 0 0 0 12288 6287 6000Dalvik Heap 3775 3072 0 0 20323 19251 1072Dalvik Other 357 252 0 0Stack 156 156 0 0Ashmem 8 0 0 0Other 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 0Other mmap 27 4 0 0EGL mtrack 10880 10880 0 0GL mtrack 12620 12620 0 0Unknown 4088 4000 0 0TOTAL 36495 31644 1308 0 32611 25538 7072ObjectsViews: 103 ViewRootImpl: 1AppContexts: 3 Activities: 1Assets: 4 AssetManagers: 4Local Binders: 21 Proxy Binders: 23Parcel memory: 3 Parcel count: 14Death Recipients: 2 OpenSSL Sockets: 0SQLMEMORY_USED: 0PAGECACHE_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:23946adb 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.settingsI/ActivityManager( 848): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000cmp=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
- 獲取當前應用使用到的端口號信息
轉載于:https://my.oschina.net/caipeng/blog/983709
總結
以上是生活随笔為你收集整理的总结一些常用Android adb 命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse The current
- 下一篇: hdu 4966 最小树形图