Android ADB

SoldierJazz2019發表於2017-07-03

Android 除錯橋

Android 除錯橋 (adb) 是一個通用命令列工具,其允許您與模擬器例項或連線的 Android 裝置進行通訊。它可為各種裝置操作提供便利,如安裝和除錯應用,並提供對 Unix shell(可用來在模擬器或連線的裝置上執行各種命令)的訪問。該工具作為一個客戶端-伺服器程式,包括三個元件:

  • 客戶端,該元件傳送命令。客戶端在開發計算機上執行。您可以通過發出 adb 命令從命令列終端呼叫客戶端。
  • 後臺程式,該元件在裝置上執行命令。後臺程式在每個模擬器或裝置例項上作為後臺程式執行。
  • 伺服器,該元件管理客戶端和後臺程式之間的通訊。伺服器在開發計算機上作為後臺程式執行。

您可以在 android_sdk/platform-tools/ 中找到 adb 工具。

adb 的工作方式


啟動一個 adb 客戶端時,此客戶端首先檢查是否有已執行的 adb 伺服器程式。如果沒有,它將啟動伺服器程式。當伺服器啟動時,它與本地 TCP 埠 5037 繫結,並偵聽從 adb 客戶端傳送的命令—所有 adb 客戶端均使用埠 5037 與 adb 伺服器通訊。

然後,伺服器設定與所有執行的模擬器/裝置例項的連線。它通過掃描 5555 到 5585 之間(模擬器/裝置使用的範圍)的奇數號埠查詢模擬器/裝置例項。伺服器一旦發現 adb 後臺程式,它將設定與該埠的連線。請注意,每個模擬器/裝置例項將獲取一對按順序排列的埠 — 用於控制檯連線的偶數號埠和用於 adb 連線的奇數號埠。例如:

模擬器 1,控制檯:5554
模擬器 1,adb:5555
模擬器 2,控制檯:5556
模擬器 2,adb:5557
以此類推...

如上所示,在埠 5555 與 adb 連線的模擬器例項與偵聽埠 5554 的控制檯的例項相同。

當伺服器已設定與所有模擬器例項的連線後,您可以使用 adb 命令訪問這些例項。由於伺服器管理與模擬器/裝置例項的連線,並處理來自多個 adb 客戶端的命令,因此,您可以從任意客戶端(或從某個指令碼)控制任意模擬器/裝置例項。

在您的裝置上啟用 adb 除錯


要在通過 USB 連線的裝置上使用 adb,您必須在裝置系統設定中啟用 USB debugging(位於 Developer options 下)。

在執行 Android 4.2 及更高版本的裝置上,Developer options 螢幕預設情況下處於隱藏狀態。如需將其顯示出來,請轉到 Settings > About phone 並點按 Build number 七次。返回上一螢幕,在底部可以找到 Developer options

在某些裝置上,Developer options 螢幕所在的位置或命名方式可能有所不同。

現在,您可以將裝置與 USB 連線。可以從 android_sdk/platform-tools/ 目錄執行 adb devices 來驗證裝置是否連線。如果已連線,您將看到裝置名稱以“裝置”形式列示。

:當您連線執行 Android 4.2.2 或更高版本的裝置時,系統將顯示一個對話方塊,詢問您是否接受允許在這臺計算機上除錯的 RSA 金鑰。這種安全機制可以保護使用者裝置,因為它可以確保只有在您能夠解鎖裝置並確認對話方塊的情況下才能執行 USB 除錯和其他 ADB 命令。

如需瞭解有關通過 USB 連線到裝置的詳細資訊,請參閱在硬體裝置上執行應用

通過 WLAN 連線到裝置


一般情況下,通過 USB 使用 adb。不過,也可以按照下面的說明通過 WLAN 使用它。

  1. 將 Android 裝置和 adb 主計算機連線到這兩者都可以訪問的常用 WLAN 網路。請注意,並非所有訪問點均適用;您可能需要使用已正確配置防火牆的訪問點以支援 adb 的訪問點。

    注:如果您嘗試連線到 Android Wear 裝置,則通過關閉與其連線的手機的藍芽強制將它連線到 WLAN。

  2. 使用 USB 電纜將裝置連線到主計算機。
  3. 設定目標裝置以偵聽埠 5555 上的 TCP/IP 連線。
    $ adb tcpip 5555
    
  4. 從目標裝置斷開 USB 電纜連線。
  5. 查詢 Android 裝置的 IP 地址。例如,在 Nexus 裝置上,您可以通過訪問 Settings > About tablet(或 About phone) > Status > IP address 查詢 IP 地址。或者,在 Android Wear 裝置上,您可以通過訪問 Settings > Wi-Fi Settings > Advanced > IP address 查詢 IP 地址。
  6. 連線至裝置,通過 IP 地址識別此裝置。
    $ adb connect device_ip_address
    
  7. 請確認您的主計算機已連線至目標裝置:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

