導航:首頁 > 程序命令 > adb命令詳解

adb命令詳解

發布時間:2023-03-08 09:09:51

㈠ 常用的adb命令

在平時的工作中,會經常用到adb命令,在這里稍微整理了一下。

一.概要

1.什麼是adb?

adb全稱為android Debug Bridge,就是起到調試橋的作用。顧名思義,adb就是一個debug工具。

2.adb工作原理

不是很理解?那就來看看它的工作原理吧。

上圖是一個簡單的adb工作原理圖。adb客戶端伺服器端程序,由上圖可以看出它主要三個組件組成:Client,Server,Daemon。

(1)當你啟動一個adb Client(客戶端),Client首先會選確認是否已有一個adb

Server(伺服器)進程在運行,如果沒有,則會啟動Server進程。此時,adb Server就會綁定本地的TCP埠5037,並監聽adb

Client發來的命令。

(2)接著,Server將會掃描所有5555到5585范圍內的奇數埠來定位所有的模擬器或設備,並與之建立連接。一旦Server找到

了adb

daemon(守護程序),它將建立一個到該埠的連接,這樣,我們就可以使用adb命令控制和訪問模擬器或設備了。在這里,需注意的是任何模擬器或設備實例會取得兩個連續的埠:一個偶數埠用來相應控制台的連接,和一個奇數埠用來響應adb連接。

3.adb的作用

藉助adb工具,我們可以管理設備或手機模擬器的狀態,還可以進行很多手機操作,如安裝軟體、系統升級、運行shell命令等等。簡而言之,adb就是連接Android手機和PC端的橋梁,可以讓用戶在電腦上對手機進行全面的操作。

二.常用命令

這個部分主要介紹adb的使用方法和一些常用的命令。

設置adb環境:將android sdk工作目錄添加到系統環境變數中,則可使用adb命令了。

1. adb devices

查看當前連接的設備(連接計算機的Android設備或者模擬器)。

2.adb install

adb install <apk文件路徑>,將指定的apk安裝到設備上,安裝的apk包會放在/data/app目錄下。

幾個參數:

-r 強制安裝

-d(真機,多個設備中只有一個真機時適用)

-e(模擬器,多個設備中只有一個模擬器時適用)

-s(指定設備,後接序列號)

adb –s 44a188f9 install –r test.apk(其中44a188f9即序列號,通過adb devices可獲取)

3.adb uninstall

adb uninstall <apk包名>

adb uninstall –k <apk包名>

-k參數為卸載軟體時保留配置和緩存文件

4.adb reboot

重啟android設備

5.adb shell

通過adb shell 命令,就可以進入設備或者模擬器的shell環境了,在這個linux shell中,我們就可以執行各種Linux命令了。

如果只想執行一條shell命令,就可以採用:adb shell [shell_command]

在實際使用中,經常與grep或findstr一起使用,起到過濾作用,查看自己需要的關鍵信息。

6.adb shell su

前提手機已經root。獲取adb shell的root許可權。

使用su提權,用戶命令提示符有$變成#,如果手機沒有root,會提示su:permission denied。

7.adb shell ps/top

查看當前終端中的進程信息,如pid等。

8.adb shell am/pm

am全稱為activity manager,可使用am命令模擬各種系統的行為,如去啟動一個activity,強制停止進程,發送廣播進程,修改設備屏幕屬性等。

如:adb shell am start <apk包名>/<activityName>:啟動一個activity。

pm全稱為package manager,利用pm命令可模擬android行為或查詢設備上的應用等。

如:adb shell pm list packages

列出當前設備所有已安裝的程序的包名。

說明:

管道符「|」:可以把標準的輸入流與標準的輸出流進行合並,或者把某個命令的標准輸出流作為另一個命令的標准輸入流。

exit退出shell。

由於grep為linux命令,運行單條adb shell 時並沒有進入linux

shell環境,並不能用grep等其他linux命令,只能用window cmd的命令。在這里可以用findstr來代替grep,使用方法為

findstr/grep [keyword]

更詳細的內容可查看 參考文獻3 和 參考文獻4 。

對於常用的linux命令和常用的windows 控制台命令,以後再作總結。

9.adb pull 和 adb push

adb pull <設備中的文件路徑> <本地路徑>:從模擬器或設備中復制文件到本地。

adb push <本地文件路徑> <設備中的路徑>:將本地文件或目錄復制到模擬器或設備。

這里還涉及到一個許可權的問題,在後續的博文中再作介紹。

10.adb shell mpsys

Android提供的mpsys工具用於查看感興趣的系統服務信息與狀態。

