XBDebugTools目前主要是用于收集Crash信息和API接口相关信息。
日常工作中常常遇到领导、测试人员、以及用iPhone的同事拿着手机跑来反馈问题,除了一些UI的问题对于他们来说比较好描述,其他的问题通常被他们描述为:app挂了啦,奔溃了啦,没有数据啦,更进一步的描述他们基本就说不清,听完真是一脸懵逼,平时赶新功能的话,对于那些不能很快追踪或者重现的问题可能就被忽略了。虽然可以接入友盟等第三方崩溃日志检测工具,但是相关日志的提交的及时性不受自己的控制,对于领导等测试人员遇到并反馈问题,特别是领导,你不及时告诉他问题的原因还真不行。该工具可以帮你快速的定位这些问题,及时给相关人员反馈或者修复。
本工具会持续维护,如果有通用需求会尽快加入进去。
第一次制作开源工具库,难免有不足之处,还请大家不吝指教。
目前可以通过两种方式将XBDebugTools集成到您的项目中。
- 下载 XBDebugTools 然后将XBDebugTools文件夹拖入您的工程即可。
- CocoaPods集成
CocoaPods is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like XBDebugTools in your projects. You can install it with the following command:
$ gem install cocoapods
To integrate XBDebugTools into your Xcode project using CocoaPods, specify it in your Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'TargetName' do
pod 'XBDebugTools'
end
Then, run the following command:
$ pod install
XBDebugTools
XBApiDebugInfo
XBExceptionInfo
XBDebugInfoListViewController
XBDebugDetailsViewController
XBDebugInfoListTableViewCell
XBDebugTools
包含了所有功能接口,目前主要包含Crash收集、添加API相关信息、展示这些Crash和Api信息的接口.
在AppDelegate.m
的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法1return
前执行[XBDebugTools sharedInstance];
即可。具体如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#if DEBUG
[XBDebugTools sharedInstance]; //一定放在return前,紧贴return语句,否则可能被第三方收集工具重写相关方法导致收集不到Crash信息
#endif
return YES;
}
在API集中处理的地方调用-(void)addApiDebugInfoWithDomain:(NSString *)domain url:(NSString *)url params:(NSDictionary *)params response:(NSDictionary *)response succeed:(BOOL)succeed
方法,即[[XBDebugTools sharedInstance] addApiDebugInfoWithDomain:@"" url:URLString params:params response:dict succeed:YES];
。现在使用AFNetworking 项目比较多,这里则用该库举例子了。具体如下:
NSURLSessionConfiguration * configuration = [ NSURLSessionConfiguration defaultSessionConfiguration ];
AFURLSessionManager * sessionManager = [[AFURLSessionManager alloc ] initWithSessionConfiguration: configuration];
[sessionManager POST:URLString parameters:params progress:nil success:^(NSURLSessionDataTask *task, id responseObject) {
//解析字典
NSData *data = [self unzipData:responseObject];
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
#if DEBUG
[[XBDebugTools sharedInstance] addApiDebugInfoWithDomain:@"" url:URLString params:params response:dict succeed:YES];
#endif
} failure:^(NSURLSessionDataTask *task, NSError *error) {
#if DEBUG
[[XBDebugTools sharedInstance] addApiDebugInfoWithDomain:@"" url:URLString params:params response:@{@"errorDes":error.localizedDescription} succeed:NO];
#endif
}];
在APP中提供一个展示收集的debug信息的入口,比如创建一个按钮,在响应方法中调用[[XBDebugTools sharedInstance] showExceptionTools];
即可。
XBDebugTools is released under the MIT license. See LICENSE for details.