Android最常用命令-Adb

不同操作系統關鍵字:


版權聲明:本文為CSDN博主「熱愛學習的吉吉」的原創文章,
原文鏈接:https://blog.csdn.net/u010871962/article/details/78370069

操作系統 1 2
window finstr ipconfig
Linux grep ifconfig

adb 掛載及過濾


  • 獲得root權限后,獲得寫權限
    adb disable-verity 第一次 adb root

  • 掛載
    adb remount (重新掛載系統分區,使系統分區重新可寫,只針對system分區)。 adb shell mount -o remount, rw /[路徑] (重新掛載其他分區,使其他分區重新可寫)

  • 搜索
    adb shell cat path | grep(findstr) +字串 過濾字串路徑 adb shell getprop |grep(findstr) +字串 過濾字串prop屬性

  • 所有關于日期時間的
    adb shell getprop | grep date adb shell settings get global auto_timedd

  • 過濾設備進程
    adb shell ps | grep telephony

  • 殺掉對應的進程
    adb shell kill 2392

產品信息


  • 查看當前產品的名稱
    adb shell getprop ro.product.name

  • 查看當前系統版本
    adb shell getprop ro.build.version.release

  • 查看當前產品cpu架構
    adb shell getprop ro.product.cpu.abi 查看當前產品cpu架構

  • MAC地址
    adb shell cat /sys/class/net/wlano/address IMEI地址:adb shell settings get secure android_id

  • 設備得IMEI
    adb shell service call iphonesubinfo 1

  • CPU信息
    adb shell cat /proc/cpuinfo

  • CPU結構幾核
    adb shell cat /proc/cpuinfo|grep architecture

  • 更多硬件與系統屬性
    adb shell cat /system/build.prop

  • 查看手機RAM
    adb shell cat /proc/meminfo

  • 查看屏幕密度
    adb shell wm density (單位dpi)

dumpsys使用


  • 查看分辨率
    adb shell dumpsys display | findstr DisplayDeviceInfo

  • 查看電池狀況
    adb shell dumpsys battery (scale代表最大電量,level代表當前電量)

  • 顯示屏參數

adb shell dumpsys window displays
adb shell dumpsys activity 查看ActvityManagerService 所有信息
adb shell dumpsys activity activities 查看Activity組件信息
adb shell dumpsys activity services 查看Service組件信息
adb shell dumpsys activity providers 查看ContentProvider組件信息
adb shell dumpsys activity broadcasts 查看BraodcastReceiver信息
adb shell dumpsys activity intents 查看Intent信息
adb shell dumpsys activity processes 查看進程信息
  • 查看最近任務棧
    adb shell dumpsys activity recents

  • 查看棧頂應用
    adb shell dumpsys window | grep mCurrentFocus adb shell dumpsys activity | grep mResumedActivity // Android10.0之后

  • 查棧頂應用activity
    adb shell dumpsys activity activities | grep mFocuseActivity // Android10.0之前

  • 抓應用包相關
    adb shell dumpsys package 包名 //UserId、ContentProvider、權限信息、版本信息、路徑等
    adb shell dumpsys package com.google.android.contacts | grep version //看聯系人應用版本號
    adb shell dumpsys package com.google.android.apps.messaging | grep version //查看短信應用版本號

  • 磁盤狀態
    adb shell dumpsys diskstats

