1. 程式人生 > 其它 >Android 開發中指令碼 提高效率工具

Android 開發中指令碼 提高效率工具

在安卓開發中我們常常需要獲取日誌,通常我們可以通過adb logcat 命令獲取日誌。同樣,我沒有可以通過指令碼獲取。其實質也是通過adb命令實現,只是把命名寫入bat檔案中,在win系統中直接雙擊就可以執行檔案中的命令,而不需要我們在cmd中輸入。下面分析幾種獲取日誌的方法。

1.我們想抓取實時日誌,當前小張會說我直接在androidstudio logcat裡面就可以看了誰要用你的工具。老張抿嘴一笑,小樣。有時候一些情況比如埠問題,或者日誌堆積問題,導致我們有一天發現我們的logcat並沒有輸出日誌,或者我們想把日誌保留下來慢慢分析,畢竟有些問題並不是一眼就看出問題的。這時候我們可以執行這個工具,然後執行我們的操作。抓我們想要的日誌。

adb wait-for-device
adb devices
adb shell logcat -v threadtime >"%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%log.txt"
pause

我們想把我們手機裡面的日誌,anr carsh 等等都取出來

@echo off
::V1.0 2021-1-18

::各個系統不同,可以根據需求新增或者刪除不必要的目錄下的資料獲取

echo Version:Get Android All Log V1.0
echo.

echo currentTime:%time% Now %time:~0,2%:%time:~3,2%:%time:~6,2%:%time:~9,2%:@

set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_%time:~6,2%%time:~9,2%"
::設定顯示的資料夾名稱
set Folder="Logs_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_%time:~6,2%%time:~9,2%"
echo 日誌資料夾:%Folder%
mkdir %Folder%

::獲取root許可權,下面pull一些隱私目錄的資料需要root許可權
adb remount
adb root
::建立資料夾
mkdir %Folder%\device
::獲取系統的所有app服務
adb shell ps -A > %Folder%\device\ps.txt
::獲取系統的cup等佔用情況
adb shell top -b -n 1 > %Folder%\device\top.txt
::獲取系統的cup前十個佔用最多的程序資訊
adb shell top -b -n 1 -H -m 10 -s 6 -o pid,tid,user,pr,ni,%%cpu,s,virt,res,pcy,cmd,name > %Folder%\device\top2.txt
::獲取系統的程序核心資訊
adb shell cat /proc/cmdline > %Folder%\device\cmdline.txt
::獲取系統的程序記憶體佔用資訊
adb shell cat /proc/meminfo > %Folder%\device\meminfo.txt
::獲取系統的cup資訊
adb shell cat /proc/cpuinfo > %Folder%\device\cpuinfo.txt
::獲取系統的prop屬性資訊
adb shell getprop > %Folder%\device\getprop.txt
::獲取系統的記憶體大小資訊
adb shell df -h > %Folder%\device\df.txt

::獲取系統的當前介面截圖
adb shell screencap /mnt/sdcard/Pictures/capture.png
adb pull /mnt/sdcard/Pictures/capture.png %Folder%\capture.png

::獲取系統的dumpsys資訊,包含dumpsys package XXX的資訊
mkdir %Folder%\dumpsys
adb shell dumpsys > %Folder%\dumpsys\dumpsys.txt

::獲取系統的快取日誌
adb shell logcat -v threadtime -d > %Folder%\logcat.txt

::獲取系統的各目錄下的日誌,根據不同系統進適配

::系統Android日誌
adb pull /data/misc/logm %Folder%\android_logs
::Dalvik、狀態監視偵錯程式、C層程式碼以及libc的一些問題導致的錯誤日誌
adb pull /data/tombstones %Folder%\tombstones
::系統ANR異常日誌
adb pull /data/anr %Folder%\anr
::系統核心日誌
adb pull /sys/fs/pstore %Folder%\pstore
::系統核心應用程式崩潰資料
adb pull /data/system/dropbox %Folder%\dropbox
::系統??日誌
adb pull /data/log/reliability %Folder%\reliability_system
adb pull /data/vendor/log/reliability %Folder%\reliability_vendor
::系統settings下的system、secure、global等屬性
adb pull /data/system/users/0 %Folder%\settings

::獲取系統的recovery資訊
mkdir %Folder%\recovery
adb pull /splash2/recovery %Folder%\recovery

echo.
echo ==========log抓取完成==========
pause

adb pull 命令是取裝置中的檔案,取日誌常用工具,基本上就是 adb pull 系統檔案目錄 這樣可以把檔案取出來。

其中android 系統日誌 不同裝置和手機廠商可能不一樣,有些是data/android_log,這都不是重點,重點是隻要我們知道日誌在哪裡,都可以通過adb pull 取出來。好啦,就分析到這裡。