LLDebugTool - 組件化的調試工具
HDB-Li/LLDebugTool
LLDebugTool是一款針對開發者和測試者的調試工具,它可以幫助你在非Xcode的情況下,進行數據分析和操作。
為您的下一個項目選擇LLDebugTool,或者遷移到您現有的項目中——您會為此感到驚喜!
#### Gif
## 最近更新 (1.2.0)
### 支持組件化。
`LLDebugTool` 現在已經支持組件化了。現在你可以集成某一個或者多個模塊到你自己的**Debug 工具**里。你可以直接使用每個模塊內包含的視圖控制器,或者只調用`Function`文件夾下的功能,然後自己搭建UI。
如何使用組件化,具體請看Wiki[使用組件化](HDB-Li/LLDebugTool)或者[添加 LLDebugTool 到你的項目中](HDB-Li/LLDebugTool)。
更多的修改內容可以查看[Version 1.2.0 Project](HDB-Li/LLDebugTool)。
#### 新增
* 增加 `LLRoute`,用於解決組件間的相互引用。當相關組件存在時, `LLRoute` 會調用相關的方法,否則什麼都不會做。
#### 更新
* 更新文件夾目錄。現在整個項目是根據組件來分類的,在每個組件文件夾下,又分為`Function` 和 `UserInterface`。
* 修改組件間的相互引用的文件,改為由Route處理。
* 更新了 `NSURLSessionConfiguration.m` ,hook了 `protocolClasses` 這個方法。
## 我能用LLDebugTool做什麼?
- 檢查網路請求或者查看某些事件的日誌信息,而不必非在XCode運行下運行。這在解決測試人員的問題上很有用。
- 更輕鬆的篩選有用的信息。
- 更輕鬆的處理偶發的問題。
- 更輕鬆的分析崩潰原因。
- 更輕鬆的分享、預覽或刪除沙盒文件,這在開發階段非常有用。
- 更輕鬆的觀察App的CPU,內存,FPS等信息。
## 添加 LLDebugTool 到你的項目中
### CocoaPods
[CocoaPods](http://cocoapods.org) 是集成`LLDebugTool`的首選方式。
1. 添加 `pod LLDebugTool` 到你的Podfile里。如果只想在Debug模式下使用,則添加`pod LLDebugTool ,:configurations => [Debug]` 到你的Podfile里,詳細的配置方式可以查看[Wiki/如何僅在Debug環境中使用](https://github.com/HDB-Li/LLDebugTool/wiki/如何僅在Debug環境中使用)。
2. 終端輸入`pod install`來進行集成。搜索不到`LLDebugTool`時,可先運行`pod repo update`,再執行`pod install`。
3. 在你需要使用LLDebugTool的文件里添加`#import "LLDebug.h"`,或者直接在pch文件中添加`#import "LLDebug.h"`。
### Carthage
[Carthage](Carthage/Carthage) 是一個分散的依賴管理器,它構建您的依賴並為您提供framework框架。
1. 要使用Carthage將LLDebugTool集成到Xcode項目中,請在「Cartfile」中加入這行:
```ogdl
github "LLDebugTool"
```
2. 運行 `carthage` 來構建框架,並將構建的「LLDebugTool.framework」拖到Xcode項目中。
### 源文件
您可以直接將名為LLDebugTool文件夾的源文件添加到項目中。
1. 下載[最新的代碼版本](https://github.com/HDB-Li/LLDebugTool/archive/master.zip)或將存儲庫作為git子模塊添加到您的git跟蹤項目中。
2. 在Xcode中打開項目,然後拖拽名為「LLDebugTool」的源文件夾到你的項目中。當提示Choose options for adding these files時,務必勾選Copy items if needed這項。
3. 集成[FMDB](https://github.com/ccgus/fmdb)到項目中,FMDB是一個圍繞SQLite的Objective-C包裝器開源庫。
4. 在你需要使用LLDebugTool的文件里添加`#import "LLDebug.h"`,或者直接在pch文件中添加`#import "LLDebug.h"`。
## 如何使用
### 啟動
你需要在"application:(UIApplication * )application didFinishLaunchingWithOptions:(NSDictionary * )launchOptions"中啟動LLDebugTool,否則你可能會丟掉某些信息。
如果你想自定義一些參數,你需要在調用"startWorking"前配置這些參數。更詳細的配置信息請看[LLConfig.h](https://github.com/HDB-Li/LLDebugTool/blob/master/LLDebugTool/Config/LLConfig.h)。
* `快速啟動`
#import "AppDelegate.h"#import "LLDebug.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // The default color configuration is green background and white text color. // Start working. [[LLDebugTool sharedTool] startWorking]; // Write your project code here. return YES;}
* `使用自定義的配置啟動`
#import "AppDelegate.h"#import "LLDebug.h"- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // The default color configuration is LLConfigColorStyleHack. // If you want to use other color configurations, you can use the following line. [LLConfig sharedConfig].colorStyle = LLConfigColorStyleSimple; // If you want to use a custom color configuration, you can use the following line. [[LLConfig sharedConfig] configBackgroundColor:[UIColor orangeColor] textColor:[UIColor whiteColor] statusBarStyle:UIStatusBarStyleDefault]; // If you dont want to use color configuration, you can use the following line. [LLConfig sharedConfig].useSystemColor = YES; // Start working. [[LLDebugTool sharedTool] startWorking]; // Write your project code here. return YES;}
### 日誌
列印和保存一個日誌。 更多的log宏信息查看[LLLogHelper.h](https://github.com/HDB-Li/LLDebugTool/blob/master/LLDebugTool/Helper/LogHelper/LLLogHelper.h)。
* `保存日誌`
#import "LLDebug.h"- (void)testNormalLog { // Insert an LLog where you want to print. LLog(@"Message you want to save or print.");}
* `Save Log with event and level`
#import "LLDebug.h"- (void)testEventErrorLog { // Insert an LLog_Error_Event where you want to print an event and level log. LLog_Error_Event(@"The event that you want to mark. such as bugA, taskB or processC.",@"Message you want to save or print.");}
### 網路請求
你不需要做任何操作,只需要調用了"startWorking"就可以監控大部分的網路請求,包括使用NSURLSession,NSURLConnection和AFNetworking。如果你發現某些情況下無法監控網路請求,請打開一個issue來告訴我。
### 崩潰
你不需要做任何操作,只需要調用"startWorking"就可以截獲崩潰,保存崩潰信息、原因和堆棧信息,並且也會同時保存當次網路請求和日誌信息。
### App信息
LLDebugTool會監控app的CPU,內存和FPS。你可以更便捷的查看app的各種信息。
### 沙盒
LLDebugTool提供了一個快捷的方式來查看和操作沙盒文件,你可以更輕鬆的刪除沙盒中的文件/文件夾,或者通過airdrop來分享文件/文件夾。只要是apple支持的文件格式,你可以直接通過LLDebugTool來預覽。
### 更多使用
* 你可以通過查看[Wiki](https://github.com/HDB-Li/LLDebugTool/wiki),獲得更多幫助。
* 你可以下載並運行[LLDebugToolDemo](https://github.com/HDB-Li/LLDebugTool/archive/master.zip)來發現LLDebugTool的更多使用方式。Demo是在XCode9.3,ios 11.3,cocoapods 1.5.0下運行的,如果有任何版本兼容問題,請告訴我。
## 要求
LLDebugTool在支持ios8+,並且需要使用ARC模式。使用到的框架已經包含在大多數Xcode模板中:
* `UIKit`
* `Foundation`
* `SystemConfiguration`
* `Photos`
* `malloc`
* `mach-o`
* `mach`
* `QuickLook`
* `objc`
* `sys`
## 結構
* `LLDebug.h` 公用頭文件.
* `LLConfig` 配置文件。
>用於自定義顏色、大小、標識和其他信息。如果您想要配置任何東西,您需要關注這個文件。
* `LLDebugTool` 工具文件。
>用於啟動和停止LLDebugTool,你需要看一下"LLDebugTool.h"這個文件。
* `Helper` 輔助文件。
>如果你對功能的實現原理不感興趣,那麼可以忽略這個文件夾。
- `LLAppHelper` 用於監視應用程序的各種屬性。
- `LLCrashHelper` 用於當App發生崩潰時,收集崩潰信息。
- `LLLogHelper` 快速列印和保存日誌。
- `LLNetworkHelper` 用於監視網路請求。
- `LLSandboxHelper` Sandbox Helper。用於查看和操作沙盒文件。
- `LLStorageManager` Storage Helper。用於數據存儲和讀取。
* `UserInterface` UI文件。
>如果你想要修改、查看或者學習UI方面的東西,你可以查看一下這個文件夾。
- `Base` 父類文件
- `Categories` 類擴展
- `Others` 不通用的控制項
- `Resources` 圖片資源
- `Sections` 視圖控制器
- `Tool` 工具
## 聯繫
- **如果你需要幫助**,打開一個issue。
- **如果你想問一個普遍的問題**,打開一個issue。
- **如果你發現了一個bug**,_並能提供可靠的複製步驟_,打開一個issue。
- **如果你有一個功能請求**,打開一個issue。
- **如果你發現有什麼不對或不喜歡的地方**,就打開一個issue。
- **如果你有一些好主意或者一些需求**,請發郵件(llworkinggroup@qq.com)給我。
- **如果你想貢獻**,提交一個pull request。
## 聯繫
- 可以在[簡書](https://www.jianshu.com/u/a3c82fae85be)中發私信給我。
- 可以發郵件到[llworkinggroup@qq.com](llworkinggroup@qq.com)
## 更新日誌
可以在 [CHANGELOG](CHANGELOG.md) 中找到每個LLDebugTool版本的簡要總結。
推薦閱讀: