MagicBox是一款Android平臺的小工具合集, 性能檢測, 接口請求控制和攔截等功能集合. 建議在Debug和測試階段使用.
功能清單
-
小工具: 提供各種小工具輔助開發測試, 並支持外部擴展.
功能 描述 APP信息 打開展示APP詳細信息, 支持外部擴展 設備信息 打開展示設備詳細信息 儀表盤 打開或關閉系統彈窗, 用於實時展示性能和網絡數據 Crash信息 直接在APP內查看Crash信息, 也支持導出到SD卡 沙盒查看 查看APP沙盒空間, 支持文本預覽和導出到SD卡 … 支持外部動態擴展 -
性能監控: 提供開關性能相關數據的監控, 實時性能數據可以展示在儀表盤上或直接回調.
功能 描述 CPU 開關監控APP的實時CPU使用率 內存 開關監控APP的實時內存使用量 幀率 開關監控APP的實時渲染幀率 -
網絡輔助(支持3.x okhttp): 支持開關模擬各種網絡情況和攔截請求日誌.
功能 描述 弱網模擬 接口請求的速度默認限制在1kb/s, 可以外部配置 超時模擬 接口請求默認等待5s後, 返回400. 超時時間可配置 404模擬 接口直接返回404 攔截日誌 攔截請求, 彙總基本屬性和耗時等信息 -
TODO
TODO 描述 組件加載耗時監控 插樁監控頁面, 服務等組件的加載耗時 … …
額外開銷
額外開銷 | 描述 |
---|---|
線程1個 | 開啓性能監控後, 啓動線程處理數據 |
線程1個 | 預覽沙盒文件時IO文件 |
網絡攔截器2個 | 開啓網絡功能後, 用來模擬和攔截接口請求 |
系統彈窗權限 | 需要申請系統彈窗權限, 來進行數據可視化 |
存儲權限 | 導出沙盒或Crash文件到SD卡時申請 |
包體積 | 增大40k左右 |
Gradle接入
根項目build.gradle
中引入mavenCentral.
allprojects {
repositories {
...
mavenCentral()
}
}
Modulebuild.gradle
中接入Magic-Box.
dependencies {
compile 'com.github.hijesse:magic-box:1.0.0'
}
如何使用
-
初始化
-
初始化Magic-Box. 建議在Application中初始化MagicBox. SDK的初始化並沒有做任何耗時操作, 只是全局緩存一下應用的context並標記是否要打印內部log.
MagicBox.init(getApplication(), true);
-
初始化網絡攔截器
SDK提供兩種方式添加攔截器並開啓網絡相關總開關:
使用SDK傳入OKHttpClient自動添加攔截器並打開總開關.
// 分別添加網絡模擬攔截器和請求日誌攔截器 okHttpClient = MagicBox.getNetworkInfoManager().setSimulationEnable(true, okHttpClient); okHttpClient = MagicBox.getNetworkInfoManager().setRequestLoggerEnable(true, okHttpClient);
或者使用OKHttp的builder手動添加網絡攔截器.
// 分別添加網絡模擬和請求日誌攔截器 builder.addNetworkInterceptor(new SimulateNetworkInterceptor()) builder.addInterceptor(new RequestLoggerInterceptor())
-
擴展APP信息展示
List<MagicBoxDeviceAppInfoData> appData = new ArrayList<>(); appData.add(new MagicBoxDeviceAppInfoData("渠道", "demo")); // 設置app信息的擴展數據 MagicBox.setAppInfoExternalData(appData);
-
-
啓動魔盒主頁
-
啓動默認魔盒主頁
/** * 啓動默認魔盒主頁 * * @param context context * @param title 標題 */ MagicBoxActivity.start(context, title)
-
啓動支持擴展小工具的魔盒主頁, 並回調擴展小工具的點擊事件.
/** * 啓動魔盒主頁, 支持小工具擴展, 並監聽回調 * <p> * 回調以{@link #BASE_RESULT_CODE} 爲基數 * 加上tools數組下標爲result code, 進行回調 * * @param context context * @param title 標題 * @param requestCode 請求code * @param tools 擴展小工具 */ MagicBoxActivity.startActivityWithResult(activity, title, REQUEST_MAGIC_BOX, new String[]{"擴展1", "擴展2"});
以擴展的方式啓動魔盒主頁後, 在啓動父級頁面的
onActivityResult
裏處理擴展的點擊回調.if (requestCode != REQUEST_MAGIC_BOX) { return; } // 以BASE_RESULT_CODE 基數 + 擴展下標 if (resultCode == MagicBoxActivity.BASE_RESULT_CODE) { toast("擴展1"); } else if (resultCode == MagicBoxActivity.BASE_RESULT_CODE + 1) { toast("擴展2"); }
-
-
獨立開關
-
開關性能監控, 並監聽性能數據回調. 將在儀表盤上展示的數據直接回調本地.
// 開啓性能監控 MagicBox.getPerformanceManager().startMonitorCPU(); MagicBox.getPerformanceManager().startMonitorMem(); MagicBox.getPerformanceManager().startMonitorFPS();
// 關閉性能監控 MagicBox.getPerformanceManager().stopMonitorCPU(); MagicBox.getPerformanceManager().stopMonitorMem(); MagicBox.getPerformanceManager().stopMonitorFPS();
// 註冊性能數據回調 MagicBox.registerDashboardData(listener); // 非使用場景一定要註銷, 避免內存泄露 MagicBox.unregisterDashboardData(listener); /** * Magic Box所有數據監聽. UI 線程回調. */ public interface OnDashboardDataListener { /** * 性能相關數據回調 * * @param performanceData 性能 */ void onPerformance(PerformanceData performanceData); /** * 網絡請求攔截日誌回調 * * @param loggerData 攔截日誌 */ void onHttpRequestLog(RequestLoggerData loggerData); }
-
開啓Crash攔截, 建議在Application中初始化MagicBox後進行設置.
// java crash攔截 MagicBox.getJavaUncaughtCrashManager().enable(getApplication());
開啓Crash攔截, 在APP中發生Crash後SDK會將Crash信息保存至沙盒緩存文件中. 可以使用小工具直接文本查看或導出到SD卡.
-
開關網絡模擬
// 開啓網絡模擬總開關 MagicBox.getNetworkInfoManager().setSimulationEnable(true) // 設置模擬網絡超時, 並設置超時時間爲10s MagicBox.getNetworkInfoManager().setSimulationType(NetworkInfoManager.SIMULATION_TYPE_TIMEOUT); MagicBox.getNetworkInfoManager().setSimulationTimeout(10000); // 模擬404 MagicBox.getNetworkInfoManager().setSimulationType(NetworkInfoManager.SIMULATION_TYPE_BLOCK); // 設置模擬限速, 並設置限速爲10k/s MagicBox.getNetworkInfoManager().setSimulationType(NetworkInfoManager.SIMULATION_TYPE_SPEED_LIMIT); MagicBox.getNetworkInfoManager().setSimulationRequestSpeed(10);
-
開關網絡攔截
// 開啓網絡攔截總開關 MagicBox.getNetworkInfoManager().setRequestLoggerEnable(true); // 設置網絡攔截域名白名單 MagicBox.getNetworkInfoManager().setRequestLoggerHostWhiteList(new String[]{"www.github.com"});
-
源碼倉庫
https://github.com/HiJesse/Magic-Box
轉載請註明出處:https://blog.csdn.net/l2show/article/details/106757328