參考下表:

11.adb shell monkey

跑monkey是android自動化測試的一種手段,所謂monkey測試就是模擬用戶的按鍵輸入,觸摸屏輸入,手勢輸入等。當Monkey程序在模擬器或設備運行的時候,如果用戶比如點擊,觸摸,手勢或一些系統級別的事件的時候,它就會產生隨機脈沖,所以可以用Monkey的隨機重復的方法對apk作壓力測試,來測試android

app的穩定性。

如下為測試騰訊新聞apk的一個簡單實例:

說明:第一個-s指定設備,如果只連接了一台設備,可不用該參數。

-p <apk包名>只允許系統啟動指定的app,如果不指定,將允許系統啟動設備中的所有app,也可指定多個包。

--throttle <毫秒數> 指定用戶操作(事件)間的時延。

--ignore-crashes 指定當應用程序崩潰時,Monkey依然發送事件,直到事件計數完成。

--ignore-timeouts 當應用程序發生ANR錯誤時,Monkey依然會發送事件,直到事件計數完成。

第2個-s,用於指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。

-v 用於指定反饋信息級別,總共分為level 0、level 1、level 2三個級別,級別越高,輸出的日誌越詳細。

最後的數字(這里是500):表示Monkey程序模擬500次隨機用戶操作事件。

>輸出測試結果到D:\monkeylog.txt

更詳細的參數可查看 參考文獻5 。

部分測試結果如下:

對於測試結果的分析,通過搜索關鍵詞來定位錯誤,主要包括以下四個方面:

1)ANR(Application Not

Response):程序無響應,一般主線程超過5秒沒處理就會出現ANR錯誤。通過搜索ANR關鍵詞來定位關鍵的事件信息。除了導出日誌外,還可以將/data/anr/目錄下的trace.txt文件導出,用來定位分析問題。使用>adb

pull /data/anr/trace.txt d:\ 將trace.txt文件導出到d盤。

2)ForceClosed或其他異常退出信息:通過搜索Fatal關鍵詞來定位。

3)崩潰問題:通過搜索Exception關鍵詞來定位。

4)發生異常後,通過搜索Crash關鍵詞來定位到詳細的堆棧信息。

 12.kill

kill用來中止一個進程。

比如我們在跑monkey的時候,怎麼強制關閉monkey呢,可以用kill <monkey進程PID>

說明:另開啟一個cmd,找到monkey的pid號,然後殺掉即可。

參考文獻:

1.Android調試橋: http://www.iteye.com/topic/260042

2.Android性能分析工具mpsys的使用: http://www.open-open.com/lib/view/open1405061994872.html

3.adb shell 中的am pm命令: http://www.android100.org/html/201312/09/4957.html

4.adb shell 啟動應用程序的方法: http://blog.chinaunix.net/uid-26997997-id-3350449.html

5.Monkey壓力測試詳解: http://blog.csdn.net/huangbiao86/article/details/8490743

㈡ 常見的adb 和 mankey 命令

一、常用adb命令

1、adb devices:查看已連接的設備

2、adb version:查看adb的版本序列號

3、adb -s <設備名字>:指定某設備做什麼(設備名字用1的方法可以查看)

4、adb install <安裝包.apk>:安裝應用(寫清楚apk的完整路徑)adb -s <設備名字> install <安裝包.apk>:指定設備安裝應用

5、adb shell:通過遠程shell命令來控制模擬器/設備

6、exit:退出shell遠程連接,回到原路徑。(Ctrl+d,退出shell,回到默認路徑)

7、adb pull <設備端路徑> <pc端路徑>:將指定的文件從設備/模擬器上拷貝到pc端(後面的pc端路徑可以不指定,默認存儲在當前路徑下)。例: adb pull /sdcard/log.txt c:/monkey

8、adb push <pc端路徑> <設備端路徑>:將指定的文件從pc端拷貝到設備/模擬器上

9、adb shell pm list packages:列出電腦端所有apk的包名

10、adb logcat:查看pc端的日誌輸出。adb shell界面只需輸入logcat,查看設備端日誌輸出(退出Ctrl+c)

二、Monkey命令擴展

1、最簡單的monkey執行語句:(adb shell)monkey –p com.jianjiexuan.na –v 500 (對com.jianjiexuan.na 這個程序包單獨進行一次500次的monkey測試)

