滴滴開源 DoraemonKit:一款像哆啦A夢般全能的App研發工具

出品 | 滴滴技術android


前言:DoraemonKit /'dɔ:ra:'emɔn/,簡稱DoKit,中文名哆啦A夢,意味着可以像哆啦A夢同樣提供給他的主人各類各樣的工具。是一款功能齊全的客戶端( iOS 、Android )研發助手。git

—————
github


▎開發背景

每個稍微有點規模的 App,總會自帶一些線下的測試功能代碼,好比環境切換功能、幀率查看功能等等,這些功能的切換入口每每放在各式各樣的入口中,好比一些特殊的手勢,雙擊 statusBar,雙擊某一個功能區塊,或者新建一個 keyWindow 始終至於 App 最上方等等,並且每個 App 裏面的線下附帶功能模塊不少是類似的,好比幀率查看、內存和 CPU 監控等等,可是如今基本上都是每一個 App 都是本身實現了一份。
性能優化

咱們內部之前在代駕司機端積累了一些工具,方便咱們開發和測試使用,後來咱們組承接了更多的 app 的開發,卻發現這個工具卻不能移植到別的 app 上來使用,當時的實現方案仍是比較與業務緊密耦合在一塊兒的,沒法達到通用性。因此我就想,這些工具哪一些能夠提取出來做爲通用工具,哪一些做爲業務工具。把通用性的組件工具做爲一個SDK,讓每個 app 都能使用,並且能夠提供一種的可擴展的方式支持業務工具也能夠加進來。最終造成了 Doraemonkit 這個工具集合。
bash

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

▎簡單總結

1. DoraemonKit 可以快速讓你的業務測試代碼可以在這裏統一管理,統一收口;
ide

2. DoraemonKit 內置不少經常使用的工具,避免重複實現,一次接入,你將會擁有強大的工具集合。
函數

▎效果演示


△ DoKit 首頁效果演示
工具

▎內置功能模塊

▎經常使用工具

1. App 信息查看佈局

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

2. 沙盒瀏覽

App 內部文件瀏覽的功能,支持刪除和預覽, 而且能經過 AirDrop 或者其餘分享方式上傳到 PC 中,進行更加細緻的操做;

3. MockGPS

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

3. H5任意門

開發測試同窗能夠快速輸入 H5 頁面地址,查看該頁面效果;

4. Crash查看

方便本地打印出出現 Crash 的堆棧;

5. 子線程UI

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

6. 清除本地數據

一鍵刪除沙盒中全部數據;

7. NSLog

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

8. Lumberjack

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

 ▎性能檢測

1. 幀率

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

2. CPU

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

3. 內存

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

3. 流量

攔截 App 內部流量信息,提供波形圖展現、流量概要展現、流量列表展現、流量篩選、流量詳情,對流量信息統一攔截,成爲咱們 App 中自帶的 「Charles」;

4. 卡頓

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

5. 自定義

能夠選擇你要監控的選項,包括 FPS、CPU、內存、流量。監控完畢以後,把數據保存到本地,也能夠導出來作更加細緻的分析;

6. Load 耗時

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

▎視覺工具

1. 顏色吸管

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

2. 組件檢查

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

3. 對齊標尺

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

4. 元素邊框線

繪製出每個 UI 組件的邊框,對於組件佈局有必定的參考意義。

▎怎樣使用

▎iOS端接入指南

1.1. cocoapods依賴

1    pod 'DoraemonKit/Core', '~> 1.1.7', :configurations => ['Debug']
2    pod 'DoraemonKit/WithLogger', '~> 1.1.7', :configurations => ['Debug']
3    pod 'DoraemonKit/WithGPS', '~> 1.1.7', :configurations => ['Debug']
4    pod 'DoraemonKit/WithLoad', '~> 1.1.7', :configurations => ['Debug']
複製代碼

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

若是你的日誌是基於 CocoaLumberjack,那你也能夠引入 WithLogger subspec。

MockGPS 存在一些兼容性問題(絕大部分狀況是好的,問題詳情請點擊此處瞭解), 若是你的 app 接入 MockGPS 存在問題的話,能夠不用引入 WithGPS subspec。

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

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

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

1#ifdef DEBUG
2#import <DoraemonKit/DoraemonManager.h>
3#endif
4
5- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
6    #ifdef DEBUG
7        [[DoraemonManager shareInstance] install];
8    #endif
9}
複製代碼

經過以上步驟你就可使用DorameonKit全部的內置工具集合。若是你想把本身與業務相關的一些工具代碼加入到DoraemonKit中作統一管理的話,你能夠按照3的步驟來作。

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

詳情點擊此處瞭解

▎Android端接入指南

2.一、Gradle依賴

1dependencies {
2    ...
3    debugImplementation 'com.didichuxing.doraemonkit:doraemonkit:1.1.3'
4    releaseImplementation 'com.didichuxing.doraemonkit:doraemonkit-no-op:1.1.3'
5    ...
6}
複製代碼

2.二、初始化

在App啓動的時候進行初始化。

1@Override
 2public void onCreate() {
 3    ...
 4    DoraemonKit.install(application)
 5
 6    // H5任意門功能須要,非必須
 7    DoraemonKit.setWebDoorCallback(new WebDoorManager.WebDoorCallback() {
 8    @Override
 9    public void overrideUrlLoading(Context context, String s) {
10        // 使用本身的H5容器打開這個連接
11    }
12    ...
13} 
複製代碼

其餘更多自定義的操做詳見: 點擊此處瞭解

源碼地址:Github項目頁

▎END

相關文章
相關標籤/搜索