YDAvoidCrash 防崩潰庫介紹
專案地址:YDAvoidCrashKit: GitHub - chong2vv/YDAvoidCrashKit
YDAvoidCrash 主要借鑒了@chenfanfang大神開源的 AvoidCrash,由于AvoidCrash不再維護更新,同時鑒于實際業務開發中所使用的類逐漸增加,因此YDAvoidCrash在原AvoidCrash上重新開發,畢竟,一個已經發布到AppStore上的App,最忌諱的就是崩潰問題,相信作為開發者對于所產出專案的崩潰率要求都極為嚴格,因此YDAvoidCrash庫就是為此存在,
目前YDAvoidCrash經過專案驗證后,目前200W用戶下榷訓15W左右,崩潰率可以降到0.03%以下,而其中的大多數崩潰則是由現成引起的(之后會逐漸增加安全執行緒功能),
相較于原庫,YDAvoidCrash新增了以下功能及優化:
- 新增了其他系統類的防崩潰,目前約支持17個系統類(逐步迭代更新);
- 支持回呼設定,方便應用上報;
- 新增YDLogger日志采集系統,用以捕捉崩潰等日志(如操作日志、錯誤日志、請求日志等),同時YDLogger自帶YDLoggerUI可以方便可視化查詢日志;
- YDLogger日志是通過每次啟動APP即可生成當前的日志檔案,可以通過獲取全部檔案后進行壓縮等形式上次服務端,同時可以下載后通過YDLoggerUI進行快速查看,
安裝及使用方式
使用CocoaPods匯入
pod 'YDAvoidCrashKit', '0.0.6'
使用方法
YDAvoidCrash 防崩潰庫使用
使用時引入頭檔案:
#import "YDAvoidCrashKit.h"
之后在AppDelegate的didFinishLaunchingWithOptions方法中的最初始位置添加如下代碼,讓YDAvoidCrash生效
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//設定允許防崩潰類前綴
[YDAvoidCrash setAvoidCrashEnableMethodPrefixList:@[@"NS",@"YD"]];
//接收例外的回呼處理,可以用來上報等
[YDAvoidCrash setupBlock:^(NSException *exception, NSString *defaultToDo, BOOL upload) {
}];
//開啟全部類攔截,同時開啟日志收集(日志默認保存10天,可以在開啟前通過[[YDLogService shared] clearLogWithDayTime:5]設定)
[YDAvoidCrash becomeAllEffectiveWithLogger:YES];
return YES;
}
YDLogger使用
如果想使用YDLogger日志收集系統,可在本地開啟日志(YDAvoidCrash becomeAllEffectiveWithLogger:YES])后使用:
/**
日志記錄宏,只記錄到本地,使用方法和NSLog相同,參考當前檔案后可直接使用
根據日志level的不同,記錄的日志不同
當呼叫setLogLevel:設定需要記錄的日志level為YDLogDebug時,那么YDLogDebug等級以下的等級(含YDLogDebug)都會被記錄
默認設定為YDLogDetail
YDLogError() 記錄錯誤資訊,適用于線上/線下環境,格式:@"Erro timeStamp error"
YDLogInfo() 記錄極簡資訊,適用于線上/線下環境,格式:@"Info timeStamp info"
YDLogDetail() 記錄詳細資訊,適用于線上/線下環境,格式:@"Deta timeStamp [thread] func str"
YDLogDebug() 記錄開發資訊,適用于Debug環境,格式:@"Dbug timeStamp str"
YDLogVerbose() 記錄復雜資訊,適用于Debug環境,格式:@"Verb timeStamp [thread] func in file:line desc"
詳細使用可參考具體宏定義
*/
同時,為了方便快速查看日志,可以用YDLogger自帶的YDLoggerUI:
YDLogListViewController *vc = [[YDLogListViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
寫在最后的話
一個人的精力是有限的,如果你發現了哪些常用的Foundation中的方法存在潛在崩潰的危險,而這個框架中沒有進行處理,希望你能 issue, 我將添加到YDAvoidCrash中,同時在使用程序中發現BUG或者有更好的解決方法也同樣歡迎你能issue,我將萬分感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/303618.html
標籤:其他
