每次遇到閃退信息的時(shí)候都要敲一遍命令,所以趁現(xiàn)在寫個(gè)腳本來(lái)解析閃退信息裆馒,需要的信息有文件有:
dSYM文件
首先通過(guò)Xcode的菜單選項(xiàng)Window->Organizer
拿到.xcarchive
文件冤议。通過(guò)右鍵顯示包內(nèi)容可以看到一個(gè)dSYMs
文件夾,.dSYM
文件就在這個(gè)文件夾下。如果有多個(gè)dSYM
文件央渣,只選主工程的dSYM
文件就行,小組件那些文件不用渴频。
symbolicatecrash工具
腳本里面我已經(jīng)自動(dòng)找到此工具的路徑了芽丹,直接用就行
crash文件
獲取crash
文件有很多種方法,其中比較常用的有:
- 通過(guò)
Xcode->Window->Devices and Simulators->View Device Logs
獲取到卜朗。 - 通過(guò)
Xcode->Window->Organizer->Crashes
下載閃退文件
復(fù)制下面的腳本拔第,隨便命個(gè)名字CrashSymbolic.sh
,然后和上面的dSYM和crash兩個(gè)文件一起放進(jìn)同一個(gè)文件夾场钉,打開(kāi)終端進(jìn)入那個(gè)文件夾輸入:
sh /Users/mac/Documents/crash/CrashSymbolic.sh
然后就會(huì)生成解析好的symbol.crash
CrashSymbolic.sh
#!/bin/bash
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
echo "----開(kāi)始 第一個(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
問(wèn)題二:如果發(fā)現(xiàn) warning: unsupported file type:
錯(cuò)誤
看看是不是因?yàn)橛形募蛘吣夸浀拿Q中包含空格惹悄,或者dSYM
文件包含有其它文件