名詞解釋:-p:用於約束限制,用此參數指定一個或多個包。指定包之後,Monkey將只允許系統啟動指定的APP。如果不指定包,Monkey將允許系統啟動設備中的所有APP。指定多個包:monkey -p –p -p -v 500-v:用於指定反饋信息級別(信息級別就是日誌的詳細程度),總共分3個級別,分別對應的參數如下表所示:

日誌級別 Level 0

例 monkey –p com.jianjiexuan.na –v 500說明:預設值,僅提供啟動提示、測試完成和最終結果等少量信息

日誌級別 Level 1

例 monkey –p com.jianjiexuan.na –v -v 500說明:提供較為詳細的日誌,包括每個發送到Activity的事件信息

日誌級別 Level 2

例 monkey –p com.jianjiexuan.na –v -v -v 500

說明:最詳細的日誌,包括了測試中選中/未選中的Activity信息

2、延時及固定序列(adb shell)monkey -s 100 -p com.jianjiexuan.na – -throttle 1000 -v 500 (每次執行一次有效的事件後休眠1000毫秒)(adb shell)monkey -p com.jianjiexuan.na – -throttle 1000 – -randomize-throttle -v 500 (每次執行一次有效事件後隨機延時0-200毫秒)名詞解釋:-s:用於指定偽隨機數生成器的seed值,如果seed相同,則兩次Monkey測試所產生的事件序列也相同的。出現問題下次可以重復同樣的系列進行排錯。–throttle:固定延時,用於指定用戶操作(即事件)間的時延,單位是毫秒;–randomize-throttle:隨機延時,用於指定用戶操作(即事件)間的時延,單位是毫秒。

3、保存monkey運行結果1)保存在PC中adb shell monkey –p com.jianjiexuan.na –v 500 > d:\monkey\log.txt 2)保存在手機中手機端進入shell模式:adb shell monkey –p com.jianjiexuan.na –v 500 > /mnt/sdcard/monkey/log.txt

㈢ Android安全入門基礎-ADB詳解

adb的全稱為Android Debug Bridge,就是起到調試橋的作用。通過adb我們可以在IDE中方面通過DDMS來調試Android程序,說白了就是debug工具。 adb的工作方式比較特殊,採用監聽Socket TCP 5554等埠的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網路埠,所以當我們運行IDE時adb進程就會自動運行。

adb的全稱為Android Debug Bridge,就是起到調試橋的作用。通過adb我們可以在Eclipse中方面通過DDMS來調試Android程序,說白了就是debug工具。 adb的工作方式比較特殊,採用監聽Socket TCP 5554等埠的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網路埠,所以當我們運行Eclipse時adb進程就會自動運行。
對於安卓開發與測試來說就像一把「瑞士軍刀」

ADB本身是Android手機開發時的調試工具,但是也可以用來作為手機管理工具。
基本上現在的豌豆莢(豌豆莢會自動在手機上安裝其APP-靜默安裝)、360手機助手、qq手機助手對手機的管理功能都是通過ADB來實現。
ADB的管理功能需要手機打開調試選項,這為手機管理提供了方便,同時也造成了安全隱患。
因為ADB工具可以實現查看手機內容、向手機寫入文件、給手機安裝軟體等功能,這些都不需要root許可權。
當我們打開手機的調試選項,並使用USB線將手機連接到PC時,不僅僅是手機管理工具可以控制手機,只要調用ADB命令,任何PC端的程序都可以訪問手機內容。
假設有一個運行在PC端的間諜程序,那麼就很容易檢測到手機與PC的連接,而且只要一條很簡單的命令"adb.exe shell ls /"就可以列出手機根目錄下的所有文件了。
其實如果打開了手機的調試選項,那麼手機連接到PC後就是在「裸奔",手機中的所有信息都可以被PC端抓取,其實這也就是現在流行的手機管理工具的基本原理。
所以如果需要保護手機上的私密信息,那麼最好謹慎打開手機的USB調試選項

㈣ 常用adb命令總結

前言

很早就想整理一下自己平時常用的一些adb命令,不僅為了便於以後查找,而且整理的過程自己又重新復習了一遍,但是當我開始在度娘一搜的時候,發現很多人已經寫的非常詳細了,尤其是當我發現了 這篇adb概括

心中一句NND,怎麼可以寫的這么詳細,瞬間沒了想寫這篇文章的慾望,如果你點了鏈接發現確實很全,那麼恭喜你可以關掉這篇了,哈哈哈。

我就不這么想的,雖然很全,但不是我常用的,因人而異,所以我就權當記筆記+替這哥們宣傳了。

設備的狀態有 3 種

常見的錯誤情況

-查看前台 Activity

最常用的就是啟動指定的activity和發送指定的廣播