現在,您可以開始操作了!

如果 adb 連線丟失:

  1. 請確保您的主機仍與您的 Android 裝置連線到同一個 WLAN 網路。
  2. 通過再次執行 adb connect 步驟重新連線。
  3. 如果無法連線,則重置 adb 主機:
    adb kill-server
    

    然後,從頭開始操作。

查詢裝置


在發出 adb 命令之前,知道哪些模擬器/裝置例項已連線到 adb 伺服器會很有幫助。您可以使用 devices 命令生成已連線的模擬器/裝置的列表:

adb devices

在響應時,adb 針對每個例項輸出此狀態資訊:

  • 序列號 — 一個由 adb 建立的字串,用於通過其控制檯埠號唯一標識模擬器/裝置例項。序列號的格式為 type-console-port。下面是一個序列號示例:emulator-5554
  • 狀態 — 例項的連線狀態可為下列狀態之一:
    • offline — 例項未連線到 adb 或不響應。
    • device — 例項現在已連線到 adb 伺服器。請注意,此狀態並不表示 Android 系統已完全啟動且可以執行,因為在此例項連線到 adb 時系統仍在啟動。不過,在啟動後,這將是模擬器/裝置例項的正常執行狀態。
    • no device — 未連線模擬器/裝置。

輸出的格式類似如下:

List of devices attached
serial_number state

以下示例向您展示了 devices 命令及其輸出:

adb devices
List of devices attached
emulator-5554  device
emulator-5556  device
emulator-5558  device

將命令傳送至特定裝置


如果多個模擬器/裝置例項正在執行,在發出 adb 命令時您必須指定一個目標例項。為此,請在命令中使用 -s 選項。以下是 -s 選項的用法:

adb -s serial_number command 

如上所示,您使用由 adb 分配的序列號為命令指定目標例項。您可使用 devices 命令獲取正在執行的模擬器/裝置例項的序列號。例如:

adb -s emulator-5556 install helloWorld.apk

注意,如果在多個裝置可用時您未指定目標模擬器/裝置例項就發出命令,那麼 adb 將生成一個錯誤。

如果您有多個裝置可用(硬體或模擬裝置),但只有一個裝置是模擬器,則使用 -e 選項將命令傳送至該模擬器。同樣,如果有多個裝置,但只連線了一個硬體裝置,則使用 -d 選項將命令傳送至該硬體裝置。

安裝應用


您可以使用 adb 從開發計算機複製應用,並將其安裝到模擬器/裝置例項上。為此,請使用 install 命令。使用此命令,您必須指定您要安裝的 APK 檔案的路徑:

adb install path_to_apk

如需有關如何建立可在模擬器/裝置例項上安裝的 APK 檔案的詳細資訊,請參閱構建和執行您的應用

請注意,如果使用 Android Studio,則無需直接使用 adb(或 aapt)在模擬器/裝置上安裝您的應用。而是由 Android Studio 為您處理應用的打包和安裝。

設定埠轉發


您可以使用 forward 命令設定任意埠轉發 — 將對特定主機埠的請求轉發到模擬器/裝置例項上的其他埠。下面向您介紹如何設定主機埠 6100 到模擬器/裝置埠 7100 的轉發:

adb forward tcp:6100 tcp:7100

您也可以使用 adb 設定傳輸到指定的抽象 UNIX 網域套接字的轉發,如下所示:

adb forward tcp:6100 local:logd 

將檔案複製到裝置/從裝置複製檔案


您可以使用 adb 命令 pull 和 push 將檔案複製到模擬器/裝置例項或從其中複製檔案。與 install 命令不同(其僅將 APK 檔案複製到特定位置),pull和 push 命令允許您將任意目錄和檔案複製到模擬器/裝置例項中的任意位置。

模擬器或裝置複製檔案或目錄(及其子目錄),請使用

adb pull remote local

要將檔案檔案或目錄(及其子目錄)複製模擬器或裝置,請使用

adb push local remote

