前言
因為自己菜,所以在分析iOS Crash日志上走了很多彎路。 個人覺得這個工作并不存在太大的技術含量,所以我就想著能不能實現自動化呢? 于是我便開始研究起腳本,緊接著寫了一個自動化分析iOS崩潰日志的腳本。這是第一次寫腳本,還是有點小小的成就感的。
使用Xcode自帶的symbolicatecrash分析工具
本文所說的自動化就是使用該工具進行分析的,對于這個工具的具體使用方法可以參考該文章。
總的來說,其實自己寫的腳本比較簡單,只是將上述文章中說到的命令進行了統一而已。
使用方式
- 首先將該腳本、dSYM文件、所有的crash文件放到一個文件夾下。

Snip20170923_2.png
- 在終端下進入該目錄,并執(zhí)行./SymbolicCrash.sh命令并正確輸入你打包使用的Xcode名稱,按回車鍵開始解析。

Snip20170923_4.png
解析后的文件夾內容:

Snip20170923_3.png
對于多出的symbolicatecrash可執(zhí)行終端程序,大家不必理會,這就是上面說到的Xcode自帶的分析工具,我只是將它拷貝過來完成任務罷了。另外,可能會出現警告,但是大家可以忽略(因為我還沒弄清楚為啥呢)。
解析結果部分對比
需要注意的是,一個Crash文件對應一個log文件。

Snip20170923_5.png
腳本代碼
#!/bin/sh
# 首先判斷是否有相關的文件
dSYMPath=`find . -iname "*.dSYM"`
XcodeName=""
# 獲取Xcode的名稱
function getXcodeName() {
# 獲取Xcode名
echo "請輸入Xcode的名稱:"
read ANS
XcodeName="$ANS"
if [ -z "$XcodeName" ]; then
getXcodeName
else
symbolicatecrash
fi
}
# 獲取Xcode的symbolicatecrash腳本
function symbolicatecrash() {
# 拷貝Xcode自帶的symbolicatecrash腳本到當前目錄
cp /Applications/${XcodeName}.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash .
analyze
}
# 解析
function analyze() {
crashFiles=`find . -iname "*.crash"`
export DEVELOPER_DIR="/Applications/${XcodeName}.app/Contents/Developer"
for fileName in $crashFiles; do
{
./symbolicatecrash $fileName $dsymPath > $fileName.log
}
done
}
function beginShell() {
if [ -z "$dSYMPath" ]; then
echo "沒有找到dSYM文件!"
else
getXcodeName
fi
}
beginShell