操作指令 adb shell am start -n 包名/類名

啟動默認瀏覽器打開一個網頁

adb shell am start -a android.intent.action.VIEW -d http://testerhome.com

先停止目標應用,再啟動

adb shell am start -s com.android.camera/.Camera

啟動相機

adb shell am start -n com.android.camera/.Camera

啟動設置

adb shell am start -n com.android.settings/com.android.settings.Settings

啟動Wifi設置

adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings

啟動藍牙設置

adb shell am start -n com.android.settings/com.android.settings.bluetooth.BluetoothSettings

其它的類似只要你能在manifest中找到配置的,都可以通過這種方法來調用

操作指令 adb shell am broadcast -a 廣播名 --ei/es/ez 參數名 參數值 --ei/es/ez 參數名 參數值

--ei integer 值

--es String 值

--ez boolean 值

--ef float 值

--el long 值

例如之前寫的
Android6.0 源碼修改之Setting列表配置項動態添加和靜態添加 , 當中就通過發送廣播來接收增加配置列表項

adb shell am broadcast -a cn.dynamic.add.settingcategoryitem --es location "0-2" --es title "紅" --es intent "com.android.settings.SCHEDULE_POWER_ON_OFF_SETTING"

命令:

adb shell settings put global policy_control <key-values>
<key-values> 可由如下幾種鍵及其對應的值組成,格式為 key1=value1:key2=value2。

key 含義

這些鍵對應的值可則如下值用逗號組合:

value 含義

例如:

adb shell settings put global policy_control immersive.full=*
表示設置在所有界面下都同時隱藏狀態欄和導航欄。(重啟也不會失效,恢復需調用下面的命令)

adb shell settings put global policy_control immersive.preconfirms=*
表示恢復顯示

adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示設置在包名為 com.package1 和 com.package2 的應用里隱藏狀態欄,在除了包名為 com.package3 的所有應用里隱藏導航欄。

參考鏈接

Android 常用 adb 命令總結

ADB命令大全

㈤ Android常用的ADB命令

重啟:adb reboot

推文件:adb push E:\xxx.txt storage/sdcard

拉文件:adb push storage/sdcard .

將日誌保存到電腦文件: adb logcat > xxx. xxx電腦文本地址

清除指定應用的數據和緩存:adb shell pm clear 例:adb shell pm clear com.yzl.test

查看日誌緩沖區大小:adb shell logcat-g

設置日誌緩沖區大小:adb logcat-G10M

打開藍牙:adb shell svc bluetooth enable

關閉藍牙:adb shell svc bluetooth disable

查詢藍牙是否打開:adb shell settingsgetglobalbluetooth_on

獲取藍牙Mac地址:adb shell settingsgetsecure bluetooth_address

獲取某個包名的安裝路徑:adb shell pm path com.xx.xx

查看所有存活的進程:adb shell ps

過濾關鍵字查看adb shell ps|findstr xxx

強制安裝版本號更低的apk:adb install -r -d "C:\xx.apk"

對指定應用進行500次模擬觸摸事件:adb shell monkey -p com.yzl.test -v 500

查看某個apk的應用信息、版本信息:adb shell mpsys package com.yzl.test

查看已安裝應用列表:adb shell pm list package或adb shell pm list packages-s

㈥ 干貨|做App測試,那些必知必會的Adb常用命令

> 本文節選自霍格沃茲測試學院內部教材

為了讓大家更好的學習Adb常用命令,我們先從安裝Android環境搭建開始講解哦。

安裝jdk  

###  **  

**

 **  

**

### 因為 Android SDK 是依賴於 java 環境的,所以需要先把 java 的環境搭建好。Java

環境可以參考搭建帖子:https://ceshiren.com/t/topic/4001

安裝Android SDK  

###  

###  

### adb 包含在 Android SDK 平台工具軟體包中。具體的 Android SDK

環境搭建步驟請參考帖子:https://ceshiren.com/t/topic/4001

adb簡介  

adb 全稱為 Android Debug Bridge(Android 調試橋),是 Android SDK 中提供的用於管理 Android

模擬器或真機的工具。

adb 是一種功能強大的命令行工具,可讓 PC 端與 Android 設備進行通信。adb 命令可執行各種設備操作,例如安裝和調試應用。

adb組成  

採用了客戶端-伺服器(C/S)模型,包括三個部分:

  * adb client

  * adb server

  * adb daemon

ADB client:運行在電腦上,可以在命令行中運行 adb 命令來調用該客戶端。Client 本質上就是 Shell,用來發送命令給