在上述命令中,local 和 remote 指的是開發計算機(本地)和模擬器/裝置例項(遠端)上目標檔案/目錄的路徑。例如:

adb push foo.txt /sdcard/foo.txt

停止 adb 伺服器


在某些情況下,您可能需要終止 adb 伺服器程式,然後重啟它以解決問題(例如,如果 adb 不響應命令)。

要停止 adb 伺服器,請使用 adb kill-server 命令。然後,您可以通過發出任意其他 adb 命令重啟伺服器。

adb 命令參考


您可以在開發計算機上從命令列發出 adb 命令,或通過指令碼發出。用法如下:

adb [-d|-e|-s serial_number] command

如果只有一個模擬器在執行或只連線了一個裝置,則預設情況下將 adb 命令傳送至該裝置。如果有多個模擬器在執行和/或連線了多個裝置,您需要使用 -d-e 或 -s 選項指定應向其傳送命令的目標裝置。

下表列出了所有支援的 adb 命令並解釋其含義和用法。

表 1. 可用的 adb 命令

類別 命令 說明 註釋
目標裝置 -d 將 adb 命令傳送至唯一連線的 USB 裝置。 如果連線了多個 USB 裝置,將返回錯誤。
-e 將 adb 命令傳送至唯一執行的模擬器例項。 如果有多個模擬器例項在執行,將返回錯誤。
-s serial_number 將 adb 命令傳送至以其 adb 分配的序列號命名的特定模擬器/裝置例項(如“emulator-5556”)。 請參閱將命令傳送至特定模擬器/裝置例項
常規 devices 輸出所有連線的模擬器/裝置例項的列表。 如需瞭解詳細資訊,請參閱查詢模擬器/裝置例項
help 輸出支援的 adb 命令的列表。  
version 輸出 adb 版本號。  
除錯 logcat [option] [filter-specs] 將日誌資料輸出到螢幕。  
bugreport 將 dumpsysdumpstate 和 logcat資料輸出到螢幕,以用於報告錯誤。  
jdwp 輸出給定裝置上可用的 JDWP 程式的列表。 您可以使用 forward jdwp:pid 埠轉發規範以連線到特定的 JDWP 程式。例如:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
資料 install path_to_apk 將 Android 應用(使用 APK 檔案的完整路徑表示)推送到模擬器/裝置。  
pull remote local 從模擬器/裝置例項將指定檔案複製到開發計算機。  
push local remote 從開發計算機將指定檔案複製到模擬器/裝置例項。  
埠和網路連線 forward local remote 將來自指定本地埠的套接字連線轉發到模擬器/裝置例項上的指定遠端埠。 埠規範可使用以下架構:
  • tcp:port_number
  • local:unix_domain_socket_name
  • dev:character_device_name
  • jdwp:pid
ppp tty [parm]... 通過 USB 執行 PPP。
  • tty — 用於 PPP 流的 tty。例如,dev:/dev/omap_csmi_ttyl
  • [parm]... — 零個或多個 PPP/PPPD 選項,如 defaultroutelocalnotty等。

請注意,不得自動啟動 PPP 連線。

 
指令碼 get-serialno 輸出 adb 例項序列號字串。 如需瞭解詳細資訊,請參閱查詢模擬器/裝置例項
get-state 輸出模擬器/裝置例項的 adb 狀態。
wait-for-device 阻止執行,直至裝置處於線上狀態,即直至此例項狀態為 device 您可以將此命令附加到其他 adb 命令,在此情況下,adb 在發出其他命令前將處於等待狀態,直至模擬器/裝置例項已連線。下面是一個示例:
adb wait-for-device shell getprop
請注意,此命令不會使 adb 等待整個系統已完全啟動。因此,您不應將其追加到需要系統完全啟動的其他命令。例如,install 需要使用 Android 軟體包管理器,其僅在系統完全啟動後才可用。如下命令
adb wait-for-device install app.apk
在模擬器或裝置例項連線到 adb 伺服器時立即發出 install 命令,但 Android 系統還未完全啟動,因此,它將引發錯誤。
伺服器 start-server 檢查 adb 伺服器程式是否在執行,如果未執行則啟動它。  
kill-server 終止 adb 伺服器程式。  
Shell shell 在目標模擬器/裝置例項中啟動遠端 shell。 如需瞭解詳細資訊,請參閱發出 shell 命令
shell shell_command 在目標模擬器/裝置例項中發出 shell 命令,然後退出遠端 shell。

發出 shell 命令


