全能App研發助手!滴滴開源DoraemonKit

近日,滴滴開源App研發助手DoraemonKit,DoraemonKit簡稱DoKit,中文名哆啦A夢,意味着能夠像哆啦A夢一樣提供給他的主人各種各樣的工具。

開發背景

每一個稍微有點規模的 App,總會自帶一些線下的測試功能代碼,比如環境切換功能、幀率查看功能等等,這些功能的切換入口往往放在各式各樣的入口中,比如一些特殊的手勢,雙擊 statusBar,雙擊某一個功能區塊,或者新建一個 keyWindow 始終至於 App 最上方等等,而且每一個 App 裏面的線下附帶功能模塊很多是相似的,比如幀率查看、內存和 CPU 監控等等,但是現在基本上都是每個 App 都是自己實現了一份,經歷了以上的問題之後,DoraemonKit 就有了它存在的意義。

DoraemonKit 是一個功能集合面板,能夠讓每一個 App 快速接入一些常用的或者你沒有實現的一些輔助開發工具、測試效率工具、視覺輔助工具,而且能夠完美在 Doraemon 面板中接入你已經實現的與業務緊密耦合的一些非通有的輔助工具,功能強大,接入方便,便於擴展。

簡單總結

1、DoraemonKit 能夠快速讓你的業務測試代碼能夠在這裏統一管理,統一收口;

2、DoraemonKit 內置很多常用的工具,避免重複實現,一次接入,你將會擁有強大的工具集合。

效果演示

功能模塊

一、常用工具

【App 信息查看】 快速查看手機信息,App 信息,權限信息的渠道,避免去手機設置查找或者查看項目源代碼的麻煩;

【沙盒瀏覽】 App 內部文件瀏覽的功能,支持刪除和預覽, 並且能通過 AirDrop 或者其他分享方式上傳到 PC 中,進行更加細緻的操作;

【MockGPS】 App 能定位到全國各地,支持地圖地位和手動輸入經緯度;

【H5任意門】 開發測試同學可以快速輸入 H5 頁面地址,查看該頁面效果;

【Crash查看】 方便本地打印出出現 Crash 的堆棧;

【子線程UI】 快速定位哪一些 UI 操作在非主線程中進行渲染,避免不必要的問題;

【清除本地數據】 一鍵刪除沙盒中所有數據;

【NSLog】 把所有 NSLog 信息打印到UI界面,避免沒有開發證書無法調式的尷尬;

【Lumberjack】 每一條 CocoaLumberjack 的日誌信息,都在在 App 的界面中顯示出來,再也不需要導出日誌這麼麻煩。

二、性能檢測

【幀率】 App 幀率信息提供波形圖查看功能,讓幀率監控的趨勢更加明顯;

【CPU】 App CPU 使用率信息提供波形圖查看功能,讓 CPU 監控的趨勢更加形象;

【內存】 App 內存使用量信息提供波形圖查看功能,讓內存監控的趨勢更加鮮明;

【流量】 攔截 App 內部流量信息,提供波形圖展示、流量概要展示、流量列表展示、流量篩選、流量詳情,對流量信息統一攔截,成爲我們 App 中自帶的 “Charles”;

【卡頓】 鎖定 App 出現卡頓的時刻,打印出對應的代碼調用堆棧;

【自定義】 可以選擇你要監控的選項,包括 FPS、CPU、內存、流量。監控完畢之後,把數據保存到本地,也可以導出來做更加細緻的分析;

【Load 耗時】 Load 函數耗時是 iOS 啓動性能優化中重要的一項,該功能可以打印出所有 Load 函數的耗時,給開發者以參考。

三、視覺工具

【顏色吸管】 方便設計師 UI 捉蟲的時候,查看每一個組件的顏色值是否設置正確;

【組件檢查】 可以抓取任意一個UI控件,查看它們的詳細信息,包括控件名稱、控件位置、背景色、字體顏色、字體大小;

【對齊標尺】 參考 Android 系統自帶測試工具,能夠實時捕獲屏幕座標,並且可以查看組件是否對齊;

【元素邊框線】 繪製出每一個 UI 組件的邊框,對於組件佈局有一定的參考意義。

DoraemonKit如何使用?

iOS 接入文檔

1.cocoapods依賴

 pod 'DoraemonKit/Core', '~> 1.1.4', :configurations => ['Debug']
    pod 'DoraemonKit/WithLogger', '~> 1.1.4', :configurations => ['Debug']
    pod 'DoraemonKit/WithGPS', '~> 1.1.4', :configurations => ['Debug']
    

Core subspec作爲核心,必須引入。

如果你的日誌是基於CocoaLumberjack,那你也可以引入WithLogger subspec。

MockGPS存在一些兼容性問題(絕大部分情況是好的,問題詳見https://github.com/didi/DoraemonKit/issues/35), 如果你的app接入MockGPS存在問題的話,可以不用引入WithGPS subspec。

tip:只在Debug環境中進行集成,不要帶到線上。有一些hook操作會污染線上代碼。

2.使用DoraemonKit內置工具集的接入方式

在App啓動的時候添加一下代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    #ifdef DEBUG
        [[DoraemonManager shareInstance] install];
    #endif
}

通過以上步驟你就可以使用DorameonKit所有的內置工具集合。如果你想把自己與業務相關的一些工具代碼加入到DoraemonKit中做統一管理的話,你可以按照3的步驟來做。

3、添加自定義測試模塊到Doraemon面板中(非必要)

比如我們要在Doraemon面板中添加一個環境切換的功能。

第一步:新建一個類,實現KDDoraemonPluginProtocol協議中的pluginDidLoad方法,該方法就是以後點擊Doraemon工具面板中“環境切換”按鈕觸發的事件。

比如以代駕司機端爲例,點擊按鈕之後會進入環境切換頁面。

@implementation KDDoraemonEnvPlugin
- (void)pluginDidLoad{
    [APP_INTERACOTR.rootNav openURL:@"KDSJ://KDDoraemonSFViewController"];
    [[DoraemonManager shareInstance] hiddenHomeWindow];
}
 @end

第二步:在Doraemon初始化的地方添加第一步中添加的“環境切換”插件

調用DoraemonManager的以下方法:

[[DoraemonManager shareInstance] addPluginWithTitle:@"環境切換" icon:@"doraemon_default" desc:@"用於app內部環境切換功能" pluginName:@"KDDoraemonEnvPlugin" atModule:@"業務專區"];

依次代表 集成到DoraemonKit面板中的標題,圖標,描述,插件名稱,和所屬於的模塊。

比如以代駕司機端爲例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    #ifdef DEBUG
       [self configDoraemonKit];
    #endif
}
//配置Doraemon工具集
- (void)configDoraemonKit{
    [[DoraemonManager shareInstance] addPluginWithTitle:@"環境切換" icon:@"doraemon_default" desc:@"用於app內部環境切換功能" pluginName:@"KDDoraemonEnvPlugin" atModule:@"業務專區"];
    [[DoraemonManager shareInstance] addH5DoorBlock:^(NSString *h5Url) {
        [APP_INTERACOTR.rootNav openURL:@"KDSJ://KDWebViewController" withQuery:@{@"urlString":h5Url}];
    }];
    [[DoraemonManager shareInstance] install];
}

關於Android的接入,可查看此鏈接:

https://github.com/didi/DoraemonKit/blob/master/Doc/android_cn_guide.md

關於該項目的更多信息,可查看GitHub:

https://github.com/didi/DoraemonKit

更多內容,請關注前端之巔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章