Server。發送命令時,首先檢測 PC 上有沒有啟動 Server,如果沒有 Server,則會自動啟動一個,然後將命令發送到 Server。

ADB server:是運行在電腦上的後台進程,用於管理客戶端與運行在模擬器或真機的守護進程通信。

ADB Daemon:守護進程作為一個後台進程在 Android 設備或模擬器系統中運行。它的作用是連接 adb 服務端,並且為運行在主機上的 adb

客戶端提供一些服務。

adb工作原理  

當 adb 客戶端啟動時,客戶端會先檢查 adb 服務端是否啟動。如果沒有,會先啟動服務端進程。adb 服務端在啟動後,會與 5037 埠綁定,並監聽

adb 客戶端發出的命令。

然後,服務端會與所有正在運行的 Android 設備建立連接。它通過掃描 5555 到 5585 之間的奇數號埠查找 Android 設備。服務端一旦發現

Android 設備上的 adb 守護進程在運行,便會與相應的埠建立連接。每個 Android 設備都使用一對埠,偶數埠用於控制台連接,奇數埠用於

adb 連接。

例如:服務端與所有 Android 設備建立連接後,就可以使用 adb 命令來訪問這些設備了。服務端會管理已經建立的連接,並處理來自 adb 客戶端的命令。

啟動adb調試  

### Android 真機可以通過 USB 連接到 adb,連接時需要在設備的系統設置中啟用 USB 調試(位於開發者選項下),啟動 USB

調試後,設備上的 adb 守護進程就會被啟動,adb 服務端才可以和設備建立連接。除了用 USB 的方式連接之外,也可以通過 WLAN

的方式連接,這種方式不做贅述。

  1. 模擬器:不需要手動設置 USB 調試開關,默認是打開的

  2. 真機通過 USB 連接

    * 安裝 Android 手機驅動

    * 設備啟用 USB 調試

adb命令格式  

  * 

    adb [-d|-e|-s <serialNumber>] <command>

  * -d:指定當前唯一通過 USB 連接的 Android 設備為命令目標

  * -e:指定當前唯一運行的模擬器為命令目標

  * -s:指定相應 serialNumber 號的設備/模擬器為命令目標

方括弧中的內容是可選的,尖括弧內容的是必填的。方括弧中參數可以指定設備,關於設備的指定有三個參數可以使用。-d、-e 和 -s,其中使用最多的是 -s

參數,在連接多台設備的時候,一般都是使用 -s 加上設備的序列號這種方式去指定具體設備。

adb 可以同時連接多台設備,但是一次只能對一台設備執行命令。所有連接多台設備的時候,是必須要制定設備,命令才可以執行成功的。

查詢設備  

把 Android 設備連接到 adb 服務端後,需要確認設備的連接狀態。這時可以使用查詢命令進行查詢。

 **連接模擬器** (以 mumu 模擬器為例)

  *   * 

    adb connect 127.0.0.1:7555adb devices

  * `adb connect` 命令可以通過 WLAN 的方式連接到模擬器,7555 為 mumu 模擬器的埠

  * `adb devices` 可以查詢設備連接的狀態

Windows 系統中,連接模擬器需要先執行 connect 命令去連接模擬器,127.0.0.1 是本地的 IP

地址,因為模擬器就是安裝在本地的,所以要使用本地的 IP 地址,加上模擬器本身規定的一個埠號。mumu 的埠號是

7555,如果使用的是其他的模擬器的話,需要先去了解它的埠號是什麼,然後再去連接。MacOS 系統中連接模擬器不需要先執行 connect 命令,直接執行

`adb devices` 命令即可。

 **連接真機**

 **  

**

真機直接用 USB 連接到電腦,不需要執行 connect 命令。

直接用 `adb devices`命令查看已經連接的設備列表即可。

    feier@ ~ % adb devices  

    List of devices attached  

    emulator-5554    device

直接命令後,如果設備已經成功連接,那麼設備列表中就會展示已連接設備的信息。以圖中的信息為例:

  * emualotr-5554:設備序列號

  * device:設備連接狀態為成功

安裝卸載應用  

測試過程中,如果需要安裝或者卸載應用,可以直接用 adb 命令來操作。

  * 普通安裝:`adb install <apk路徑>`

  * 覆蓋安裝:`adb install -r <apk路徑>`

  * 完全卸載:`adb uninstall <包名>`

  * 保留配置文件:`adb uninstall -k <包名> `

設備與電腦傳輸文件  

