在日常iOS開發(fā)過程中猾封,難免發(fā)生收集到崩潰日志但是卻沒有對應(yīng)的dSYM文件的問題寂拆。
針對這種問題有一種解決方案就是收集每次編譯產(chǎn)生的dSYM文件坯屿。雖然這不是最佳的方案,但結(jié)合使用atos
強(qiáng)行符號化某個地址检激,還是比較有效的肴捉。
如何使用atos
符號化地址在另一篇文章中會介紹。接下來就介紹如何添加腳本收集dSYM文件叔收。
在Build Phases
中點(diǎn)擊加號齿穗,添加New Run Script Phases
填寫腳本
python 'path/to/ios_package_manager.py' $CONFIGURATION_BUILD_DIR $PRODUCT_NAME
將path/to/ios_package_manager.py
指向到你保存ios_package_manager.py的位置
ios_package_manager.py的內(nèi)容如下:
import shutil
import sys
import os
import datetime
#切換成你想保存dSYM文件的位置
dst_package_path = os.path.expanduser('~/Documents/Packages/')
if __name__ == '__main__':
src_dir = sys.argv[1]
product_name = sys.argv[2]
package_dir = os.path.join(dst_package_path,product_name)
if os.path.exists(package_dir) == False:
os.mkdir(package_dir)
print(product_name)
src_dysm_path = os.path.join(src_dir,product_name + '.app.dSYM')
src_app_path = os.path.join(src_dir, product_name + '.app')
print(src_app_path)
print(src_dysm_path)
if os.path.exists(src_dysm_path):
new_pack_name = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S') + ".app.dSYM"
os.system('cp -r {0} {1}'.format(src_dysm_path, os.path.join(package_dir,new_pack_name)))
elif os.path.exists(src_app_path):
new_pack_name = datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S') + ".app"
print('cp -r {0} {1}'.format(src_app_path,new_pack_name))
os.system('cp -r {0} {1}'.format(src_app_path,os.path.join(package_dir,new_pack_name)))
這樣每次編譯產(chǎn)生的dSYM文件默認(rèn)就會保存到~/Documents/Packages/了