全部速查表Android 開發

adb

Android Platform Tools 34+

Android Debug Bridge CLI 命令快速參考:裝置探索、安裝/解除安裝、logcat、shell、push/pull、埠轉發、無線除錯——附常用參數與實作範例。

33 條命令

裝置

adb devices

列出所有已連接的裝置/模擬器及其序號與狀態(`device`、`unauthorized`、`offline`)。

-l 顯示詳細資訊(產品、型號、傳輸);-e 只列模擬器;-d 只列 USB 裝置

adb devices -l
adb connect <ip>:<port>

透過 Wi-Fi 或 TCP/IP 連線到裝置(預設埠 5555)。Android 11+ 需先用 `adb pair <ip>:<port>` 配對。

ip:port;--one-time 工作階段結束時中斷

adb pair 192.168.1.42:41235 && adb connect 192.168.1.42:5555
adb disconnect [<ip>:<port>]

中斷一個或所有無線裝置的連線。不帶參數會中斷所有連線。

adb disconnect 192.168.1.42:5555 && adb disconnect
adb -s <serial> <command>

當同時連接多台裝置時,指定目標裝置(把 `<serial>` 換成 `adb devices` 列出的值)。

adb -s emulator-5554 shell pm list packages

安裝/解除安裝

adb install <apk>

安裝 APK。`-r` 保留資料重新安裝;`-d` 允許 version-code 降版;`-t` 允許 test-only APK;`-g` 授予所有執行階段權限。

-r;-d;-t;-g;--abi <abi>;--user <id>

adb install -r -g app-release.apk
adb install-multi-package <apk1> <apk2>

原子地安裝分割 APK 套件——用於含多個 ABI/設定的 App Bundle。

adb install-multi-package base.apk split_config.arm64.apk
adb uninstall <package>

依套件名稱解除安裝。`-k` 保留資料與快取目錄。

-k 保留使用者資料

adb uninstall com.example.myapp

Logcat

adb logcat

串流裝置的日誌緩衝區。Tag/優先級過濾:`*:V`(verbose)、`*:E`(errors)。

-v threadtime;-d 傾印後離開;-s <tag>;-t <N>;--pid=<pid>;-f <file> 寫入檔案

adb logcat *:E
adb logcat -d

把當前緩衝區傾印到 stdout 後離開(非串流)。搭配 grep 用於一次性檢視。

-d -t 500 最後 500 行

adb logcat -d -t 200 | grep -i 'myapp'
adb logcat -s <tag>:<level>

只顯示指定 tag 在某個等級(V/D/I/W/E)的條目。多個 tag 以空白分隔。

MyTag:D MyTag2:E

adb logcat -s MyApp:V ReactNative:V

Shell

adb shell

進入裝置上的互動式 shell。大多數 Unix 工具可用;`/sdcard` 是公開儲存根目錄。

-t 配置 TTY(給互動式程式用)

adb shell
adb shell <command>

在裝置上執行單一指令並回傳輸出。主機與裝置參數混合時請小心引號。

adb shell pm list packages | grep com.example && adb shell dumpsys battery
adb shell pm list packages

列出已安裝套件。`-f` 顯示路徑,`-3` 只列使用者安裝的應用,`-d` 只列已停用的套件。

-f 路徑;-3 使用者應用;-d 已停用;-e 已啟用;-s 系統;<filter>

adb shell pm list packages -3 | head -30
adb shell am start -n <package>/<activity>

以 `package/activity` 限定名稱啟動 activity。使用 `am start -W` 等到啟動完成。

-a <action>;-d ;--es <key> <val> 字串 extra;-W 等候

adb shell am start -n com.example/.MainActivity
adb shell screencap -p /sdcard/screen.png

把裝置螢幕擷取為 PNG。搭配 `adb pull` 取回。

-p PNG(預設)

adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png .
adb shell input <source> <command>

注入輸入事件。常見:`tap x y`、`swipe x1 y1 x2 y2 [ms]`、`keyevent <code>`、`text "string"`。

tap;swipe;keyevent;text;roll;press

adb shell input tap 540 1200 && adb shell input keyevent 4

檔案傳輸

adb push <local> <remote>

把本地檔案/目錄複製到裝置。同步語意;保留二進位檔案。

--sync 只覆寫過期檔案;--copy-links 保留符號連結;-p 顯示進度

adb push app-debug.apk /sdcard/Download/ && adb push ./assets /sdcard/myapp/assets
adb pull <remote> <local>

把裝置檔案/目錄複製到主機。預設目的地為 `.`(當前目錄)。

-a 保留時間戳;-p 顯示進度

adb pull /sdcard/screen.png ./screenshots/latest.png

埠轉發

adb forward tcp:<host-port> tcp:<device-port>

把主機埠轉發到裝置埠——常用於對 Chrome 分頁開啟遠端除錯 socket。

--remove;--remove-all

adb forward tcp:9222 localabstract:chrome_devtools_remote
adb reverse tcp:<device-port> tcp:<host-port>

反向把裝置埠轉發到主機埠——當你的開發伺服器跑在 `localhost:3000` 而裝置需要存取它時很有用。

adb reverse tcp:3000 tcp:3000 && curl http://localhost:3000/api/health
adb forward --list

列出所有啟用中的埠轉發與反向轉發。可與 `adb forward --remove-all` 搭配重置。

adb forward --list && adb reverse --list

應用管理

adb shell pm clear <package>

清除特定套件的應用資料與快取——等同 `設定 → 應用程式 → 儲存空間 → 清除`。

adb shell pm clear com.example.myapp
adb shell pm grant <package> <permission>

授予執行階段權限(例如 `android.permission.CAMERA`),無需 UI 提示——測試環境常見。

adb shell pm grant com.example.myapp android.permission.READ_CONTACTS
adb shell am force-stop <package>

強制停止執行中的應用(其行程會被殺掉)。重新安裝前景應用時很有用。

adb shell am force-stop com.example.myapp && adb install -r app.apk

啟動/Recovery

adb reboot

重新啟動裝置。變體:`recovery`、`bootloader`、`fastboot`、`download`、`edl`。

recovery | bootloader | fastboot | download | edl

adb reboot bootloader && fastboot flashall
adb sideload <zip>

從 recovery 模式(通常透過 `adb reboot recovery` 進入)側載已簽署的 OTA/原廠映像 zip。

adb sideload ota-update.zip

除錯

adb shell run-as <package> <cmd>

以應用的 UID 執行指令——可除錯的 APK 才能讀取自己的私有資料目錄。

<package> cat ./databases/my.db > /sdcard/dump.db

adb shell run-as com.example.myapp ls databases
adb shell dumpsys <service>

傾印系統服務的狀態(`battery`、`window`、`activity`、`package`、`gfxinfo`、`netstats`)。

battery;activity;package;window;gfxinfo <pkg>;netstats

adb shell dumpsys gfxinfo com.example.myapp framestats

伺服器

adb start-server

明確啟動 adb 伺服器(通常任何指令都會自動啟動)。在 `kill-server` 後使用。

adb start-server
adb kill-server

停止 adb 伺服器並中斷所有裝置。adb 卡在 `offline` 狀態時很有用。

adb kill-server && adb start-server && adb devices

雜項

adb --version

印出 Platform Tools 版本。

adb --version
adb help

列出所有 adb 子指令與簡短說明。

adb help

無線

adb pair <ip>:<port>

透過 Wi-Fi 以開發者選項中顯示的 6 位數配對碼配對裝置。之後用 `adb connect` 連線真正的除錯埠。

<ip>:<port>

adb pair 192.168.1.42:41235

相關命令速查

關於 ADB

Android Debug Bridge(adb)是隨 Android SDK Platform Tools(自 2009 年起)發佈的命令列工具。它透過 USB、Wi-Fi 或 TCP/IP,把你的開發工作站與任何 Android 裝置或模擬器串接起來,並提供三個子元件:伺服器(在主機上執行,連接埠 5037)、守護行程(`adbd` 在裝置上執行)、與 `adb` CLI。目前的 Platform Tools 線為 34+(隨 Android 14 一起發佈)。`adb` 是安裝 APK、讀取 logcat、透過 JDWP 除錯應用、刷 ROM、撰寫 UI 測試腳本、以及 push/pull 檔案的基礎。無線除錯於 Android 11 加入(Android 13+ 加入 QR 配對流程)。常見的姊妹指令包括 `fastboot`(bootloader/recovery)與 `emulator`(基於 QEMU 的 AVD)。ADB 不會上傳應用程式的源碼——它只傳輸 APK 與裝置狀態。SDK Platform Tools 以 Apache 2.0 授權,可作為獨立 ZIP 或透過 SDK Manager 取得。

速查頁版本 1.0.0