adb命令集錦

adb 是什麼?

adb工具即Android Debug Bridge(安卓調試橋) tools。它就是一個命令行窗口,用於電腦端與模擬器或者真實設備交互。
經常使用操做:java

  • 把文件發送到android設備,或從android拖拽文件到本地
  • 在android設備上安裝/卸載應用
  • 把APP的日誌導出到本地
  • 截屏
    思考:上面說的這幾點可否有其餘方式替代,有什麼區別?

adb怎麼使用?

  1. 下載adb壓縮包,解壓後,添加環境變量,而後就能夠在dos環境下使用了。
  2. usb鏈接電腦和手機,包括 Android 設備處於正常開機狀態,USB 鏈接線和各類接口無缺。
  3. Android 設備的開發者選項和 USB 調試模式已開啓
  4. 設備驅動狀態正常。這一點貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到須要安裝驅動的狀況,確認這一點能夠右鍵「計算機」-「屬性」,到「設備管理器」裏查看相關設備上是否有黃色感嘆號或問號,若是沒有就說明驅動狀態已經好了。不然能夠下載一個手機助手類程序來安裝驅動先。
  5. 經過 USB 線鏈接好電腦和設備後確認狀態。

常見問題:

adb devices 沒有設備:可藉助驅動精靈檢查手機驅動,驅動安裝好以後重啓電腦。
adb devices unauthorized :解決辦法:將手機設置->輔助功能->開發者模式->撤銷usb調試受權,從新打開開發者模式android

經常使用命令

pc連接的全部android 設備

adb devices

查看adb版本

adb version

裝包

若是在電腦D盤下面有個a.apk文件,只須要一行命令就安裝到手機上:
adb install d:/a.apk

若是已經安裝了這個程序,能夠經過如下命令覆蓋安裝:
adb install -r d:/a.apk

保留數據和緩存文件,從新安裝 apk
adb install -r a.apk

安裝包在android設備中
adb shell pm install apk在移動端的路徑

卸載包

adb uninstall 包名

卸載軟件可是保留配置和緩存文件:
adb uninstall -k 包名

若是機器上有多個模擬器或真機,須要使用-s命令行參數指定具體的模擬器或真機。例如,下面的命令分別在模擬器和真機上安裝、從新安裝和卸載應用程序。shell

在emulator-5554模擬器上安裝ebook.apk
adb -s emulator-5554 install ebook.apk

在真機上安裝ebook.apk
adb -s HT9BYL904399 install ebook.apk

在emulator-5554模擬器上從新安裝ebook.apk
adb -s emulator-5554 install -r ebook.apk

在真機上從新安裝ebook.apk
adb -s HT9BYL904399 install -r ebook.apk

在emulator-5554模擬器上卸載ebook.apk(不保留數據和緩衝目錄)
adb -s emulator-5554 uninstall net.blogjava.mobile.ebook

在真機上卸載ebook.apk(保留數據和緩衝目錄)
adb -s HT9BYL904399 uninstall -k net.blogjava.mobile.ebook

包管理,如何知道一個app包名呢

包名(Package name)在Android系統中是判斷一個App的惟一標識,不一樣的App能夠有一樣的名字,可是它的包名不能夠相同。緩存

例如我能夠本身編譯生成一個App也叫「微信」,可是我App的包名不能爲com.tencent.mm(微信的包名爲這個),若是我指定的包名若是也和微信一致了,那麼個人手機上只容許安裝這兩個App中的其中一個。說到這不少人就會有疑問,若是有人惡意作了一個和微信內容如出一轍的App,名字和包名都和微信同樣,那怎麼分辨呢?Android中爲了防止這樣,還作了一個叫簽名的東西,微信的簽名通常咱們是沒有的,因此就能夠經過簽名來標識出這款App究竟是誰的了。服務器

一、看源代碼

當有源代碼的時候,能夠到工程目錄下的 「AndroidManifest.xml」文件下查看package這一項。

二、adb命令查看

列出手機裝的全部 app 的包名:
adb shell pm list packages 

列出系統應用的全部包名:
adb shell pm list packages -s 

列出除了系統應用的第三方應用包名:
adb shell pm list packages -3

推測一個包中可能帶有的關鍵字:
adb shell dumpsys activity | findstr mFocusedActivity

清除應用數據與緩存
adb shell pm clear 應用包名

文件相關

一、接收電腦文件
語法:adb push local remote
案例:adb push d:/a.txt /sdcard/  
把電腦 D 盤下的 a.txt 文件推送到手機 sdcard 目錄下

二、上傳文件到電腦
語法:adb pull remote local
案例:adb pull /sdcard/a.txt d:/   
上傳位於/sdcard/目錄下的 a.txt 文件到電腦的 D 盤根目錄下

截屏、錄屏

能夠在安卓設備上裝個QQ之類的軟件,進行截屏

adb shell screencap /sdcard/a.png
adb shell /system/bin/screencap -p /sdcard/a.png

二、使用adb進行屏幕錄像

adb shell screenrecord /sdcard/a.mp4
經過ctrl+c中止錄製,你能夠在sdcard目錄下查看。媽媽不再擔憂我處處找錄製視頻的軟件了。

shell

進入shell
adb shell

退出shell
exit

手機信息收集

獲取序列號
adb get-serialno

獲取 MAC 地址
adb shell  cat /sys/class/net/wlan0/address


查看設備型號
adb shell getprop ro.product.model

查看 Android 系統版本
adb shell getprop ro.build.version.release

查看屏幕分辨率
adb shell wm size

查看屏幕密度
adb shell wm density

查看permissions
adb shell pm list permissions 

查看系統的危險權限dangerous permissions
adb shell pm list permissions -d -g

adb服務器殺死和啓動

adb kill-server
adb start-server
好比但願移動adb文件夾,或者adb命令得不到想要的內容時

與進程相關:

列出當前進程
adb shell ps | findstr 包名

殺死某個包的進程
adb shell am force-stop 包名

與性能相關的一些內容

獲取內存:
adb shell dumpsys meminfo 包名

獲取cpu:
adb shell dumpsys cpuinfo | findstr 包名

adb shell top -n 1 | findstr 包名

獲取流暢度相關:
adb shell dumpsys gfxinfo 包名

app的啓動中止

若是想在模擬器或真機上運行已安裝的應用程序,除了直接在模擬器或真機上操做外,還可使用以下的命令直接運行程序。微信

在emulator-5554模擬器上運行ebook.apk
adb -s emulator-5554 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

在真機上運行ebook.apk
adb -s HT9BYL904399 shell am start -n net.blogjava.mobile.ebook/net.blogjava.mobile.ebook.Main

其中Main是ebook.apk的主Activity。至關於Windows應用程序的主窗體或Web應用程序的主頁面。am是shell命令。

與Activity操做等相關

查看當前顯示的activity
adb shell dumpsys activity | findstr "mFocusedActivity"
結果:
  mFocusedActivity: ActivityRecord{93a4f9 u0 com.youdao.note/.activity2.MainActivity t36}
注意:咱們只須要這一部分:com.youdao.note/.activity2.MainActivity
即包名+activity
  
找到當前手機內的top Activity:
adb shell dumpsys activity top | findstr ACTIVITY

啓動某一個Activity:
adb shell am start activity路徑
adb shell am start com.youdao.note/.activity2.MainActivity
———————這個Activity路徑可經過上面獲取top activity的方式獲取

查看8080端口是哪一個應用佔用(查看本地,用於排查問題)

netstat -ano|findstr "8080"
相關文章
相關標籤/搜索