您可以使用 shell 命令通過 adb 發出裝置命令,可以進入或不進入模擬器/裝置例項上的 adb 遠端 shell。要在不進入遠端 shell 的情況下發出一個命令,請使用如下 shell 命令:

adb [-d|-e|-s serial_number] shell shell_command

或者,使用如下命令進入模擬器/裝置例項上的遠端 shell:

adb [-d|-e|-s serial_number] shell

當您準備退出遠端 shell 時,按 Control + D 或輸入 exit

shell 命令二進位制檔案儲存在模擬器或裝置的檔案系統中,其路徑為 /system/bin/

呼叫 Activity Manager (am)

在 adb shell 中,您可以使用 Activity Manager (am) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止程式、廣播 intent、修改裝置螢幕屬性及其他操作。在 shell 中,此語法為:

am command

您也可以直接從 adb 發出 Activity Manager 命令,無需進入遠端 shell。例如:

adb shell am start -a android.intent.action.VIEW

表 2. 可用的 Activity Manager 命令

命令 說明
start [optionsintent 啟動 intent 指定的 Activity

請參閱 intent 引數的規範

選項包括:

  • -D:啟用除錯。
  • -W:等待啟動完成。
  • --start-profiler file:啟動分析器並將結果傳送到 file
  • -P file:類似於 --start-profiler,但當應用進入空閒狀態時分析停止。
  • -R count:重複 Activity 啟動 count 次數。在每次重複前,將完成頂部 Activity。
  • -S:啟動 Activity 前強行停止目標應用。
  • --opengl-trace:啟用 OpenGL 函式的跟蹤。
  • --user user_id | current:指定要作為哪個使用者執行;如果未指定,則作為當前使用者執行。
startservice [optionsintent 啟動 intent 指定的 Service

請參閱 intent 引數的規範

選項包括:

  • --user user_id | current:指定要作為哪個使用者執行;如果未指定,則作為當前使用者執行。
force-stop package 強行停止與 package(應用的包名稱)關聯的所有應用。
kill [optionspackage 終止與 package(應用的包名稱)關聯的所有程式。此命令僅終止可安全終止且不會影響使用者體驗的程式。

選項包括:

  • --user user_id | all | current:指定將終止其程式的使用者;如果未指定,則終止所有使用者的程式。
kill-all 終止所有後臺程式。
broadcast [optionsintent 發出廣播 intent。

請參閱 intent 引數的規範

選項包括:

  • [--user user_id | all | current]:指定要傳送到的使用者;如果未指定,則傳送到所有使用者。
instrument [optionscomponent 使用 Instrumentation 例項啟動監控。通常,目標 component 是表單 test_package/runner_class

選項包括:

  • -r:輸出原始結果(否則對 report_key_streamresult 進行解碼)。與 [-e perf true] 結合使用以生成效能測量的原始輸出。
  • -e name value:將引數 name 設為 value。對於測試執行器,通用表單為 -e testrunner_flagvalue[,value...]
  • -p file:將分析資料寫入 file
  • -w:先等待儀器完成,然後再返回。測試執行器需要使用此選項。
  • --no-window-animation:執行時關閉視窗動畫。
  • --user user_id | current:指定儀器在哪個使用者中執行;如果未指定,則在當前使用者中執行。
profile start process file 啟動 process 的分析器,將結果寫入 file
profile stop process 停止 process 的分析器。
dumpheap [optionsprocess file 轉儲 process 的堆,寫入 file

選項包括:

  • --user [user_id|current]:提供程式名稱時,指定要轉儲的程式使用者;如果未指定,則使用當前使用者。
  • -n:轉儲原生堆,而非託管堆。
set-debug-app [optionspackage 將應用 package 設為除錯。

選項包括:

  • -w:應用啟動時等待除錯程式。
  • --persistent:保留此值。
clear-debug-app 使用 set-debug-app 清除以前針對除錯用途設定的軟體包。
monitor [options] 啟動對崩潰或 ANR 的監控。

選項包括:

  • --gdb:在崩潰/ANR 時在給定埠上啟動 gdbserv。
screen-compat {on|off} package 控制 package 的螢幕相容性模式。
display-size [reset|widthxheight] 替換模擬器/裝置顯示尺寸。此命令對於在不同尺寸的螢幕上測試您的應用非常有用,它支援使用大屏裝置模仿小螢幕解析度(反之亦然)。

示例:
am display-size 1280x800

display-density dpi 替換模擬器/裝置顯示密度。此命令對於在不同密度的螢幕上測試您的應用非常有用,它支援使用低密度螢幕在高密度環境環境上進行測試(反之亦然)。

示例:
am display-density 480

to-uri intent 將給定的 intent 規範以 URI 的形式輸出。

請參閱 intent 引數的規範

to-intent-uri intent 將給定的 intent 規範以 intent:URI 的形式輸出。

請參閱 intent 引數的規範

intent 引數的規範

呼叫軟體包管理器 (pm)

在 adb shell 中,您可以使用軟體包管理器 (pm) 工具發出命令,以對裝置上安裝的應用軟體包進行操作和查詢。在 shell 中,此語法為:

pm command

您也可以直接從 adb 發出軟體包管理器命令,無需進入遠端 shell。例如:

adb shell pm uninstall com.example.MyApp

表 3. 可用的軟體包管理器命令。

命令 說明
list packages [optionsfilter 輸出所有軟體包,或者,僅輸出包名稱包含 filter 中的文字的軟體包。

選項:

  • -f:檢視它們的關聯檔案。
  • -d:進行過濾以僅顯示已停用的軟體包。
  • -e:進行過濾以僅顯示已啟用的軟體包。
  • -s:進行過濾以僅顯示系統軟體包。
  • -3:進行過濾以僅顯示第三方軟體包。
  • -i:檢視軟體包的安裝程式。
  • -u:也包括解除安裝的軟體包。
  • --user user_id:要查詢的使用者空間。
list permission-groups 輸出所有已知的許可權組。
list permissions [optionsgroup 輸出所有已知許可權,或者,僅輸出 group 中的許可權。

選項:

  • -g:按組加以組織。
  • -f:輸出所有資訊。
  • -s:簡短摘要。
  • -d:僅列出危險許可權。
  • -u:僅列出使用者將看到的許可權。
list instrumentation [options] 列出所有測試軟體包。

選項:

  • -f:列出用於測試軟體包的 APK 檔案。
  • target_package:列出僅用於此應用的測試軟體包。
list features 輸出系統的所有功能。
list libraries 輸出當前裝置支援的所有庫。
list users 輸出系統上的所有使用者。
path package 輸出給定 package 的 APK 的路徑。
install [optionspath 將軟體包(通過 path 指定)安裝到系統。

選項:

  • -l:安裝具有轉發鎖定功能的軟體包。
  • -r:重新安裝現有應用,保留其資料。
  • -t:允許安裝測試 APK。
  • -i installer_package_name:指定安裝程式軟體包名稱。
  • -s:在共享的大容量儲存(如 sdcard)上安裝軟體包。
  • -f:在內部系統記憶體上安裝軟體包。
  • -d:允許版本程式碼降級。
  • -g:授予應用清單中列出的所有許可權。
uninstall [optionspackage 從系統中移除軟體包。

選項:

  • -k:移除軟體包後保留資料和快取目錄。
clear package 刪除與軟體包關聯的所有資料。
enable package_or_component 啟用給定軟體包或元件(作為“package/class”寫入)。
disable package_or_component 停用給定軟體包或元件(作為“package/class”寫入)。
disable-user [optionspackage_or_component

選項:

  • --user user_id:要停用的使用者。
grant package_name permission 嚮應用授予許可權。在執行 Android 6.0(API 級別 23)及更高版本的裝置上,可以是應用清單中宣告的任何許可權。在執行 Android 5.1(API 級別 22)和更低版本的裝置上,必須是應用定義的可選許可權。
revoke package_name permission 從應用中撤銷許可權。在執行 Android 6.0(API 級別 23)及更高版本的裝置上,可以是應用清單中宣告的任何許可權。在執行 Android 5.1(API 級別 22)和更低版本的裝置上,必須是應用定義的可選許可權。
set-install-location location 更改預設安裝位置。位置值:
  • 0:自動—讓系統決定最佳位置。
  • 1:內部—安裝在內部裝置儲存上。
  • 2:外部—安裝在外部介質上。

:此命令僅用於除錯目的;使用此命令會導致應用中斷和其他意外行為。

get-install-location 返回當前安裝位置。返回值:
  • 0 [auto]:讓系統決定最佳位置。
  • 1 [internal]:安裝在內部裝置儲存上
  • 2 [external]:安裝在外部介質上
set-permission-enforced permission[true|false] 指定是否應強制執行給定的許可權。
trim-caches desired_free_space 減少快取檔案以達到給定的可用空間。
create-user user_name 使用給定的 user_name 建立新使用者,輸出新使用者的識別符號。
remove-user user_id 移除具有給定的 user_id 的使用者,刪除與該使用者關聯的所有資料。
get-max-users 輸出裝置支援的最大使用者數。

進行螢幕截圖

screencap 命令是一個用於對裝置螢幕進行螢幕截圖的 shell 實用程式。在 shell 中,此語法為:

screencap filename

要從命令列使用 screencap,請輸入以下命令:

$ adb shell screencap /sdcard/screen.png

以下螢幕截圖會話示例向您展示使用 adb shell 捕獲螢幕截圖,並使用 pull 命令從裝置下載此檔案:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/screen.png

錄製視訊

screenrecord 命令是一個用於錄製裝置(執行 Android 4.4(API 級別 19)及更高版本)螢幕的 shell 實用程式。此實用程式將螢幕 Activity 錄製到 MPEG-4 檔案。

:音訊不與視訊檔案一起錄製。

開發者可以使用此檔案建立宣傳視訊或培訓視訊。在 shell 中,此語法為:

screenrecord [options] filename

要從命令列使用 screenrecord,請輸入以下命令:

$ adb shell screenrecord /sdcard/demo.mp4

按 Control + C 停止螢幕錄製,否則,到三分鐘或 --time-limit 設定的時間限制時,錄製將自動停止。

要開始錄製裝置螢幕,請執行 screenrecord 命令以錄製視訊。然後,執行 pull 命令從裝置將此視訊下載到主計算機。下面是一個錄製會話示例:

$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4
(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4

screenrecord 實用程式可以任何支援的解析度和所需的位元率進行錄製,同時保留裝置螢幕的縱橫比。預設情況下,此實用程式以原生顯示解析度和螢幕方向進行錄製,最大時長為三分鐘。

下面是 screenrecord 實用程式的一些已知限制,您在使用時應注意:

  • 某些裝置可能無法以它們的原生顯示解析度進行錄製。如果在錄製螢幕時出現問題,請嘗試使用較低的螢幕解析度。
  • 不支援在錄製時旋轉螢幕。如果在錄製期間螢幕旋轉了,則部分螢幕的錄製將被切斷。

表 4. screenrecord 選項

選項 說明
--help 顯示命令語法和選項
--size widthxheight 設定視訊大小:1280x720。預設值是裝置的原生顯示解析度(如果支援),如果不支援,則使用 1280x720。為實現最佳結果,請使用裝置的 Advanced Video Coding (AVC) 編碼器支援的大小。
--bit-rate rate 設定視訊的視訊位元率(以兆位元每秒為單位)。預設值為 4Mbps。您可以增加位元率以提升視訊質量,但這麼做會導致影片檔案變得更大。以下示例將錄製位元率設為 6Mbps:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time 設定最大錄製時長(以秒為單位)。預設值和最大值均為 180(3 分鐘)。
--rotate 將輸出旋轉 90 度。此功能是實驗性的。
--verbose 顯示命令列螢幕上的日誌資訊。如果您不設定此選項,則執行時此實用程式不會顯示任何資訊。

讀取應用的 ART 配置檔案

從 Android 7.0(API 級別 24)開始,Android Runtime (ART) 會收集已安裝應用的執行配置檔案,其可用於優化應用效能。您可能想要檢查收集的配置檔案,以瞭解在應用啟動期間,系統決定頻繁執行哪些方法和使用哪些類。

要生成配置檔案資訊的文字表單,請使用以下命令:

$ adb shell cmd package dump-profiles package

要檢索生成的檔案,請使用:

$ adb pull /data/misc/profman/package.txt

其他 shell 命令

如需所有可用 shell 程式的列表,請使用以下命令:

adb shell ls /system/bin

大多數命令都提供幫助說明。

表 5 列出了一些比較常用的 adb shell 命令。

表 5. 其他一些 adb shell 命令

Shell 命令 說明 註釋
dumpsys 將系統資料轉儲到螢幕。 Dalvik Debug Monitor Server (DDMS) 工具提供了一個整合除錯環境,讓您用起來更方便。
dumpstate 將狀態轉儲到檔案。
logcat [option]... [filter-spec]... 啟用系統和應用日誌記錄,並將輸出傳輸到螢幕。
dmesg 將核心除錯訊息輸出到螢幕。
start 啟動(重啟)模擬器/裝置例項。  
stop 停止執行模擬器/裝置例項。  

相關文章