adb 命令支持電腦和 Android 設備之間的文件互傳。比如我們需要提取 Android 設備中的日誌文件到本地,就可以通過 adb 命令的方式來完成。

  * 從電腦上傳文件至設備:`adb push <電腦路徑> <設備路徑>`

  * 從設備復制文件至電腦:`adb pull <設備路徑> <電腦路徑>`

日誌  

列印鏈接設備的 log 信息

  * 屏幕輸出日誌:`adb logcat`

  * 通過標簽過濾:`adb logcat -s 標簽`

  * 顯示時間:`adb logcat -v time`

  * 輸出所有信息:`adb logcat -v long`

  * 輸出日誌到文件:`adb logcat -v time > log.txt`

  * 清除舊日誌信息:`adb logcat -c`

adb shell命令  

使用 adb shell 命令相當於遠程登錄了 Android 系統,可以進入 Android 設備的系統內部。進入系統內部既可以執行一些簡單的 Linux

命令也支持很多特有的命令。

使用 adb shell 命令有兩種方式。

一種是直接在 adb shell 後面跟上命令。

  * 

    adb [-s serial_number] shell <command>

比如:

  *   *   *   *   *   *   *   *   *   *   * 

    feier@ ~ % adb shell .propdevetc...

另一種方式是在設備上啟動互動式 shell

  * 

    adb [-s serial_number] shell

進入 shell 之後,再執行對應的命令。

比如我們進入設備內部,可以查看設備內部的目錄結構和內容

  *   *   *   *   *   *   *   *   *   *   * 

    feier@ ~ % adb shellroot@x86:/ # .propdev...

要退出互動式 shell,可以按 Ctrl + D 鍵或輸入 exit。

 **Android常用測試命令**  

下面整理出了Android常用的一些測試命令及用法。  

設備截圖/錄屏  

在測試過程中,如果需要截圖或者是錄屏,也可以直接使用 adb 命令來完成。

  * 截圖:`adb shell screencap <設備路徑>`

  * 錄屏:`adb shell screenrecord <設備路徑>`

調用Activity管理器  

在 adb shell 中,可以使用 Activity 管理器 (am) 工具發出命令以執行各種系統操作,如啟動

Activity、強行停止進程、修改設備屏幕屬性,等等。

在測試過程中,如果需要啟動 app 或者強制關閉 app,可以通過 adb 命令來實現。

  * 啟動應用:`adb shell am start -n <包名>/<Activity名>`

  * 強制停止應用:`adb shell am force-stop <包名>`

調用軟體包管理器  

在 adb shell 中,可以使用軟體包管理器 (pm) 工具發出命令,以對設備上安裝的應用軟體包執行操作和查詢。

如果需要查詢設備里都安裝了什麼應用,就可以使用 adb shell pm list 來查看,還可以加上不同的參數去查看不同類型的應用。而且也可以通過 adb

命令來清除應用相關的數據。

  * 顯示設備中安裝的所有應用:`adb shell pm list packages`

  * 只顯示系統應用:`adb shell pm list packages -s`

  * 只顯示第三方應用:`adb shell pm list packages -3`

  * 刪除與軟體包關聯的所有數據:`adb shell pm clear <包名>`

adb shell mpsys  

mpsys 是一種在 Android 設備上運行的工具,可提供有關系統服務的信息。可以使用 adb 從命令行調用

mpsys,獲取在連接的設備上運行的所有系統服務的診斷輸出。

比如在測試中,如果需要通過 adb 命令啟動 app,則需要知道 app 的包名和入口的 Activity

名。這個時候,就可以通過下面這條命令獲取到這兩個信息。

這個場景,需要先把要獲取信息的應用啟動,讓它在前台運行,然後執行命令

`adb shell mpsys activity | grep mFocusedActivity`

  *   *   * 

    feier@ ~ % adb shell mpsys activity | grep mFocusedActivity  mFocusedActivity: ActivityRecord{9dae968 u0 com.xueqiu.android/.common.MainActivity t139}  

下方的日誌中就會展示出來當前的包名和 Activity 名稱。

  * 包名:`com.xueqiu.android`

  * Activity 名:`.common.MainActivity`

adb shell mpsys  

adb 命令還支持直接獲取應用的頁面信息。這個頁面信息包含了頁面中元素的屬性,可以方便做自動化測試的時候去定位元素。獲取到的頁面布局會輸出到一個 xml

文件中。

  * 當前窗口的 UI 布局簡化信息:`adb shell uiautomator mp --compressed`

  *   * 

    feier@ ~ % adb shell uiautomator mp --compressedUI hierchary mped to: /sdcard/window_mp.xml

