1. 程式人生 > >android除錯開發利器 ADB Debug

android除錯開發利器 ADB Debug

平時android開發工作,經常要用到裝置除錯,很多不是很熟悉ADB命令,其實ADB除錯很方便,而且功能很強大。

1.定義:Android 除錯橋 (adb) 是一個通用命令列工具,其允許您與模擬器例項或連線的 Android 裝置進行通訊。

該工具作為一個客戶端-伺服器程式,包括三個元件:

客戶端:計算機上執行。傳送命令。發出 adb 命令從命令列終端呼叫客戶端。

後臺程式:裝置上執行命令。後臺程式在每個模擬器或裝置例項上作為後臺程序執行。

伺服器計算機上作為後臺程序運,行管理客戶端和後臺程式之間的通訊。

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

2.連線原理:

1.adb客戶端啟動時,先檢測adb伺服器程序,未發現就重新啟動。如已啟動,繫結本地5307埠,監聽該埠通訊。

2.伺服器掃描5555到5558之間奇數埠,查詢裝置(真機或者模擬器)。伺服器管理與模擬器/裝置例項的連

接,並處理來自多個 adb 客戶端的命令。這裡真機或者模擬器會被分配一對埠,偶數號用於與控制檯連線,

奇數號用於與adb連線。

3.使用前提

adb 使用本質就是通過pc終端命令列控制android裝置,要求裝置本身必須開啟開發者模式(USB debugging,位於 Developer options 下)。在執行 Android 4.2 及更高版本的裝置上,Developer options 螢幕預設情況下處於隱藏狀態。如需將其顯示出來,請轉到 Settings > About phone 並點按 Build number 七次。返回上一螢幕,在底部可以找到 Developer options。這一點很多新手可能不知道。


4.裝置連線方式:

1.普通usb連線

2.wlan連線,這裡的設定有點複雜,且實測不穩定。能翻牆童鞋推薦直接參考官網介紹。

5. 主要命令

5.1查詢裝置

adb devices
例如
adb devices
List of devices attached
emulator-5554  device
emulator-5556  device
emulator-5558  device
5.2將命令傳送至特定裝置

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

adb -s emulator-5556 install helloWorld.apk

5.3安裝應用

install 命令。使用此命令,必須指定您要安裝的 APK 檔案的路徑:

adb install path_to_apk

使用 Android Studio,無需直接使用 adb(或 aapt)在模擬器/裝置上安裝應用。由 Android Studio 處理應用的打包和安裝。

5.4設定埠轉發

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

adb forward tcp:6100 tcp:7100

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

adb forward tcp:6100 local:logd 

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

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

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

adb pull remote local

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

adb push local remote

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

adb push foo.txt /sdcard/foo.txt

5.6 停止 adb 伺服器

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

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

5.7 adb 命令格式

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

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

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

5.8呼叫 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

5.9 呼叫軟體包管理器 (pm)

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

pm command

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

adb shell pm uninstall com.example.MyApp

5.10進行螢幕截圖

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

screencap filename

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

$ adb shell screencap /sdcard/screen.png

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

$ adb shell
[email protected] $ screencap /sdcard/screen.png
[email protected] $ exit
$ adb pull /sdcard/screen.png

5.11錄製視訊

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
[email protected] $ screenrecord --verbose /sdcard/demo.mp4
(press Control+ C to stop)
[email protected] $ exit
$ adb pull /sdcard/demo.mp4

5.12讀取應用的 ART 配置檔案

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

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

$ adb shell cmd package dump-profiles package

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

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

5.13其他 shell 命令

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

adb shell ls /system/bin

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

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

表 5. 其他一些 adb shell 命令

Shell 命令 說明 註釋
dumpsys 將系統資料轉儲到螢幕。
dumpstate 將狀態轉儲到檔案。
logcat [option]... [filter-spec]... 啟用系統和應用日誌記錄,並將輸出傳輸到螢幕。
dmesg 將核心除錯訊息輸出到螢幕。
start 啟動(重啟)模擬器/裝置例項。
stop 停止執行模擬器/裝置例項。

相關推薦

android除錯開發利器 ADB Debug

平時android開發工作,經常要用到裝置除錯,很多不是很熟悉ADB命令,其實ADB除錯很方便,而且功能很強大。 1.定義:Android 除錯橋 (adb) 是一個通用命令列工具,其允許您與模擬器例項或連線的 Android 裝置進行通訊。 該工具作為一個客戶端-伺服

Android Studio 開發利器【經常使用插件】

媽媽 ctrl+alt 快捷鍵 發現 fill sta andro fonts wid 1.ADB Idea ADB操作快捷菜單。高速清除數據,重新啟動應用,卸載應用等 快捷鍵: Windows: Ctrl+Alt+Shift+A

[Android除錯基礎五]adb命令—檔案複製與許可權修改

Debug中需要替換一些system下的檔案,通常system為read only,因此需要先修改操作許可權為可讀寫,進入root後,su獲得許可權,在敲入命令:mount -o remount,rw / (mount -ro remount,rw /system),將目錄

Android核心開發 adb遠端除錯核心模組

PS:關於核心模組如何編寫編譯,有空再補上 1、連線遠端Android裝置 D:\test>adb.exe connect 192.168.1.3 * daemon not running. starting it now on port 5037 * * dae

