LLDebugTool - 便捷的IOS除錯工具(增加檢視結構和放大鏡)

HDB_Li發表於2019-09-01

LLDebugTool - 便捷的IOS除錯工具(增加檢視結構和放大鏡)

簡介 LLDebugTool]

LLDebugTool是一款針對開發者和測試者的除錯工具,它可以幫助你在非Xcode的情況下,進行資料分析和操作。

LLDebugToolSwift是針對LLDebugTool的Swift擴充套件,它提供了LLDebugTool的Swift介面,LLDebugToolSwift會和LLDebugTool同步更新。

如果你的專案是一個Objective-C專案,你可以使用LLDebugTool,如果你的專案是一個Swift專案或者包含Swift檔案,你可以使用LLDebugToolSwift

為您的下一個專案選擇LLDebugTool,或者遷移到您現有的專案中——您會為此感到驚喜!???

Gif

LLDebugTool - 便捷的IOS除錯工具(增加檢視結構和放大鏡)
LLDebugTool - 便捷的IOS除錯工具(增加檢視結構和放大鏡)

最近更新 (1.3.0)

檢視結構功能和放大鏡功能。

檢視結構功能:現在你可以使用Hierarchy函式來檢視螢幕上的每個元素,並且可以直觀地看到它們的frame和屬性,接下來會增加Hierarchy info的實現。

放大鏡功能:現在你可以使用Magnifying功能來檢視每個畫素的內容或顏色,這讓你和UI設計師的溝通更方便。

更多的修改內容可以檢視 Version 1.3.0 Project

新增

  • 重構了UI層次結構,現在使用多個視窗來顯示具體功能,每個功能使用一個Window,更多資訊可以看到LLWindowManager.m

更新

  • 更改檔案路徑。
  • 更新一些UI展示。
  • 適配iOS 13。

刪除

  • LLDebugTool現在不支援基於元件化,這是一個無用的特性,並且增加了模組之間呼叫的難度。LLDebugTool後來被維護類似一個應用程式,而不是多個功能模組。
  • 刪除一些不再使用的檔案、方法和巨集。

我能用LLDebugTool做什麼?

  • 檢查網路請求或者檢視某些事件的日誌資訊,而不必非在XCode執行下執行。這在解決測試人員的問題上很有用。

  • 更輕鬆的篩選有用的資訊。

  • 更輕鬆的處理偶發的問題。

  • 更輕鬆的分析崩潰原因。

  • 更輕鬆的分享、預覽或刪除沙盒檔案,這在開發階段非常有用。

  • 更輕鬆的觀察App的CPU,記憶體,FPS等資訊。

  • 截圖、標註並分享。

  • 更直觀的檢視檢視結構。

  • 更準確地確定App裡的UI元素和顏色。

新增 LLDebugTool 到你的專案中

CocoaPods

CocoaPods 是整合LLDebugTool的首選方式。

Objective - C
  1. 新增 pod 'LLDebugTool' , '~> 1.0.0' 到你的Podfile裡。
  2. 如果只想在Debug模式下使用,則新增pod 'LLDebugTool' , '~> 1.0.0' ,:configurations => ['Debug'] 到你的Podfile裡,詳細的配置方式可以檢視Wiki/如何僅在Debug環境中使用。如果你想要指定某個版本,可以類似這樣使用 pod 'LLDebugTool' , '1.3.0' ,:configurations => ['Debug']
  3. 推薦的方式是採用多Target來處理,只在Debug Target中新增pod 'LLDebugTool' , '~> 1.0.0',這樣做的好處既不汙染Product環境的程式碼,又可以在Archive Debug環境的App時,將LLDebugTool整合進去(如果採用:configurations => ['Debug']的方式,只能通過XCode執行,不可以Archive成App)。
  4. 終端輸入pod install來進行整合。搜尋不到LLDebugTool或者搜不到最新版本時,可先執行pod repo update,再執行pod install
  5. 在你需要使用LLDebugTool的檔案裡新增#import "LLDebug.h",或者直接在pch檔案中新增#import "LLDebug.h"
Swift
  1. 新增 pod 'LLDebugToolSwift' , '~> 1.0.0' 到你的Podfile裡。
  2. 如果只想在Debug模式下使用,則新增pod 'LLDebugToolSwift' , '~> 1.0.0' ,:configurations => ['Debug'] 到你的Podfile裡,詳細的配置方式可以檢視Wiki/如何僅在Debug環境中使用。如果你想要指定某個版本,可以類似這樣使用 pod 'LLDebugToolSwift' , '1.3.0' ,:configurations => ['Debug']
  3. 推薦的方式是採用多Target來處理,只在Debug Target中新增pod 'LLDebugToolSwift' , '~> 1.0.0',這樣做的好處既不汙染Product環境的程式碼,又可以在Archive Debug環境的App時,將LLDebugToolSwift整合進去(如果採用:configurations => ['Debug']的方式,只能通過XCode執行,不可以Archive成App)。
  4. 必須在Podfile中新增 use_frameworks!
  5. 終端輸入pod install來進行整合。搜尋不到LLDebugToolSwift或者搜不到最新版本時,可先執行pod repo update,再執行pod install
  6. 在你需要使用LLDebugTool的檔案裡新增import LLDebugToolSwift

