Android ADB Shell 常用命令

1. 設(shè)備連接與排錯 (Device Connection)

Linux下無權(quán)限或無法識別設(shè)備

當(dāng)Linux系統(tǒng)無法識別Android設(shè)備,或出現(xiàn) no permissions 報錯時,通常是 udev 規(guī)則缺失導(dǎo)致。

解決方法:

  1. 獲取設(shè)備ID

運行 lsusb 查看USB設(shè)備列表。找到你的設(shè)備(如含 "Google Inc." 或廠商名)。
記錄下 ID 后的兩組數(shù)字,例如 18d1:4ee7。

  • idVendor: 18d1
  • idProduct: 4ee7
  1. 配置udev規(guī)則

創(chuàng)建或編輯規(guī)則文件:

sudo vim /etc/udev/rules.d/90-android.rules

添加以下內(nèi)容(替換為你的ID):

SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", ATTRS{idProduct}=="4ee7", MODE="0666", GROUP="plugdev", SYMLINK+="android", SYMLINK+="android_adb"
  1. 重啟服務(wù)與ADB
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger
adb kill-server
adb start-server

2. 應(yīng)用與包管理 (Package Management)

主要使用 pm (Package Manager) 命令。

查看已安裝應(yīng)用

  • 列出所有包
adb shell pm list packages
  • 按條件篩選
  • -f: 顯示包名及其對應(yīng)的APK路徑
  • -d: 僅顯示被禁用的包
  • -e: 僅顯示啟用的包
  • -s: 僅顯示系統(tǒng)包
  • -3: 僅顯示第三方安裝的包
  • -i: 顯示安裝來源(如 installer_package_name
  • grep 過濾: adb shell pm list packages | grep "keyword"

獲取應(yīng)用信息

  • 查看應(yīng)用APK路徑
adb shell pm path <package_name>

示例adb shell pm path com.android.settings

  • 查看應(yīng)用詳細(xì)信息 (dumpsys)
adb shell dumpsys package <package_name>

此命令會輸出極為詳細(xì)的應(yīng)用組件、權(quán)限、狀態(tài)等信息。

停止與清除

  • 強行停止應(yīng)用
adb shell am force-stop <package_name>
  • 清除應(yīng)用數(shù)據(jù) (類似重裝效果):
adb shell pm clear <package_name>

3. Activity 與 Service 管理 (Activity Manager)

主要使用 am (Activity Manager) 命令。

啟動 Activity

adb shell am start -n <package_name>/<activity_class_name> [options]
  • 攜帶參數(shù)啟動

  • --es <key> <string_value>: 傳遞 String 參數(shù)

  • --ei <key> <int_value>: 傳遞 Int 參數(shù)

  • --ez <key> <boolean_value>: 傳遞 Boolean 參數(shù)

示例

adb shell am start -n com.example.app/.MainActivity --es username "test"

發(fā)送廣播 (Broadcast)

adb shell am broadcast -a "<ACTION_NAME>" [extras]
  • 示例:模擬SIM卡狀態(tài)變化
adb shell am broadcast -a "android.intent.action.SIM_STATE_CHANGED" --es "ss" "LOADED"

查看當(dāng)前 Activity

快速確認(rèn)當(dāng)前顯示的界面所屬的 Activity。

adb shell dumpsys activity top | grep ACTIVITY

或者(Windows下若無grep):

adb shell dumpsys activity top

然后手動查找 ACTIVITY 關(guān)鍵字。

Service 操作

  • 查看運行中的 Service(添加到ServiceManager的):
adb shell service list
  • Dump Service 信息
adb shell dumpsys activity service <service_name>

4. 文件系統(tǒng)與搜索 (File System & Search)

Android Shell 支持大部分標(biāo)準(zhǔn) Linux 命令。

文本搜索 (grep)

  • 基本用法
grep -rn "search_term" <path>
  • -r: 遞歸查找子目錄

  • -n: 顯示行號

  • -i: 忽略大小寫

  • -l: 僅列出包含匹配內(nèi)容的文件名

  • -w: 全詞匹配(Word matching)

  • 實用場景

查找所有包含 "ERROR" 的日志文件:

find /sdcard/logs | xargs grep "ERROR"

文件查找 (find)

  • 按文件名查找
find <path> -name "<filename_pattern>"

示例find /system -name "*.so"

容量與結(jié)構(gòu)

  • 查看磁盤空間
df -h
  • 查看當(dāng)前目錄大小
du -sh .
  • 查看目錄樹結(jié)構(gòu)
tree -L 2  # 僅顯示2層深度

5. 日志與調(diào)試 (Logging & Debugging)

Logcat 高級用法

  • 保存日志到文件
adb logcat -v time > log.txt
  • 清除舊日志
adb logcat -c
  • 過濾特定字符串

  • Linux/Mac: adb logcat | grep "Error"

  • Windows: adb logcat | findstr "Error"

  • 包含全部緩沖區(qū)(包含 crash, radio, events 等):

adb logcat -b all

屬性系統(tǒng) (Properties)

  • 獲取屬性
adb shell getprop <key>

示例:獲取運營商信息 adb shell getprop ro.carrier

  • 設(shè)置屬性(通常需要root或特殊權(quán)限):
adb shell setprop <key> <value>

示例:允許覆蓋安裝系統(tǒng)App adb shell setprop debug.allow.persist.update true

進(jìn)程信息

  • 查看進(jìn)程
adb shell ps -ef | grep <app_name>
  • 查看進(jìn)程打開的文件 (lsof):
adb shell lsof -p <pid>

Window Manager (wm)

  • 開啟 ProtoLog (調(diào)試WMS/AMS)
adb shell wm logging enable-text WM_DEBUG_STATES

6. 屏幕操作 (Screen Operations)

屏幕截圖

  • 截圖并保存到電腦(一步到位):
adb exec-out screencap -p > screenshot.png
  • 傳統(tǒng)方式(先存手機再拉?。?/li>
adb shell screencap -p /sdcard/sc.png
adb pull /sdcard/sc.png

屏幕錄制

  • 錄制視頻
adb shell screenrecord /sdcard/demo.mp4
  • 限制時長(例如30秒)
adb shell screenrecord --time-limit 30 /sdcard/demo.mp4

注意:默認(rèn)最長錄制180秒。


7. 系統(tǒng)與工程模式 (Advanced & System)

解鎖 Bootloader

  • 進(jìn)入 Bootloader 模式
adb reboot bootloader
  • 解鎖命令(需在開發(fā)者選項開啟 OEM Unlock):
fastboot flashing unlock
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容