不指定輸出文件路徑時,mp 下來的文件默認存儲路徑為 `/sdcard/window_mp.xml`

可以通過 adb pull 命令把文件傳輸到電腦中,然後用 uiautomatorviewer 工具打開查看布局。

  * 指定輸出文件路徑:`adb shell uiautomator mp file <設備路徑>`

adb常用命令就先講到這里啦,下期我們分享App常見bug解析。大家還想看什麼內容的文章也可以留言告訴我們哦!

 ** _ 

來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、性能測試、安全測試、持續集成/持續交付/DevOps,測試左移、測試右移、精準測試、測試平台開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力

QQ交流群:484590337

公眾號 TestingStudio

視頻資料領取:https://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/15844

點擊查看更多信息

㈦ adb 簡介及常用命令

adb全稱(Android Debug Bridge),它是一個通用命令行工具,它可以做為Android與PC端連接的一個橋梁,所以adb又稱為Android調試橋,用戶可以通過adb在電腦上對Android設備進行全面操作,比如安裝和調試應用,操作文件的傳輸等。

首先用戶啟動一個adb客戶端時,此客戶端先檢查是否存在已運行的adb伺服器進程。如果沒有,它將啟動一個伺服器進程,當伺服器進程啟動時,adb伺服器就會綁定本地的TCP埠5037並監聽adb客戶端發來的命令,使用的adb客戶端都使用埠5037與adb伺服器進行對話的。接著伺服器將所有運行中的模擬器或設備實例進行連接。它通過掃描所有5555到5585范圍內的奇數埠來定位所有的模擬器或設備。一旦伺服器找到了adb守護程序,將建立一個到該埠的連接。
客戶端發送的命令分為三種:

輸出狀態:

adb install安裝原理過程:

Android系統的日誌分為兩部分:底層的Linux內核日誌輸出到/proc/kmsg, Android日誌輸出到/dev/log。Android的Log等級通常有六類,按照日誌級別由低到高分別是:Verbose、Debug、Info、Warning、Error、Assert。

㈧ ADB常用命令

Android 調試橋 (adb)  ,可與設備進行通信。adb 命令可用於執行各種設備操作(例如安裝和調試應用),並提供對 Unix shell(可用來在設備上運行各種命令)的訪問許可權。它是一種客戶端-伺服器程序,包括以下三個組件:

客戶端: 用於發送命令。客戶端在開發機器上運行。可以通過發出 adb 命令從命令行終端調用客戶端。(可以通過它對Android應用進行安裝、卸載、調試)

PC上的手機助手基本都是通過adb命令去完成的。有時候裝了這類手機助手的話,它自帶的adb程序可能會與Android SDK下的adb程序產生沖突,5037埠被佔用,導致adb命令無法連接到設備。Windows下通過netstat -ano|findstr "5037"

守護程序 (adbd): 用於在設備上運行命令。守護程序在每個設備上作為後台進程運行

執行adb shell ps | grep adbd, 可以找到該後台進程,Windows使用findstr替代grep.

adb nodaemon server

伺服器(Service): 用於管理客戶端與守護程序之間的通信。伺服器在開發機器上作為後台進程運行

adb服務啟動後,Windows可以在任務管理中找到adb.exe; linux ps -ef | gref adb 可以查看service

一般都是通過這樣子的格式 adb [-d|-e|-s <設備序列號>] <子命令>

通常只有一台設備就忽略 [-d|-e|-s ] 這一部分

這里介紹一些常用的命令:

獲取設備列表及設備狀態

獲取設備的狀態

注意:設備的狀態有 3 鍾,device , offline , unknown

device:設備正常連接

offline:連接出現異常,設備無響應

unknown:沒有連接設備

 結束 adb 服務

 啟動 adb 服務

注意:通常兩個命令一起用,有時候我們開啟server會失敗,這是因為我們裝了的手機助手,豌豆莢或者其他軟體自帶有自己的adb,導致埠沖突開啟失敗。一般在連接出現異常,使用 adb devices 未正常列出設備, 設備狀態異常時使用 kill-server,然後運行 start-server 進行重啟服務。

列印 Android 的系統日誌

 列印 mpsys、mpstate、logcat 的輸出,也是用於分析錯誤輸出比較多

列印日誌後重定向到一個文件中

 安裝應用,覆蓋安裝是使用 -r 選項

注意:有些adb版本無法支持安裝中文的apk

查看手機應用包名

查看應用對應的apk文件在手機上的安裝位置則可以在上面的命令後加-f參數