Android 軟體開發之如何使用Eclipse Debug除錯程式詳解

Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了) Ctrl+D: 刪除當前行  Ctrl+Alt+↓ 複製當前行到下一行(複製增加) Ctrl+Alt+↑ 複製當前行到上一行(複製增加) Alt+↓ 當前行和下面一行互動位置(特別實用,可以省去先剪下,再貼上了) Alt+↑ 當前行和上面一行互動位置(同

android NDK開發中,用Cygwin調試本地代碼時報錯“Another debug session running,Use --force to kill it”原因及解決的方法

能夠 att cati kill 時報 andro 使用 deb gdb調試 在使用ndk-gdb調試的時候。運行$NDK/ndk-gdb --verbose報錯“Another debug session running,Use --force to kil

使用Android Studo開發NDK之Gradle的配置(能debug C代碼)

lose service ng- services lba new import dev android 配置: 用的版本號是AS1.5(也能夠嘗試更高版本號)。 Gradle地址是distributionUrl=https\://services.gradle.org

Android UI開發神兵利器之Icon

mod ng- 介紹 water rac icons mark .com des 好的設計離不開Icon話不多。介紹2個國外的站點,一個用來找Icon,一個用來搞頁面設計http://dryicons.com/free-icons/http://www.webdesig

Android開發利器之Data Binding Compiler V2 —— 搭建Android MVVM完全體的基礎

原創宣告: 該文章為原創文章,未經博主同意嚴禁轉載。 前言: Android常用的架構有:MVC、MVP、MVVM,而MVVM是唯一一個官方提供支援元件的架構,我們可以通過Android lifecycle系列元件、DataBinding或者通過組合兩者的形式來打造一個強大的MVVM架構。而D

android平臺開發debug方法總結

一. 獲取Trace 呼叫棧資訊(Trace)是分析異常經常使用的,這裡簡單劃分兩類情況: 當前執行緒Trace: 當前執行流所線上程的呼叫棧資訊; 目標程序Trace:可獲取目標程序的呼叫棧,用於動態除錯; 1.1 當前執行緒Trace 1) Java層

解決Mac上Android開發adb連線不到手機問題

1. 插入手機開啟 Terminal,輸入 system_profiler  SPUSBDataType 2. 在顯示結果中找  Vendor ID: USB 3.0 Hi-Speed Bus: Host Controller Loca

Android 除錯adb用法詳解

參考連結:https://developer.android.com/studio/command-line/adb.html Android 除錯橋 (adb) 是一個通用命令列工具,其允許您與模擬器例項或連線的 Android 裝置進行通訊。它可為各種裝置操作提供便利,如安裝和除錯應用,並提供對 U

Android開發——常用ADB命令的使用

ADB全稱Android Debug Bridge, 是android sdk裡的一個工具, 位於 SDK/platform-tools/ 目錄下,其原始碼位於/system/core/adb 目錄下。 ADB採用C/S架構,包括以下三個部分: (1)客戶端

如何使用Android Studio開發/除錯Android自帶系統應用

其實在AndroidStudio裡配置與在Eclipse裡面配置基本上相差不多 這裡先轉來別人在Eclipse配置時的原文: [http://blog.csdn.net/xixinyan/article/details/6942074] 在Eclipse+ADT中開發An

Android裝置通過區域網ADB進行除錯

有些時候一些Android並沒有提供USB除錯,這個時候我們可以嘗試使用區域網ADB進行除錯。不過這種方法也需要裝置支援,裝置需要內建ADBD服務,並且開啟了這項服務。如果服務未開啟我們需要通過以下命令

Android高效開發編譯除錯神器_Jrebel 最新啟用方法以及 freeline(快到飛起~秒殺InstantRun)

Google官方的instantRun目前有很多問題,比如比不支援分包,或者只能熱修補佈局改變等,之前一直用高效開發除錯神器 JRebel;用過都知道一用就根本停不下來,但後來更新版本修復了此外掛漏洞,不付費情況下比較難破解,所以只好退而求其次用類似的阿里螞螞蟻旗下外掛f

Android環境搭建及開發利器

 * [new branch]      tradefed   -> origin/tradefed  * [new branch]      tradedef   -> origin/tradedef  * [new branch]      tools_r20  -> origin/to

Android Studio 開發時 App機器人位置(select run/debug Configuration)位置出現紅叉導致程式不能執行的解決方法

相信很多Android開發者剛從Eclipse更換為Andriod Studio時,都會被Studio各種無腦問題虐過。   我也是如此。 eg:1、建立專案 Gradle 總是報錯,專案不能執行 2、就是標題說的,App小機器人的位置出現紅叉,但是程式碼沒有任何錯,就是不

Android Studio免Root無線真機除錯無需 Wifi ADB

具體參考 參考連結 條件:同一WIFI下 三條命令: 1. adb devices 2. adb tcpip [port] 比如 adb tcpip 8848 3. adb connect [ip]:[port] 比如 adb connect 192.

Android Studio開發時遇見adb.exe已結束工作

1、CMD命令視窗輸入:adb nodaemon server 。然後就會提示你哪個埠被佔用了。 2、輸入netstat -ano | findstr "5037" 。然後會彈出提示告訴你哪些程序佔用了該埠,記住非0地址的後面的數字 3、開啟工作管理員,點選“程序“,“檢視