adb命令大全


adb是什么?:adb的全稱為Android Debug Bridge,就是起到調試橋的作用。通過adb我們可以在Eclipse中方面通過DDMS來調試Android程序,說白了就是debug工具。adb的工作方式比較特殊,采用監聽Socket TCP 5554等端口的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網絡端口,所以當我們運行Eclipse時adb進程就會自動運行。
  adb有什么用?:借助adb工具,我們可以管理設備或手機模擬器的狀態。還可以進行很多手機操作,如安裝軟件、系統升級、運行shell命令等等。其實簡而言說,adb就是連接Android手機與PC端的橋梁,可以讓用戶在電腦上對手機進行全面的操作!

常用命令:

1.顯示當前運行的全部模擬器: adb devices
2.啟動ADB adb start-server
3.停止ADB adb kill-server
4.安裝應用程序: adb install -r [apk文件]
-l #鎖定該程序-r #重新安裝該程序,保存數據-s #安裝在SD卡內,而不是設備內部存儲
例:adb install --r D:\mm.apk
5.卸載應用程序: adb uninstall [packagename]
例:adb uninstall com.tencent.mm
-k #不刪除程序運行所產生的數據和緩存目錄(如軟件的數據庫文件)
例:adb uninstall -k com.tencent.mm

  1. 講手機設備中的文件copy到本地計算機:
    adb pull 設備目錄 本地目錄例:adb pull /sdcard/mm.txt D:(講內存卡根目錄的txt文件copy到D盤根目錄)
    7.將本地計算機的文件copy到手機設備中
    adb push 本地目錄 手機設備目錄例:adb push D:\mm.txt /sdcard
    8.查看adb命令幫助信息: adb help
    9.截屏例:adb shell screencap -p 截圖文件路徑
    10.查看指定包名應用的數據庫儲存信息(包括儲存的SQL語句)
    例:adb shell dumpsys dbinfo[packagename]

11.查看指定的進程或則進程id的內存信息
adb shell dumpsys meminfo[packagename/pid]可以查看進程當前的內存情況
例:adb shell dumpsys meminfo com.tencent.mm
12.查看指定包名應用的詳細信息(相當於AndroidMainfest.xml中內容)
adb shell dumpsys [packagename]例:adb shell dumpsys com.tencent.mm
13.查看當前應用的activity信息adb shell dumpsys activity top查看bug報告:
adb bugreport
14.列出手機裝的所有apk包名
adb shell pm list packages
系統應用:adb shell pm list packages -s
第三方應用:adb shell pm list packages -3
使用grep過濾 :adb shell pm list packages | grep qq

15.清除應用緩存信息:
adb shell pm clear [packagename]
16.通過adb啟動應用程序頁面
adb shell am start -n[包名+activity名]
例:adb shell am start -n com.tencent.mm/.ui.SplashAcitvity
強制停止應用有些時候應用卡死了,需要強制停止,則執行以下命令:adb shell am force-stop // 如:adb shell am force-stop cn.androidstar.demo
17、記錄無線通訊日志:
一般來說,無線通訊的日志非常多,在運行時沒必要去記錄,但我們還是可以通過命令,設置記錄:
adb shell
logcat -b radio
18、獲取設備的ID和序列號: adb get-product
adb get-serialno

19、訪問數據庫SQLite3 adb shell
sqlite3#cd system/sd/data //進入系統內指定文件夾

ls //列表顯示當前文件夾內容

rm -r xxx //刪除名字為xxx的文件夾及其里面的所有文件

rm xxx //刪除文件xxx

rmdir xxx //刪除xxx的文件夾

20.導出設備信息
adb get-serialno > 序列號.txt
adb shell cat /sys/class/net/wlan0/address > MAC地址.txt
adb shell getprop ro.product.model > 設備型號.txt
adb shell getprop ro.build.version.release> 系統版本.txt
adb shell pm list packages -s > 系統應用的所有包名.txt
adb shell pm list packages -3 > 第三方應用包名.txt
adb shell wm size > 屏幕分辨率.txt
adb shell wm density > 屏幕密度.txt
adb shell cat /proc/cpuinfo > CPU信息.txt
adb shell pm list permissions -f > 權限.txt
adb shell pm list users -f > 用戶.txt

