每次解析crash文件的時(shí)候都要敲一遍冗長(zhǎng)命令饺谬,所以弄個(gè)腳本來(lái)解析閃退信息,需要以下3個(gè)文件:
1.dSYM文件
首先通過(guò)Xcode的菜單選項(xiàng)Window->Organizer拿到.xcarchive文件递胧。通過(guò)右鍵顯示包內(nèi)容可以看到一個(gè)dSYMs
文件夾,dSYMs
文件就在這個(gè)文件夾下赡茸。如果有多個(gè)dSYMs
文件缎脾,只選主工程的dSYMs
文件就行,小組件那些文件不用坛掠。
2.symbolicatecrash工具
腳本里面已經(jīng)設(shè)置了此工具的路徑了赊锚,直接用就行治筒。symbolToolPath路徑在不同版本的Xcode中路徑可能不同,找到symbolicatecrash的路徑替換就可以了舷蒲。
3.crash文件
獲取crash文件有很多種方法耸袜,其中比較常用的有:
通過(guò)Xcode->Window->Devices and Simulators->View Device Logs獲取到。
通過(guò)Xcode->Window->Organizer->Crashes下載閃退文件牲平。
通過(guò)監(jiān)控平臺(tái)(譬如BugTags)獲取堤框。
復(fù)制下面的腳本,隨便命個(gè)名字譬如CrashSymbolic.sh纵柿,然后和上面的dSYM
和crash兩個(gè)文件一起放進(jìn)同一個(gè)文件夾蜈抓,打開終端進(jìn)入文件夾后運(yùn)行腳本命令即可:
sh CrashSymbolic.sh
然后就會(huì)生成解析好的symbol.crash
CrashSymbolic.sh代碼如下:
#!/bin/bash
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
echo "----開始 第一個(gè)參數(shù)是crash路徑 -----"
symbolToolPath="./symbolicatecrash"
crashPath=""
dSYMPath=""
if [ ! -f "$symbolToolPath" ]
then
echo "文件為特殊文件"
symbolToolPath="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash"
echo "symbolicatecrash工具的路徑是為:"$symbolToolPath
if [ -f "$symbolToolPath" ]
then
echo "symbolicatecrash工具存在(文件為普通文件)"
else
echo "無(wú)法找到symbolicatecrash工具"
fi
fi
function findFile(){
crashPath=$(find . -name "*.crash")
}
if [ -n "$1" ]
then
crashPath=$1
echo "已傳入crash文件路徑:$crashPath"
else
findFile
echo "未傳入crash文件路徑,搜索同級(jí)目錄下crash文件"
fi
if [ ! -f "$crashPath" ]
then
echo "搜索失敗,無(wú)法找到crash文件"
exit
fi
dSYMPath=$(find . -name "*.dSYM" -print)
echo "找到的符號(hào)表路徑:$dSYMPath"
if [ ! -d $dSYMPath ]
then
echo "無(wú)法找到符號(hào)表dSYM文件"
exit
fi
# ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
$symbolToolPath $crashPath $dSYMPath > symbol.crash
問(wèn)題一:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
解決方法: 終端執(zhí)行下面的命令設(shè)置環(huán)境變量
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
昂儒。腳本已經(jīng)執(zhí)行了沟使。
問(wèn)題二:如果報(bào) warning: unsupported file type:錯(cuò)誤,看看是不是因?yàn)橛形募蛘吣夸浀拿Q中包含空格,或者dSYM文件包含有其它文件渊跋。