iOS开发者如何通过网易云捕收集崩溃信息
iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时准确捕获到异常信息并及时通知开发者,是软件开发者比较关心的问题。只有及时发现了bug,并快速的处理,不断的提高产品的质量,这样才能吸引越来越多的用户。网易云捕就是这样的一款移动平台崩溃收集系统,它能及时的收集程序中的崩溃信息并做相应的统计分析,供开发者定位、解决问题。网易云捕提供两种集成 SDK 方式供 iOS 开发者选择:(1)CocoaPods(2)手动集成

CocoaPods 集成方式
1、更新Podfile文件在工程的Podfile里面添加以下代码pod 'Bugrpt'注意:如果你的工程设置的"Deplyment Target"低于 7.0,则在Podfile文件的前面加上以下语句platform :ios, '7.0'
2、安装SDK如果是第一次使用本SDK,则在工程的当前目录下, 运行 "pod install" ;如果是要更新SDK,则运行"pod update";然后用后缀为.xcworkspace的文件打开工程关于CocoaPods的更多信息请查看CocoaPods官方网站
手动集成方式
1、下载 SDK下载地址: 网易云捕官网—SDK下载解压后的文件包含一个framework:Bugrpt.framework
2、导入Bugrpt.framework到XCode工程导入SDK到XCode的方法有很多,任意选择都可以1)打开XCode项目工程,选择TARGETS -> Build Phases -> Link Binary With Libraries -> "+",选择Bugrpt.framework点击 "Open",导入到工程2)拖拽Bugrpt.framework文件到 Xcode 工程内 (请勾选Copy items if needed)

3、配置Framework路径导入完成后,切换到Build Settings,查看Search Paths->Framework Search Paths:查看它的值,是否正确,如果值不正确或者没有值,则手动添加路径注意:在xcode中,如果多次添加或者删除不同路径下的Framework,那么Paths下会存在多个路径,不会因为Framework的删除而删除,如果这样的话,需要手动删除

4、添加需要的系统库Security.framework CoreTelephony.framework SystemConfiguration.framework CFNetwork.frameworklibz.tbd (注:Xcode7之前请添加libz.dylib)libc++.tdb (注:Xcode7之前请添加libc++.dylib)
5、添加Other Linker Flags在Build Settings中Other Linker Flags添加-lstdc++
接口调用
1、导入头文件在项目的XXXAppDelegate.m源文件中引入头文件,如下:

2、初始化SDK在application:didFinishLaunchingWithOptions:方法中初始化SDK,如下:

符号表配置
1、配置JAVA环境符号表提取工具依赖 java 运行环境(下载地址为云捕官网—java环境下载犬匮渝扮)iOS SDK捕获上报的异常堆栈中都是地址信息,如果想要定位具体的出错位置,需要进行符号表还原。Bugrpt提供上传并配置符号表的功能,可以自动的实现堆栈还原。关于符号表文件XCode项目编译后,会在product.app所在目录生成testApp.app.dSYM文件,而testApp.app.dSYM中就包含了符号表信息,由于.dSYM文件通常较大,我们提供一个符号表提取工具,可以从.dSYM中提取简要的符号表信息进行压缩上传注意:现在的符号表解析只针对真机模式
2、手动配置符号表2.1 提取符号表下载符号表工具,(下载为云捕官网—符号表工具)下载的结果:bugrpt_ios忧溲枷茫_symbol_xxx.zip,解压zip包,得到里面的jar包: symbolTool.ja以testApp项目为例,将symbolTool.jar拷贝到在DSYM文件的同级目录,Mac的终端程序中执行jar包执行完毕后,会在testApp.app.dSYM的同级目录生成testApp.app.symbol&arm64-xxxxx&armv7-xxxxx.zip文件,如果有多个架构的话,zip包里会有多个架构文件的符号表,比如armv7, arm64(见图一)2.2 配置App版本号符号表文件都是和APP版本一一对应的,如果某个APP有崩溃信息上传,系统会自动获取版本号,显示在 设置-> 版本管理里;如果APP还没上传崩溃信息,则这个版本号需要手动添加,如下:设置 -> 版本管理, 点击"新增"在新的页面里,填写APP的版本号和Bundle Identifier.版本号格式:Version(Build)在新的页面里,填写APP的版本号和Bundle Identifier.版本号格式:Version(Build)(见图二)2.3 上传符号表将通过符号表工具生成的zip文件上传到对应的版本.(见图三)



3、自动配置:XCode + sh脚本3.1下载相关文件: 下载符号表工具,(云捕官网—— 符号表工具)下载的结果:bugrpt_ios_symbol_xxx.zip,解压zip包,得到里面的jar包: symbolTool.jar和sh脚本:dSYM_autoUpload.sh.把符号表提取工具symbolTool.jar保存在~/bin目录下 (如果用户主目录没有bin文件夹,请自行创建,如下图所示)(见图一)3.2 Xcode中配置sh脚本 (1)在 Xcode 工程对应 Target 的Build Phases中新增Run Scrpit Phase(见图二)( 2 ) 打开dSYM_autoUpload.sh,复制所有内容,在新增的Run Scrpit Phase中粘贴( 3 ) 修改新增的Run Scrpit中的 "云捕后台注册的APP ID"为您的 appid (见图三)( 4 )脚本默认在Debug模式下不会上传符号表,在需要上传的时候,请修改下列选项Debug模式Debug模式编译是否上传,1=上传,0=不上传,默认不上传如果把Debug设为上传的话:UPLOAD_DEBUG_SYMBOLS=1,还需要确认下项目配置Debug模式是否生成dSYM符号表文件一般项目的默认配置如下: (见图四)