Carthage

Carthage 是一個分散的依賴管理器,它構建您的依賴併為您提供framework框架。

Objective - C
  1. 要使用Carthage將LLDebugTool整合到Xcode專案中,請在Cartfile中指定它:

    github "LLDebugTool"

  2. 執行 carthage 來構建框架,並將構建的LLDebugTool.framework拖到Xcode專案中。

Swift
  1. 要使用Carthage將LLDebugToolSwift整合到Xcode專案中,請在Cartfile中指定它:

    github "LLDebugToolSwift"

  2. 執行 carthage 來構建框架,並將構建的LLDebugToolSwift.framework拖到Xcode專案中。

原始檔

您可以直接將名為LLDebugTool資料夾的原始檔新增到專案中。

Objective - C
  1. 下載最新的程式碼版本或將儲存庫作為git子模組新增到您的git跟蹤專案中。
  2. 在Xcode中開啟專案,然後拖拽名為“LLDebugTool”的原始檔夾到你的專案中。當提示Choose options for adding these files時,務必勾選Copy items if needed這項。
  3. 整合FMDB到專案中,FMDB是一個圍繞SQLite的Objective-C包裝器開源庫。
  4. 在你需要使用LLDebugTool的檔案裡新增#import "LLDebug.h",或者直接在pch檔案中新增#import "LLDebug.h"
Swift
  1. 下載最新的Objective-C程式碼版本或將儲存庫作為git子模組新增到您的git跟蹤專案中。
  2. 下載最新的Swift擴充套件程式碼版本或將儲存庫作為git子模組新增到您的git跟蹤專案中。
  3. 在Xcode中開啟專案,然後拖拽名為“LLDebugTool”和“LLDebugToolSwift”的原始檔夾到你的專案中。當提示Choose options for adding these files時,務必勾選Copy items if needed這項。
  4. 整合FMDB到專案中,FMDB是一個圍繞SQLite的Objective-C包裝器開源庫。
  5. 在你需要使用LLDebugTool的檔案裡新增import LLDebugToolSwift

如何使用

啟動

你需要在"application:(UIApplication * )application didFinishLaunchingWithOptions:(NSDictionary * )launchOptions"中啟動LLDebugTool,否則你可能會丟掉某些資訊。

如果你想自定義一些引數,你需要在呼叫"startWorking"前配置這些引數。更詳細的配置資訊請看LLConfig.h

  • 快速啟動

In Objective-C

#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;
}
複製程式碼

In Swift

import LLDebugToolSwift

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // ####################### Start LLDebugTool #######################//
        // Use this line to start working.
        LLDebugTool.shared().startWorking()
        
        // Write your project code here.
        
        return true
    }
複製程式碼
  • 使用自定義的配置啟動

In Objective-C

#import "AppDelegate.h"
#import "LLDebug.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Start working with config.
    [[LLDebugTool sharedTool] startWorkingWithConfigBlock:^(LLConfig * _Nonnull config) {

        //####################### Color Style #######################//
        // Uncomment one of the following lines to change the color configuration.
        // config.colorStyle = LLConfigColorStyleSystem;
        // [config configBackgroundColor:[UIColor orangeColor] primaryColor:[UIColor whiteColor] statusBarStyle:UIStatusBarStyleDefault];

        //####################### User Identity #######################//
        // Use this line to tag user. More config please see "LLConfig.h".
        config.userIdentity = @"Miss L";

        //####################### Window Style #######################//
        // Uncomment one of the following lines to change the window style.
        // config.entryWindowStyle = LLConfigEntryWindowStyleNetBar;

    }];
    
    return YES;
}
複製程式碼

In Swift

import LLDebugToolSwift

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        
        // Start working with config.
        LLDebugTool.shared().startWorking { (config) in
            //####################### Color Style #######################//
            // Uncomment one of the following lines to change the color configuration.
            // config.colorStyle = .system
            // config.configBackgroundColor(.orange, textColor: .white, statusBarStyle: .default)
        
            //####################### User Identity #######################//
            // Use this line to tag user. More config please see "LLConfig.h".
            config.userIdentity = "Miss L";
        
            //####################### Window Style #######################//
            // Uncomment one of the following lines to change the window style.
            // config.windowStyle = .netBar
        
            //####################### Features #######################//
            // Uncomment this line to change the available features.
            // config.availables = .noneAppInfo
        }
        
        return true
    }