自帶工具


  • 屏幕截圖
    adb shell screencap -h 幫助信息
    // Android10版本
    adb exec-out screencap -p >sctest.png
    //舊版本可以用
    adb shell screencap -p /sdcard/**.png

  • 錄制屏幕
    adb shell screenrecord -help 幫助信息
    adb shell screenrecord /sdcard/.mp4 adb pull /sdcard/.mp4 ./

  • 自動化Monkey
    adb shell monkey -p <packagename> -v 500

adb shell wm


  • 修改分辨率

    adb shell wm size 480x1024

  • 恢復分辨率

    adb shell wm size reset:恢復分辨率

adb shell PM:


  • 查看系統應用
    adb shell pm list packages -f
    adb shell pm list packages -f | grep 應用名字部分字串

  • 查看三方應用
    adb shell pm list packages -3

  • 查看應用apk路徑
    adb shell pm path com.xxx.camera

  • 查看權限列表
    adb shell pm list permissions -g -d

  • 清除數據
    adb shell pm clear 應用包名

adb shell AM:

  • 啟動activity組件
    adb shell am start -n 包名/包名+類名(-n 類名,-a action,-d date,-m MIME-TYPE,-c category,-e 擴展數據,等)。
    adb shell am start -n 包名/包名+類名 -es "toast" "Hello,world!" //啟動activity并加Toast提示。

  • 服務
    serviceadb shell am startservice -n ...
    adb shell am startservice -n com.android.systemui/.SystemUIService //啟動手機虛擬按鍵

  • 廣播
    adb shell am broadcast -a ...

  • 停止應用
    adb shell am force-stop <packagename>

  • 收緊內存
    adb shell am send-trim-memory <pid>

  • 設置本地locu.prop
    adb shell setprop key value

  • 查看本地locu.prop
    adb shell getprop key

抓Log命令


  • adb logcat --help 選項解析
選項 用途
-s 設置輸出日志的標簽, 只顯示該標簽的日志; adb logcat -s "TAG" 只打印包含有TAG的日志,無此TAG不打印
-f 將日志輸出到文件, 默認輸出到標準輸出流中, -f 參數執行不成功; 使用這個adb logcat > log 替換
-r 按照每千字節輸出日志, 需要 -f 參數, 不過這個命令沒有執行成功;
-n 設置日志輸出的最大數目, 需要 -r 參數, 這個執行 感覺 跟 adb logcat 效果一樣;
-v 設置日志的輸出格式, 注意只能設置一項;
-v
adb logcat -v time 可以查看看日志的輸出時間 "time"格式 : "日期 時間 優先級 / 標簽 (進程ID) : 進程名稱 : 日志信息 "
adb logcat -v thread "thread"格式 : " 優先級 ( 進程ID : 線程ID) 標簽 : 日志內容 "
adb logcat -v long "long"格式 : " [ 日期 時間 進程ID : 線程ID 優先級 / 標簽] 日志信息 "
adb logcat -v brief "brief"格式 : 這是默認的日志格式 " 優先級 / 標簽 (進程ID) : 日志信息 "
adb logcat -v process "process"格式 : " 優先級 (進程ID) : 日志信息 "
adb logcat -v tag "tag"格式 : " 優先級 / 標簽 : 日志信息" ,"raw"格式 : 只輸出日志信息, 不附加任何其他 信息
選項 用途
-c 清空所有的日志緩存信息;
-d 將緩存的日志輸出(請勿阻止); adb logcat -d -v time -b all > fifle.txt
-t 輸出最近的幾行日志, 輸出完退出(請勿阻止);adb logcat -t 5 可以輸出最近的5行日志
-g 選項 : 查看日志緩沖區信息;
-b 加載一個日志緩沖區, 默認是 main, 下面詳解;
adb logcat -b 緩沖區類型
system緩沖區 與系統相關的日志信息,
radio緩沖區 廣播電話相關的日志信息
events緩沖區 事件相關的日志信息,
main緩沖區 默認的緩沖區

adb logcat -b kernel
adb logcat -v time -b main -b events -b system > startlog.txt

  • 抓內核日志信息:

    adb shell dmesg > dmesg.txt

  • 抓bugreport壓縮包(adb高版本支持 如:1.0.39)

    : adb bugreport ./
    -- "-B"選項 : 以二進制形式輸出日志;

過濾項格式 : <tag>[:priority] , 標簽:日志等級,


  • *默認的日志過濾項是 info : " :I " ;
-- V Verbose (明細)
-- D Debug (調試)
-- I Info (信息);
-- W Warn (警告);
-- E Error (錯誤);
-- F Fatal (嚴重錯誤);
-- S Silent(Super all output) (最高的優先級, 可能不會記載東西);

如:
//過濾警告級別及級別以上的日志(Warn、Error、Fatal等)
adb logcat *:W
//過濾錯誤級別包含“chrome”字串的日志
adb logcat *:E | grep chrome

  • 使用管道過濾日志
    過濾字符串忽略大小寫 : adb logcat | grep -i wifi

  • 使用正則表達式匹配
    adb logcat | grep "^..Activity" 就可以匹配日志中的 "V/ActivityManager" 字符串;

  • 抓取開機過程中log:
    pod_debug 置1,打開ipod debug模式,這樣的話,ipo關機后,adb仍然可以處于工作的狀態
    adb root
    adb shell setprop ipod_debug 1

  • 聯合過濾打印:

    • adb logcat Tag1:I Tag2:D*S

    • PullLog:
      set log_path = %date: =%%time::=%
      set log_path = %log_path:/ =
      %
      mkdir "log%log_path%"
      cd "log%log_path%"
      adb wait-for-devices
      adb remount
      adb pull /data/log/android_log/

    • CleanLog:
      adb logcat -c
      adb shell rm /data/log/android_log/*
      adb shell rm /data/anr/*
      pause

  • 模擬手機按鍵
    HOME鍵: adb shell input keyevent 3
    返回鍵 :4 ,音量+:24,,音量-:25,電源鍵:26
    菜單鍵:82 ,靜音鍵:164 ,點亮屏幕:224 熄滅屏幕:223
    媒體控制:播放/暫停:85,停止86,下一首:87,上一首:88 ,恢復:126 ,暫停:127
    滑動解鎖
    adb shell input swipe 300 1000 300 500 (起點終點坐標)
    輸入文本
    adb shell input text hello (出現hello文本框)

  • Adb 高級:

    1. Adb運行原理:

      adb運行原理是PC端的adb server 與手機端的守護進程adbd建立連接,然后PC端的adb client通過adb server轉發命令,adbd收到命令后解析運行。

      所以如果adbd以普通權限運行,有些通過root權限才能執行的命令無法直接用 adb xxx執行。

      這是可以adb shell 然后 su root 后執行命令,也可以讓adbd 以root權限執行,這就可以隨意執行最高權限命令了。

      adb disable-verity 第一次

      adb root 正常輸出: restarting adbd as root

      三星手機可能執行adb root無法獲取root權限,需要安裝 adb Insecure,然后adb root。

      非root權限:adb unroot

    2. adb 查看設備

      adb [-d|-e|-s <SerialNumber>] <command>

      注:僅有一個設備,可以省略 [-d|-e|-s <SerialNumber>] 這一部分,直接adb <command>

      參數 含義
      -d 指定當前唯一通過usb連接Android設備
      -e 指定當前唯一的Android模擬器
      -s <SerialNum> 指定相同序列號的設備/模擬器,<SerialNum> 通過adb devices獲取。
    3. 查看應用列表的基本命令格式

      adb shell pm list package [-f|-d|-e|-s|-3|-i|-u|-user USER_ID] [FILTER]

      參數 顯示包名列表
      -f 顯示應用關聯的apk文件
      -d 只顯示disable應用
      -e 只顯示enable應用
      -s 只顯示系統應用
      -3 只顯示三方應用
      -i 只顯示installed應用
      -u 只顯示uninstalled應用
      --user USER_ID 只顯示id用戶的空間的所有包
      FILTER 只顯示 grep/findstr +字串 的應用
    4. 安裝apk adb install 其實分三步走: 1.push apk文件到 /data/local/tmp 2.adb shell 到調用 pm insatll 安裝 3.刪除 /data/local/tmp 下對應apk文件 所以必要時可以手動分步執行安裝過程。 adb insatll [-lrtsdg] <path_to_apk>

      參數 含義
      -l /mnt/asec/安裝到保護目錄
      -r 允許覆蓋安裝
      -t testonly="true"安裝測試
      -d 降級覆蓋安裝
      -g 授予所有運行權限安裝
    5. 無線連接,adb支持,無需USB線 1.連接同一個wifi 2.設備和電腦先連接USB線 3.adb tcpip 5555 4.斷開USB 5.找到設備IP地址 6.通過IP連接 adb connect <device-id-address> 7.adb devices 輸出:<devices-ip-address>:5555 devices 表示連接成功 8.斷開 adb disconnect

Linux的lsusb:Android usb 設備管理器lsusb 分析_Tony的專欄-CSDN博客

附:


  • 使用adb命令結束進程的方法有兩種的相同作用與區別 1、adb shell " kill -9 <進程號> " 結束進程 2、adb shell " am force-stop " <包名> " 結束進程樹

  • linux下殺死進程(kill)的N種方法 https://blog.csdn.net/andy572633/article/details/7211546

  • kill -3 pid 和kill -9 pid https://blog.csdn.net/fan380485838/article/details/81018734

  • linux命令-kill pid和kill -9 pid https://blog.csdn.net/weixin_43851795/article/details/85038948?

  • 系統穩定性問題分析,當遇到系統卡死時,我們經常要使用“kill -3 pid”來打印System_Server進程各個線程的Java調用棧, 根據線程狀態及調用棧來更進一步定位問題點,當然某個應該界面卡頓時間長時也可以通過這個命令來抓取Java調用棧進行分析。 adb shell “kill -3 pid”后文件的保存路徑為:/proc/${pid}/cwd。文件名為:antBuilderOutput.log

  • 創建SDCard: mksdcard 1024M ~/名稱.img

  • 啟動DDMS:

    ddms

  • 安裝應用程序: adb install -r 應用程序.apk

  • 遇到問題:INSTALL_FAILED_VERIFICATION_FAILURE adb shell settings put global verifier_verify_adb_installs 0 adb shell settings put global package_verifier_enable 0 如果不能解決。這時,可以將apk放到這個目錄下:/system/app

  • 缷載apk包: adb shell cd data/app rm apk adb uninstall apk包的主包名 adb install -r apk包

  • 查看adb命令幫助信息: adb help

  • adb shell后面跟的命令主要來自: 源碼\system\core\toolbox目錄和源碼\frameworks\base\cmds目錄。

  • 刪除系統應用: adb remount (重新掛載系統分區,使系統分區重新可寫)。 adb shell cd system/app rm *.apk

  • 發布端口:你可以設置任意的端口號,做為主機向模擬器或設備的請求端口。如: adb forward tcp:5555 tcp:8000

  • 復制文件: 復制一個文件或目錄到設備或模擬器上: 如:adb push test.txt /tmp/test.txt 從設備或模擬器上復制一個文件或目錄: 如:adb pull /addroid/lib/libwebcore.so .

  • 查看bug報告: adb bugreport 記錄無線通訊日志:

  • 一般來說,無線通訊的日志非常多,在運行時沒必要去記錄,但我們還是可以通過命令,設置記錄: adb logcat -b radio

  • 獲取設備的ID和序列號: adb get-product adb get-serialno

  • 訪問數據庫SQLite3 adb shell sqlite3

版權聲明:本文為CSDN博主「熱愛學習的吉吉」的原創文章,
原文鏈接:https://blog.csdn.net/u010871962/article/details/78370069

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容