1. 設(shè)備連接與排錯 (Device Connection)
Linux下無權(quán)限或無法識別設(shè)備
當(dāng)Linux系統(tǒng)無法識別Android設(shè)備,或出現(xiàn) no permissions 報錯時,通常是 udev 規(guī)則缺失導(dǎo)致。
解決方法:
- 獲取設(shè)備ID:
運行 lsusb 查看USB設(shè)備列表。找到你的設(shè)備(如含 "Google Inc." 或廠商名)。
記錄下 ID 后的兩組數(shù)字,例如 18d1:4ee7。
-
idVendor: 18d1 -
idProduct: 4ee7
- 配置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"
- 重啟服務(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