複製程式碼

網路請求

你不需要做任何操作,只需要呼叫了"startWorking"就可以監控大部分的網路請求,包括使用NSURLSession,NSURLConnection和AFNetworking。如果你發現某些情況下無法監控網路請求,請開啟一個issue來告訴我。

日誌

列印和儲存一個日誌。 更多的log巨集資訊檢視LLDebugToolMacros.h

  • 儲存日誌

In Objective-C

#import "LLDebug.h"

- (void)testNormalLog {
    // Insert an LLog where you want to print.
    LLog(@"Message you want to save or print.");
}
複製程式碼

In Swift

import LLDebugToolSwift

    func testNormalLog() {
        // Insert an LLog where you want to print.
        LLog.log(message: "Message you want to save or print.")
    }

複製程式碼
  • Save Log with event and level

In Objective-C

#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.");
}
複製程式碼

In Swift

import LLDebugToolSwift

    func testEventErrorLog() {
        // Insert an LLog_Error_Event where you want to print an event and level log.
        LLog.errorLog(message: "Message you want to save or print.", event: "The event that you want to mark. such as bugA, taskB or processC.")
    }
複製程式碼

崩潰

你不需要做任何操作,只需要呼叫"startWorking"就可以截獲崩潰,儲存崩潰資訊、原因和堆疊資訊,並且也會同時儲存當次網路請求和日誌資訊。

App資訊

LLDebugTool會監控app的CPU,記憶體和FPS。你可以更便捷的檢視app的各種資訊。

沙盒

LLDebugTool提供了一個快捷的方式來檢視和操作沙盒檔案,你可以更輕鬆的刪除沙盒中的檔案/資料夾,或者通過airdrop來分享檔案/資料夾。只要是apple支援的檔案格式,你可以直接通過LLDebugTool來預覽。

截圖

LLDebugTool提供了一個截圖功能,並且可以進行簡單的繪畫和標註,用於測試或者美工除錯App時方便記錄。

檢視結構

LLDebugTool提供了一個檢視結構工具,用於在非Debug模式下檢視元素的屬性和資訊。

放大鏡

LLDebugTool提供了一個放大鏡的工具,用於放大區域性UI和檢視指定位置的顏色值。

更多使用

  • 你可以通過檢視Wiki,獲得更多幫助。
  • 你可以下載並執行LLDebugToolDemoLLDebugToolSwiftDemo來發現LLDebugTool的更多使用方式。Demo是在MacOS 10.14.6,XCode 10.2.1,iOS 12.1,CocoaPods 1.7.5下執行的,如果有任何版本相容問題,請告訴我。

要求

LLDebugTool在支援ios8+,並且需要使用ARC模式。使用到的框架已經包含在大多數Xcode模板中:

  • UIKit

  • Foundation

  • SystemConfiguration

  • Photos

  • QuickLook

  • CoreTelephony

結構

  • LLDebug.h

    公用標頭檔案。全域性引用此檔案即可。

  • DebugTool

    LLDebugTool.h 用於啟動和停止LLDebugTool,你需要看一下這個檔案。

    LLConfig.h 用於自定義顏色、大小、標識和其他資訊。如果您想要配置任何東西,您需要關注這個檔案。

    LLDebugToolMacros.h 快捷的巨集定義檔案。

  • Component

    • Network 用於監視網路請求。
    • Log 快速列印和儲存日誌。
    • Crash 用於當App發生崩潰時,收集崩潰資訊。
    • AppInfo 用於監視應用程式的各種屬性。
    • Sandbox 用於檢視和操作沙盒檔案。
    • Screenshot 用於處理和展示截圖事件。
    • Hierarchy 用於處理和展示檢視結構。
    • Magnifier 用於放大鏡功能。

聯絡

  • 如果你需要幫助,開啟一個issue。
  • 如果你想問一個普遍的問題,開啟一個issue。
  • 如果你發現了一個bug並能提供可靠的複製步驟,開啟一個issue。
  • 如果你有一個功能請求,開啟一個issue。
  • 如果你發現有什麼不對或不喜歡的地方,就開啟一個issue。
  • 如果你有一些好主意或者一些需求,請發郵件(llworkinggroup1992@gmail.com)給我。
  • 如果你想貢獻,提交一個pull request。

聯絡

更新日誌

可以在 CHANGELOG 中找到每個LLDebugTool版本的簡要總結。

許可

這段程式碼是根據 MIT license 的條款和條件釋出的。

相關文章