通过脚本收集dSYM文件

在日常iOS开发过程中,难免发生收集到崩溃日志但是却没有对应的dSYM文件的问题。
针对这种问题有一种解决方案就是收集每次编译产生的dSYM文件。虽然这不是最佳的方案,但结合使用atos强行符号化某个地址,还是比较有效的。
如何使用atos符号化地址在另一篇文章中会介绍。接下来就介绍如何添加脚本收集dSYM文件。

Build Phases中点击加号,添加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的内容如下:

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)))

这样每次编译产生的dSYM文件默认就会保存到~/Documents/Packages/了

你可能感兴趣的:(通过脚本收集dSYM文件)