21.重啟adb reboot
還有2個非常有用的命令:

22.備份adb backup
[-f ] [-apk|-noapk][-shared|-noshared] [-all] [-system|nosystem] [<packages...>]
例:adb backup -f mm.ab -noapk -noshared -nosystemcom.tencent.mm你可以使用的最基本的命令是很簡單的
adb backup -all
它將使用默認方式備份應用和設備的數據(不包含apk)到當前目錄下並保存為文件backup.ab
※這個命令有可能不對每個設置都有效,如果你出現像這種 "adb: cannot open file ./backup.ab"的錯誤,使用 adb backup -all -fC:\backup.ab來代替,其中路徑C:\可根據喜好替換
對各個參數的解釋:
-f
用這個來選擇備份文件存儲在哪里,例如-f /backup/mybackup.ab將會使文件存儲在根磁盤(Windows的C盤等等)下一個名為backup的文件夾里,並且備份文件名為mybackup.ab
-apk|-noapk
這個決定是否在備份里包含apk或者僅僅只備份應用數據,個人推薦使用-apk以免有的應用在應用市場找不到,如果不使用則默認的是-noapk
-shared|-noshared
這個參數用於決定是否備份設備共享的SD card內容,默認是-noshare,主要包括內部存儲中的音樂、圖片和視頻,因此為保險起見,建議加上-share
-all
這個參數是一種簡單地表達“所有應用”的說法,package參數可以選擇備份單獨的應用,如果你不是備份某個應用,使用-all備份整個系統
-system|-nosystem
這個參數決定-all標簽是否包含系統應用,默認的是-system,根據情況可選擇是否用-nosystem
<packages...>
如果你知道應用安裝包的名稱(例如com.google.android.apps.plus),就可以使用該參數備份特定應用。
3.當決定如何執行備份后,輸入你喜歡的命令,在華為G700上測試,使用命令
adb backup -apk -all

23.使用run-as在非root情況獲取沙盒數據(前提是開啟debuggable模式)
1. shell@android:/data $ run-as com.your.package
2. run-as com.your.package
3. shell@android:/data/data/com.your.package $ cd /data/data/com.your.package
4. cd /data/data/com.your.package
5. shell@android:/data/data/com.your.package $ ls
6. ls
7. cache
8. databases
9. lib
10. shared_prefs
11. shell@android:/data/data/com.your.package $ cd databases
12. cd databases
13. shell@android:/data/data/com.your.package/databases $ ls
14. yourpackagename.db
15. $ cat preferences.db > /mnt/sdcard/yourpackagename.db
將你要訪問的package目錄下的db文件拷貝到sdcard中,這樣就可以正常訪問了! 對文件進行增刪

24:adb shell "run-aspackage.name chmod 666 /data/data/package.name/databases/file"
adb pull /data/data/package.name/databases/file .
adb shell "run-aspackage.name chmod 600 /data/data/package.name/databases/file"
adb exec-out run-as package.name cat databases/file > file

  1. adb shellshell $ run-as com.example.packageshell $ chmod 666 databases/fileshell $ exit
    'run-as'shell $ cp /data/data/package.name/databases/file /sdcard/shell $ run-as com.example.packageshell $ chmod 600 databases/file> adb pull /sdcard/file .

26.更新一些反編譯常用命令:
1.查看當前進程的內存的加載情況啊:
cat /proc/7654/maps 查看當前進程內存的映射情況
2.查看當前應用使用的端口號信息:
cat /proc/[pid]/net/tcp
3.查看進程的狀態信息:
cat /proc/[pid]/status可以通過該命令獲取到當前進程的包名,PID,PPID等等重要信息(比較實用的命令)
4.查看一個dex文件的詳細信息
dexdump [dex文件路徑]
5.使用aapt命令獲取apk的清單文件
aapt dump xmltree [apk包] [需要查看的資源文件xml]
例:aapt dump xmltree mm.apk AndroidMainfest.xml > demo.txt(講mm應用中的
AndroidMainfest.xml文件導入到新建的demo.txt文本中)
這里可能大家有個誤區,aapt命令是與adb命令不是同一個命令,如果要使用和adb一樣需要配置環境變
量,也可以在SDK的build-tools文件夾內,shift+右鍵在此處打開命令窗口使用該命令!


免責聲明!

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



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