卸載應用,後面跟的參數是應用的包名,請區別於 apk 文件名

'-k' means keep the data and cache directories , -k 選項,卸載時保存數據和緩存目錄

 將 Android 設備上的文件或者文件夾復制到本地

adb pull /sdcard/test.txt C:\Users\Administrator\Desktop\log

推送本地文件至 Android 設備

獲取連接到的手機的序列號

獲取設備的連接狀態

等待設備連接成功

該命令將會阻塞一直到默認連接的那部機器狀態變為device,也就是連接成功。

其實adb shell命令就是調用的是Android設備中的system/bin目錄下的命令。

Android的內核本身就是Linux,所以Android本身也支持Linux命令,但是因為是手機系統,所以進行了一定的刪減,部分命令不支持,而不支持的部分,我們可以通過安裝busybox這個軟體進行。

如何在手機中執行Shell命令?

  每次都加上adb shell來進行命令的發送與執行

 先通過adb shell進入手機Shell執行狀態,然後直接輸入Linux命令。

使一個apk處於禁用狀態,相當於卸載了:

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile

eg:adb shell su disable com.UCMobile/.main.UCMobile

同時我們在手機上發現,UC瀏覽器的圖標不見了

讓一個apk從禁用狀態恢復過來

其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:

adb shell su enable com.UCMobile/.main.UCMobile

同時我們從手機上發現,UC瀏覽器的圖標又出現了。

查看一個apk所在的路徑

adb shell pm path com.UCMobile

查看手機中裝的所有的包

屏幕開始錄像並且儲存到/sdcard中,同時名字為demo.mp4

錄屏設置時長10s,命名為demo.mp4

注意:現在僅支持一部分手機錄屏,不支持的手機會出現以下提示

解決方法:

安裝了scrcpy之後,只需要輸入如下命令,即可錄取指定設備的屏幕

scrcpy -s device --render-expired-frames -Nr ./demo.pm4

--render-expired-frames:盡可能最大幀率

-N:不在PC端展示

-r:錄制mp4/mkv文件

關閉設備請求,開啟設備

設備關機以及重啟

pm(package manager)可以獲取一些安裝到Android設備上的app的信息

pm list packages 用法:list packages [ options] filter

獲取所有的應用的包名

列出系統應用

列出第三方應用

查看它們的關聯文件

adb shell pm list package -f

查看軟體包的安裝來源

pm mp 包名 很多mp信息

安裝應用

apk如果在電腦用 adb install 

如果在Android設備上用 adb shell pm install

卸載應用,同adb uninstall ,後跟包名

清除應用數據

am(activity manager,字面意思就跟activity有關,大家都知道Android的界面都是由一個個activity顯示的)

啟動一個Activity

獲取到package和launch_activity

AndroidSDK中aapt工具,檢索命令結果,可以獲取到package和launch_activity

這里涉及到一個點,如何找到程序的入口,首先你要知道是哪個activity才能啟動;

啟動華為系統相機

打開音樂播放器

播放指定音樂:

先停止目標應用,再啟動

等待應用完成啟動

啟動網頁(android.intent.action.VIEW具體參考Android官網)

結束應用

input

模擬輸入,向獲得焦點的EditText控制項輸入內容

返回主界面

發送一個點擊操作的指令,參數是<x> <y>坐標

從左往右滑動屏幕, /從 100 100 經歷300毫秒滑動到 200 200

長按操作,在 100 100 位置長按 1000毫秒

閱讀全文

與adb命令詳解相關的資料

熱點內容
如何開啟app步數授權 瀏覽:18
linuxmaven路徑 瀏覽:135
python爬qq說說 瀏覽:414
linuxmap文件 瀏覽:67
轉轉app如何搜索快手主播 瀏覽:776
移動硬碟文件夾成0位元組 瀏覽:683
夢幻西遊解壓視頻大全 瀏覽:252
解壓小視頻手速 瀏覽:152
我的世界伺服器卡沒血如何修改 瀏覽:161
vba入門到精通pdf 瀏覽:113
tomcat怎麼一個伺服器部署 瀏覽:797
phphttps介面 瀏覽:895
javabyte數組int 瀏覽:810
公司網路共享的文件夾 瀏覽:1000
拍臉搭配衣服是什麼app 瀏覽:916
歐珀手機怎麼更改加密密碼 瀏覽:508
程序員那麼可愛陸漓氣人語錄 瀏覽:904
python中del刪除 瀏覽:461
華為雲耀伺服器和ecs區別 瀏覽:730
ruby語法編譯語言 瀏覽:571