gitextract_2kvtefj7/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── -dokit-------------.md │ └── issue_template.md ├── .gitignore ├── Android/ │ ├── .editorconfig │ ├── .gitignore │ ├── README.md │ ├── app/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── doraemonkit.gradle │ │ ├── keystore/ │ │ │ └── test.keystore │ │ ├── libs/ │ │ │ └── BaiduLBS_Android.jar │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemondemo/ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── debug/ │ │ │ └── java/ │ │ │ ├── AndroidManifest.xml │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemondemo/ │ │ │ ├── AopApp.java │ │ │ ├── App.kt │ │ │ └── amap/ │ │ │ ├── AMapUtil.java │ │ │ ├── ChString.java │ │ │ ├── DrivingRouteOverLay.java │ │ │ ├── FloatGpsMockRouteKitView.java │ │ │ ├── FloatGpsPresetMockKit.java │ │ │ ├── FloatGpsPresetMockKitView.java │ │ │ ├── RouteOverlay.java │ │ │ └── mockroute/ │ │ │ ├── BearingUtils.java │ │ │ ├── LogUtils.java │ │ │ ├── MockGPSTaskData.java │ │ │ └── MockGPSTaskManager.java │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemondemo/ │ │ │ │ ├── AopTest.java │ │ │ │ ├── BaseStatusBarActivity.java │ │ │ │ ├── DataBaseActivity.kt │ │ │ │ ├── EmptyActivity.kt │ │ │ │ ├── MainDoKitActivity.kt │ │ │ │ ├── WebViewSystemActivity.kt │ │ │ │ ├── WebViewX5Activity.kt │ │ │ │ ├── amap/ │ │ │ │ │ ├── AMapRouterFragment.kt │ │ │ │ │ ├── DefaultNaviListener.kt │ │ │ │ │ └── NaviRouteOverlay.kt │ │ │ │ ├── comm/ │ │ │ │ │ ├── CommBaseFragment.kt │ │ │ │ │ ├── CommFragmentActivity.kt │ │ │ │ │ ├── CommLauncher.kt │ │ │ │ │ └── CommViewModel.kt │ │ │ │ ├── db/ │ │ │ │ │ ├── DatabaseHelper.kt │ │ │ │ │ └── PersonDBHelper.java │ │ │ │ ├── dokit/ │ │ │ │ │ ├── BorderDoKitView.java │ │ │ │ │ ├── CustomDokitFragment.kt │ │ │ │ │ ├── DemoDoKitView.kt │ │ │ │ │ ├── DemoKit.kt │ │ │ │ │ ├── SimpleDoKitView.java │ │ │ │ │ ├── TestSimpleDoKitFloatView.kt │ │ │ │ │ ├── TestSimpleDokitFloatViewKit.kt │ │ │ │ │ ├── TestSimpleDokitFragmentKit.kt │ │ │ │ │ └── ViewSetupHelper.java │ │ │ │ ├── mc/ │ │ │ │ │ ├── DoKitButton.kt │ │ │ │ │ ├── DoKitRecycleView.kt │ │ │ │ │ ├── DoKitWebView.kt │ │ │ │ │ ├── FileUtils.java │ │ │ │ │ ├── MCActivity.kt │ │ │ │ │ ├── MyProxyWebView.java │ │ │ │ │ ├── MyTestWebView.java │ │ │ │ │ ├── MyTestWebViewBuilder.java │ │ │ │ │ ├── NetMainActivity.kt │ │ │ │ │ ├── RVAdapter.kt │ │ │ │ │ ├── SlideBar.java │ │ │ │ │ ├── VPAdapter.kt │ │ │ │ │ ├── VpFragment.kt │ │ │ │ │ └── WebViewActivity.kt │ │ │ │ ├── module/ │ │ │ │ │ ├── CrashTest.kt │ │ │ │ │ ├── DoKitItemView.java │ │ │ │ │ ├── MethodCostTest.kt │ │ │ │ │ ├── ModuleActivity.java │ │ │ │ │ ├── ShadowDrawable.java │ │ │ │ │ ├── bigbitmap/ │ │ │ │ │ │ └── BigBitmapActivity.kt │ │ │ │ │ ├── db/ │ │ │ │ │ │ └── DataBaseTest.kt │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── CustomInterceptor.kt │ │ │ │ │ │ ├── FileUploadTest.kt │ │ │ │ │ │ ├── OkHttpMock.kt │ │ │ │ │ │ ├── RetrofitMock.kt │ │ │ │ │ │ └── URLConnectionMock.kt │ │ │ │ │ ├── leak/ │ │ │ │ │ │ └── LeakActivity.kt │ │ │ │ │ └── retrofit/ │ │ │ │ │ ├── GithubService.kt │ │ │ │ │ └── GithubUserInfo.kt │ │ │ │ ├── old/ │ │ │ │ │ ├── BaseActivity.kt │ │ │ │ │ ├── MainAdapter.kt │ │ │ │ │ ├── MainDebugActivityOkhttpV3.kt │ │ │ │ │ ├── MainDebugActivityOkhttpV4.kt │ │ │ │ │ ├── MapActivity.kt │ │ │ │ │ └── MapShowingLocationActivity.kt │ │ │ │ └── test/ │ │ │ │ ├── ScreenRecordingService.java │ │ │ │ ├── ScreenRecordingTest.java │ │ │ │ └── screen/ │ │ │ │ └── ScreenRecordingDoKitView.kt │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── bg_unlock_bar_btn_normal_v5.xml │ │ │ │ ├── bg_unlock_bar_normal_v5.xml │ │ │ │ ├── dk_btn_background.xml │ │ │ │ ├── dk_info_background.xml │ │ │ │ ├── dk_line_divider.xml │ │ │ │ ├── dk_shape_float_view_bg.xml │ │ │ │ └── ic_launcher_background.xml │ │ │ ├── drawable-v24/ │ │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── layout/ │ │ │ │ ├── activity_amap_path.xml │ │ │ │ ├── activity_big_bitmap_mock.xml │ │ │ │ ├── activity_comm.xml │ │ │ │ ├── activity_dokit_main.xml │ │ │ │ ├── activity_empty.xml │ │ │ │ ├── activity_leak.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── activity_map.xml │ │ │ │ ├── activity_mc.xml │ │ │ │ ├── activity_net_main.xml │ │ │ │ ├── activity_normal_webview.xml │ │ │ │ ├── activity_second.xml │ │ │ │ ├── activity_webview.xml │ │ │ │ ├── activity_ws.xml │ │ │ │ ├── activity_x5_webview.xml │ │ │ │ ├── dk_demo.xml │ │ │ │ ├── dk_layout_simple_dokit_float_view.xml │ │ │ │ ├── dk_screen_show_view.xml │ │ │ │ ├── fragment_amap.xml │ │ │ │ ├── fragment_vp.xml │ │ │ │ ├── item_lv.xml │ │ │ │ ├── item_main_rv.xml │ │ │ │ ├── item_rv.xml │ │ │ │ ├── item_sc.xml │ │ │ │ ├── layout_demo_custom.xml │ │ │ │ ├── layout_mock_location_preset.xml │ │ │ │ ├── layout_mock_route.xml │ │ │ │ ├── layout_slidebar.xml │ │ │ │ └── view_dokit_item_view.xml │ │ │ ├── values/ │ │ │ │ ├── atts.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── values-en-rUS/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rCN/ │ │ │ │ └── strings.xml │ │ │ └── xml/ │ │ │ └── network_config.xml │ │ ├── release/ │ │ │ └── java/ │ │ │ ├── AndroidManifest.xml │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemondemo/ │ │ │ └── App.kt │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── didichuxing/ │ │ └── doraemondemo/ │ │ ├── ExampleUnitTest.kt │ │ ├── KotlinBaseUnitTest.kt │ │ ├── KotlinCaseTest.kt │ │ └── TestJava.java │ ├── build.gradle │ ├── buildSrc/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── plugin/ │ │ │ ├── DoKitExt.kt │ │ │ ├── DoKitExtUtil.kt │ │ │ ├── DoKitPlugin.kt │ │ │ ├── DoKitPluginUtil.kt │ │ │ ├── DoKitTransformTaskExecutionListener.kt │ │ │ ├── extension/ │ │ │ │ ├── BigImageExtension.kt │ │ │ │ ├── DoKitExtension.kt │ │ │ │ ├── GpsExtension.kt │ │ │ │ ├── NetworkExtension.kt │ │ │ │ ├── SlowMethodExtension.kt │ │ │ │ └── WebViewExtension.kt │ │ │ ├── processor/ │ │ │ │ ├── DoKitComponentHandler.kt │ │ │ │ └── DoKitPluginConfigProcessor.kt │ │ │ ├── stack_method/ │ │ │ │ ├── MethodStackNode.kt │ │ │ │ └── MethodStackNodeUtil.kt │ │ │ ├── thirdlib/ │ │ │ │ ├── ThirdLibInfo.kt │ │ │ │ └── ThirdLibVariantProcessor.kt │ │ │ └── transform/ │ │ │ ├── DoKitBaseTransform.kt │ │ │ ├── DoKitCommonTransform.kt │ │ │ ├── DoKitCommonTransformV34.kt │ │ │ ├── DoKitDependTransform.kt │ │ │ ├── DoKitDependTransformV34.kt │ │ │ ├── DoKitTransformContext.kt │ │ │ ├── DoKitTransformInvocation.kt │ │ │ ├── asmtransform/ │ │ │ │ ├── BaseDoKitAsmTransformer.kt │ │ │ │ └── DoKitAsmTransformer.kt │ │ │ └── classtransform/ │ │ │ ├── AbsClassTransformer.kt │ │ │ ├── BigImgClassTransformer.kt │ │ │ ├── CommClassTransformer.kt │ │ │ ├── EnterMSClassTransformer.kt │ │ │ ├── GPSAMapClassTransformer.kt │ │ │ ├── GPSBDClassTransformer.kt │ │ │ ├── GPSClassTransformer.kt │ │ │ ├── GPSTencentClassTransformer.kt │ │ │ ├── GSMClassTransformer.kt │ │ │ ├── MSDClassTransformer.kt │ │ │ ├── Okhttp3ClassTransformer.kt │ │ │ ├── ThirdLibsClassTransformer.kt │ │ │ ├── UrlConnectionTransformer.kt │ │ │ └── WebViewClassTransformer.kt │ │ └── resources/ │ │ └── META-INF/ │ │ └── gradle-plugins/ │ │ └── com.didi.dokit.debug.properties │ ├── config.gradle │ ├── dokit/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ ├── androidTest/ │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── ExampleInstrumentedTest.java │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── assets/ │ │ │ │ │ ├── dokit_system_kits.json │ │ │ │ │ ├── h5help/ │ │ │ │ │ │ ├── dokit.js │ │ │ │ │ │ ├── dokit_js_hook.html │ │ │ │ │ │ └── dokit_js_vconsole_hook.html │ │ │ │ │ └── map/ │ │ │ │ │ └── map.html │ │ │ │ ├── cpp/ │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── art.cpp │ │ │ │ │ ├── art.h │ │ │ │ │ └── main.cpp │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── didichuxing/ │ │ │ │ │ └── doraemonkit/ │ │ │ │ │ ├── DebugFileProvider.java │ │ │ │ │ ├── DoKit.kt │ │ │ │ │ ├── DoKitActivityLifecycleCallbacks.kt │ │ │ │ │ ├── DoKitCallBack.kt │ │ │ │ │ ├── DoKitEnv.kt │ │ │ │ │ ├── DoKitFragmentLifecycleCallbacks.kt │ │ │ │ │ ├── DoKitOrientationEventListener.kt │ │ │ │ │ ├── DoKitReal.kt │ │ │ │ │ ├── DoraemonKit.kt │ │ │ │ │ ├── aop/ │ │ │ │ │ │ ├── DokitPluginConfig.java │ │ │ │ │ │ ├── DokitThirdLibInfo.java │ │ │ │ │ │ ├── MethodCostUtil.kt │ │ │ │ │ │ ├── OkHttpHook.java │ │ │ │ │ │ ├── WebViewHook.java │ │ │ │ │ │ ├── bigimg/ │ │ │ │ │ │ │ ├── coil/ │ │ │ │ │ │ │ │ ├── CoilHook.java │ │ │ │ │ │ │ │ └── DokitCoilTransformation.java │ │ │ │ │ │ │ ├── fresco/ │ │ │ │ │ │ │ │ ├── DokitFrescoPostprocessor.java │ │ │ │ │ │ │ │ └── FrescoHook.java │ │ │ │ │ │ │ ├── glide/ │ │ │ │ │ │ │ │ ├── DokitGlideRequestListener.java │ │ │ │ │ │ │ │ ├── DokitGlideTransform.java │ │ │ │ │ │ │ │ ├── GlideHook.java │ │ │ │ │ │ │ │ └── GlideTransformHook.java │ │ │ │ │ │ │ ├── imageloader/ │ │ │ │ │ │ │ │ ├── DokitImageLoadingListener.java │ │ │ │ │ │ │ │ └── ImageLoaderHook.java │ │ │ │ │ │ │ └── picasso/ │ │ │ │ │ │ │ ├── DokitPicassoTransformation.java │ │ │ │ │ │ │ └── PicassoHook.java │ │ │ │ │ │ ├── mc/ │ │ │ │ │ │ │ ├── DoKitListenerHelper.kt │ │ │ │ │ │ │ └── DoKitProxyActivity.kt │ │ │ │ │ │ ├── method_stack/ │ │ │ │ │ │ │ ├── MethodInvokNode.kt │ │ │ │ │ │ │ ├── MethodStackBean.kt │ │ │ │ │ │ │ ├── MethodStackUtil.kt │ │ │ │ │ │ │ └── StaticMethodObject.kt │ │ │ │ │ │ └── urlconnection/ │ │ │ │ │ │ ├── HttpUrlConnectionProxyUtil.java │ │ │ │ │ │ ├── MyTrustManager.java │ │ │ │ │ │ ├── ObsoleteUrlFactory.java │ │ │ │ │ │ └── OkhttpClientUtil.kt │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── AlignRulerConfig.java │ │ │ │ │ │ ├── ColorPickConfig.java │ │ │ │ │ │ ├── CrashCaptureConfig.java │ │ │ │ │ │ ├── DokitMemoryConfig.java │ │ │ │ │ │ ├── DokitSwitchConfig.java │ │ │ │ │ │ ├── FloatIconConfig.java │ │ │ │ │ │ ├── GlobalConfig.java │ │ │ │ │ │ ├── GpsMockConfig.java │ │ │ │ │ │ ├── LayoutBorderConfig.java │ │ │ │ │ │ ├── LogInfoConfig.java │ │ │ │ │ │ └── PerformanceSpInfoConfig.java │ │ │ │ │ ├── constant/ │ │ │ │ │ │ ├── BroadcastAction.java │ │ │ │ │ │ ├── BundleKey.java │ │ │ │ │ │ ├── CachesKey.java │ │ │ │ │ │ ├── DoKitModule.kt │ │ │ │ │ │ ├── FragmentIndex.java │ │ │ │ │ │ ├── PageTag.java │ │ │ │ │ │ ├── RequestCode.java │ │ │ │ │ │ ├── SharedPrefsKey.java │ │ │ │ │ │ └── SpInputType.java │ │ │ │ │ ├── datapick/ │ │ │ │ │ │ ├── DataPickBean.java │ │ │ │ │ │ ├── DataPickManager.java │ │ │ │ │ │ └── DataPickUtils.java │ │ │ │ │ ├── extension/ │ │ │ │ │ │ └── DokitExtension.kt │ │ │ │ │ ├── kit/ │ │ │ │ │ │ ├── AbstractKit.kt │ │ │ │ │ │ ├── Category.java │ │ │ │ │ │ ├── IKit.kt │ │ │ │ │ │ ├── alignruler/ │ │ │ │ │ │ │ ├── AlignLineView.java │ │ │ │ │ │ │ ├── AlignRulerInfoDoKitView.java │ │ │ │ │ │ │ ├── AlignRulerKit.kt │ │ │ │ │ │ │ ├── AlignRulerLineDoKitView.java │ │ │ │ │ │ │ ├── AlignRulerMarkerDoKitView.java │ │ │ │ │ │ │ └── AlignRulerSettingFragment.java │ │ │ │ │ │ ├── blockmonitor/ │ │ │ │ │ │ │ ├── BlockListAdapter.java │ │ │ │ │ │ │ ├── BlockListFragment.java │ │ │ │ │ │ │ ├── BlockMonitorFragment.java │ │ │ │ │ │ │ ├── BlockMonitorKit.kt │ │ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ │ │ └── BlockInfo.java │ │ │ │ │ │ │ └── core/ │ │ │ │ │ │ │ ├── BlockCanaryUtils.java │ │ │ │ │ │ │ ├── BlockMonitorManager.java │ │ │ │ │ │ │ ├── MonitorCore.java │ │ │ │ │ │ │ ├── OnBlockInfoUpdateListener.java │ │ │ │ │ │ │ └── StackSampler.java │ │ │ │ │ │ ├── colorpick/ │ │ │ │ │ │ │ ├── ColorPickConstants.java │ │ │ │ │ │ │ ├── ColorPickManager.java │ │ │ │ │ │ │ ├── ColorPickerDoKitView.java │ │ │ │ │ │ │ ├── ColorPickerInfoDoKitView.java │ │ │ │ │ │ │ ├── ColorPickerKit.kt │ │ │ │ │ │ │ ├── ColorPickerSettingFragment.java │ │ │ │ │ │ │ ├── ColorPickerView.java │ │ │ │ │ │ │ ├── ImageCapture.java │ │ │ │ │ │ │ └── ScreenRecorderService.java │ │ │ │ │ │ ├── connect/ │ │ │ │ │ │ │ ├── ConnectAddress.kt │ │ │ │ │ │ │ ├── ConnectAddressStore.kt │ │ │ │ │ │ │ ├── ConnectConfig.kt │ │ │ │ │ │ │ ├── ConnectListAdapter.kt │ │ │ │ │ │ │ ├── DoKitConnectFragment.kt │ │ │ │ │ │ │ ├── DoKitConnectManager.kt │ │ │ │ │ │ │ ├── DoKitScanActivity.kt │ │ │ │ │ │ │ ├── DoKitStudioConnectKit.kt │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ ├── BytePackage.kt │ │ │ │ │ │ │ │ ├── LoginData.kt │ │ │ │ │ │ │ │ ├── PackageType.kt │ │ │ │ │ │ │ │ └── TextPackage.kt │ │ │ │ │ │ │ ├── parser/ │ │ │ │ │ │ │ │ ├── ByteParser.kt │ │ │ │ │ │ │ │ └── JsonParser.kt │ │ │ │ │ │ │ └── ws/ │ │ │ │ │ │ │ ├── ConnectStatus.kt │ │ │ │ │ │ │ ├── OkHttpWebSocketSession.kt │ │ │ │ │ │ │ ├── OnWebSocketBytesMessageListener.kt │ │ │ │ │ │ │ ├── OnWebSocketCloseListener.kt │ │ │ │ │ │ │ ├── OnWebSocketLoginSuccessListener.kt │ │ │ │ │ │ │ ├── OnWebSocketMessageListener.kt │ │ │ │ │ │ │ ├── OnWebSocketQueueSizeOutListener.kt │ │ │ │ │ │ │ ├── OnWebSocketReConnectListener.kt │ │ │ │ │ │ │ ├── OnWebSocketStatusChangeListener.kt │ │ │ │ │ │ │ ├── OnWebSocketTextPackageListener.kt │ │ │ │ │ │ │ ├── WebSocketClient.kt │ │ │ │ │ │ │ ├── WebSocketSession.kt │ │ │ │ │ │ │ └── WsLog.kt │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ ├── AbsDoKitFragment.kt │ │ │ │ │ │ │ ├── AbsDoKitView.kt │ │ │ │ │ │ │ ├── AbsDoKitViewManager.kt │ │ │ │ │ │ │ ├── ActivityLifecycleStatusInfo.kt │ │ │ │ │ │ │ ├── BaseActivity.kt │ │ │ │ │ │ │ ├── BaseFragment.kt │ │ │ │ │ │ │ ├── DoKitFrameLayout.java │ │ │ │ │ │ │ ├── DoKitIntent.kt │ │ │ │ │ │ │ ├── DoKitKeyEvent.kt │ │ │ │ │ │ │ ├── DoKitLifecycleInterface.kt │ │ │ │ │ │ │ ├── DoKitManager.kt │ │ │ │ │ │ │ ├── DoKitServiceEnum.kt │ │ │ │ │ │ │ ├── DoKitServiceManager.kt │ │ │ │ │ │ │ ├── DoKitView.java │ │ │ │ │ │ │ ├── DoKitViewInfo.kt │ │ │ │ │ │ │ ├── DoKitViewInterface.java │ │ │ │ │ │ │ ├── DoKitViewLayoutParams.java │ │ │ │ │ │ │ ├── DoKitViewManager.kt │ │ │ │ │ │ │ ├── DoKitViewManagerInterface.kt │ │ │ │ │ │ │ ├── DokitAbility.kt │ │ │ │ │ │ │ ├── GlobalSingleDoKitViewInfo.kt │ │ │ │ │ │ │ ├── LastDoKitViewPosInfo.java │ │ │ │ │ │ │ ├── McClientProcessor.kt │ │ │ │ │ │ │ ├── NewBaseActivity.kt │ │ │ │ │ │ │ ├── NormalDoKitViewManager.kt │ │ │ │ │ │ │ ├── SettingItem.java │ │ │ │ │ │ │ ├── SettingItemAdapter.java │ │ │ │ │ │ │ ├── SimpleDoKitLauncher.kt │ │ │ │ │ │ │ ├── SystemDoKitViewManager.kt │ │ │ │ │ │ │ ├── TouchProxy.java │ │ │ │ │ │ │ ├── TranslucentActivity.java │ │ │ │ │ │ │ └── UniversalActivity.kt │ │ │ │ │ │ ├── crash/ │ │ │ │ │ │ │ ├── CrashCaptureKit.kt │ │ │ │ │ │ │ ├── CrashCaptureMainFragment.java │ │ │ │ │ │ │ ├── CrashCaptureManager.java │ │ │ │ │ │ │ ├── CrashHistoryAdapter.java │ │ │ │ │ │ │ └── CrashInfo.java │ │ │ │ │ │ ├── dataclean/ │ │ │ │ │ │ │ ├── DataCleanFragment.kt │ │ │ │ │ │ │ └── DataCleanKit.kt │ │ │ │ │ │ ├── dbdebug/ │ │ │ │ │ │ │ ├── DbDebugFragment.java │ │ │ │ │ │ │ └── DbDebugKit.kt │ │ │ │ │ │ ├── dokitforweb/ │ │ │ │ │ │ │ ├── DoKitForWebJsInjectFragment.kt │ │ │ │ │ │ │ ├── DokitForWeb.kt │ │ │ │ │ │ │ └── DokitForWebKit.kt │ │ │ │ │ │ ├── fileexplorer/ │ │ │ │ │ │ │ ├── DBListAdapter.java │ │ │ │ │ │ │ ├── DatabaseDetailFragment.java │ │ │ │ │ │ │ ├── FileExplorerChooseDialog.java │ │ │ │ │ │ │ ├── FileExplorerFragment.java │ │ │ │ │ │ │ ├── FileExplorerKit.kt │ │ │ │ │ │ │ ├── FileInfo.java │ │ │ │ │ │ │ ├── FileInfoAdapter.java │ │ │ │ │ │ │ ├── ImageDetailFragment.java │ │ │ │ │ │ │ ├── SpAdapter.java │ │ │ │ │ │ │ ├── SpBean.java │ │ │ │ │ │ │ ├── SpFragment.java │ │ │ │ │ │ │ ├── SpInputView.java │ │ │ │ │ │ │ ├── TextContentAdapter.java │ │ │ │ │ │ │ ├── TextDetailFragment.java │ │ │ │ │ │ │ └── VideoPlayFragment.java │ │ │ │ │ │ ├── h5_help/ │ │ │ │ │ │ │ ├── DoKitJSI.kt │ │ │ │ │ │ │ ├── DoKitWebViewClient.kt │ │ │ │ │ │ │ ├── DoKitX5WebViewClient.kt │ │ │ │ │ │ │ ├── H5DoKitView.kt │ │ │ │ │ │ │ ├── H5Kit.kt │ │ │ │ │ │ │ ├── JsHookDataManager.kt │ │ │ │ │ │ │ ├── JsHttpUtil.kt │ │ │ │ │ │ │ ├── LocalStorageAdapter.kt │ │ │ │ │ │ │ ├── ProxyWebViewClient.kt │ │ │ │ │ │ │ ├── ProxyX5WebViewClient.kt │ │ │ │ │ │ │ ├── X5WebViewUtil.kt │ │ │ │ │ │ │ └── bean/ │ │ │ │ │ │ │ ├── JsRequestBean.kt │ │ │ │ │ │ │ └── StorageBean.kt │ │ │ │ │ │ ├── health/ │ │ │ │ │ │ │ ├── AbsCountDownDoKitView.kt │ │ │ │ │ │ │ ├── AppHealthInfoUtil.java │ │ │ │ │ │ │ ├── CountDownDoKitView.kt │ │ │ │ │ │ │ ├── HealthFragment.java │ │ │ │ │ │ │ ├── HealthFragmentChild0.java │ │ │ │ │ │ │ ├── HealthFragmentChild1.java │ │ │ │ │ │ │ ├── HealthKit.kt │ │ │ │ │ │ │ ├── UploadAppHealthCallback.java │ │ │ │ │ │ │ ├── UserInfoDialogProvider.java │ │ │ │ │ │ │ └── model/ │ │ │ │ │ │ │ └── AppHealthInfo.java │ │ │ │ │ │ ├── largepicture/ │ │ │ │ │ │ │ ├── LargeImageInfo.java │ │ │ │ │ │ │ ├── LargeImageListAdapter.java │ │ │ │ │ │ │ ├── LargeImageListFragment.java │ │ │ │ │ │ │ ├── LargePictureFragment.java │ │ │ │ │ │ │ ├── LargePictureItemAdapter.java │ │ │ │ │ │ │ ├── LargePictureKit.kt │ │ │ │ │ │ │ └── LargePictureManager.java │ │ │ │ │ │ ├── layoutborder/ │ │ │ │ │ │ │ ├── LayoutBorderKit.kt │ │ │ │ │ │ │ ├── LayoutBorderManager.java │ │ │ │ │ │ │ ├── LayoutBorderSettingFragment.java │ │ │ │ │ │ │ ├── LayoutLevelDoKitView.java │ │ │ │ │ │ │ ├── ScalpelFrameLayout.java │ │ │ │ │ │ │ ├── ViewBorderDrawable.java │ │ │ │ │ │ │ └── ViewBorderFrameLayout.java │ │ │ │ │ │ ├── loginfo/ │ │ │ │ │ │ │ ├── LogExportDialog.java │ │ │ │ │ │ │ ├── LogInfoDoKitView.java │ │ │ │ │ │ │ ├── LogInfoKit.kt │ │ │ │ │ │ │ ├── LogInfoManager.java │ │ │ │ │ │ │ ├── LogInfoSettingFragment.java │ │ │ │ │ │ │ ├── LogItemAdapter.java │ │ │ │ │ │ │ ├── LogLine.java │ │ │ │ │ │ │ ├── helper/ │ │ │ │ │ │ │ │ ├── LogcatHelper.java │ │ │ │ │ │ │ │ └── RuntimeHelper.java │ │ │ │ │ │ │ ├── reader/ │ │ │ │ │ │ │ │ ├── AbsLogcatReader.java │ │ │ │ │ │ │ │ ├── LogcatReader.java │ │ │ │ │ │ │ │ ├── LogcatReaderLoader.java │ │ │ │ │ │ │ │ ├── ScrubberUtils.java │ │ │ │ │ │ │ │ └── SingleLogcatReader.java │ │ │ │ │ │ │ └── util/ │ │ │ │ │ │ │ ├── ArrayUtil.java │ │ │ │ │ │ │ ├── SearchCriteria.java │ │ │ │ │ │ │ ├── StringUtil.java │ │ │ │ │ │ │ └── TagColorUtil.java │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ └── MainIconDoKitView.kt │ │ │ │ │ │ ├── methodtrace/ │ │ │ │ │ │ │ ├── AppHealthMethodCostBean.java │ │ │ │ │ │ │ ├── AppHealthMethodCostBeanWrap.java │ │ │ │ │ │ │ └── MethodCostKit.kt │ │ │ │ │ │ ├── network/ │ │ │ │ │ │ │ ├── MockKit.kt │ │ │ │ │ │ │ ├── NetworkKit.kt │ │ │ │ │ │ │ ├── NetworkManager.java │ │ │ │ │ │ │ ├── OnNetworkInfoUpdateListener.java │ │ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ │ │ ├── MockApiResponseBean.java │ │ │ │ │ │ │ │ ├── MockInterceptTitleBean.java │ │ │ │ │ │ │ │ ├── MockTemplateTitleBean.java │ │ │ │ │ │ │ │ ├── NetflowInfo.java │ │ │ │ │ │ │ │ ├── NetworkRecord.java │ │ │ │ │ │ │ │ ├── Request.java │ │ │ │ │ │ │ │ ├── Response.java │ │ │ │ │ │ │ │ └── WhiteHostBean.java │ │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ │ ├── CommonHeaders.java │ │ │ │ │ │ │ │ ├── CommonInspectorRequest.java │ │ │ │ │ │ │ │ ├── CommonInspectorResponse.java │ │ │ │ │ │ │ │ └── NetworkPrinterHelper.java │ │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ │ ├── DefaultResponseHandler.java │ │ │ │ │ │ │ │ ├── MimeMatcher.java │ │ │ │ │ │ │ │ ├── NetworkInterpreter.java │ │ │ │ │ │ │ │ ├── RequestBodyHelper.java │ │ │ │ │ │ │ │ ├── ResourceType.java │ │ │ │ │ │ │ │ ├── ResourceTypeHelper.java │ │ │ │ │ │ │ │ └── ResponseHandler.java │ │ │ │ │ │ │ ├── okhttp/ │ │ │ │ │ │ │ │ ├── ForwardingResponseBody.java │ │ │ │ │ │ │ │ ├── InterceptorUtil.java │ │ │ │ │ │ │ │ ├── OkHttpInspectorRequest.java │ │ │ │ │ │ │ │ ├── OkHttpInspectorResponse.java │ │ │ │ │ │ │ │ └── interceptor/ │ │ │ │ │ │ │ │ ├── AbsDoKitInterceptor.kt │ │ │ │ │ │ │ │ ├── DokitCapInterceptor.java │ │ │ │ │ │ │ │ ├── DokitExtInterceptor.kt │ │ │ │ │ │ │ │ ├── DokitLargePicInterceptor.java │ │ │ │ │ │ │ │ ├── DokitMockInterceptor.java │ │ │ │ │ │ │ │ └── DokitWeakNetworkInterceptor.java │ │ │ │ │ │ │ ├── room_db/ │ │ │ │ │ │ │ │ ├── AbsMockApiBean.java │ │ │ │ │ │ │ │ ├── DokitDatabase.java │ │ │ │ │ │ │ │ ├── DokitDbManager.java │ │ │ │ │ │ │ │ ├── MockApiDao.java │ │ │ │ │ │ │ │ ├── MockInterceptApiBean.java │ │ │ │ │ │ │ │ └── MockTemplateApiBean.java │ │ │ │ │ │ │ ├── stream/ │ │ │ │ │ │ │ │ ├── GunzippingOutputStream.java │ │ │ │ │ │ │ │ ├── HttpOutputStreamProxy.java │ │ │ │ │ │ │ │ ├── InputStreamProxy.java │ │ │ │ │ │ │ │ └── OutputStreamProxy.java │ │ │ │ │ │ │ ├── ui/ │ │ │ │ │ │ │ │ ├── InterceptDetailNodeProvider.java │ │ │ │ │ │ │ │ ├── InterceptMockAdapter.java │ │ │ │ │ │ │ │ ├── InterceptTitleNodeProvider.java │ │ │ │ │ │ │ │ ├── ListDropDownAdapter.java │ │ │ │ │ │ │ │ ├── MockTemplatePreviewFragment.java │ │ │ │ │ │ │ │ ├── NetWorkMainPagerAdapter.java │ │ │ │ │ │ │ │ ├── NetWorkMainPagerFragment.java │ │ │ │ │ │ │ │ ├── NetWorkMockFragment.java │ │ │ │ │ │ │ │ ├── NetWorkMonitorFragment.java │ │ │ │ │ │ │ │ ├── NetWorkSummaryView.java │ │ │ │ │ │ │ │ ├── NetworkDetailFragment.java │ │ │ │ │ │ │ │ ├── NetworkDetailView.java │ │ │ │ │ │ │ │ ├── NetworkListAdapter.java │ │ │ │ │ │ │ │ ├── NetworkListView.java │ │ │ │ │ │ │ │ ├── NetworkPagerAdapter.java │ │ │ │ │ │ │ │ ├── TemplateDetailNodeProvider.java │ │ │ │ │ │ │ │ ├── TemplateMockAdapter.java │ │ │ │ │ │ │ │ ├── TemplateTitleNodeProvider.java │ │ │ │ │ │ │ │ └── WhiteHostAdapter.java │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── ByteUtil.java │ │ │ │ │ │ │ ├── CostTimeUtil.java │ │ │ │ │ │ │ ├── ExceptionUtil.java │ │ │ │ │ │ │ ├── OkHttpResponse.kt │ │ │ │ │ │ │ ├── StreamUtil.java │ │ │ │ │ │ │ └── Utf8Charset.java │ │ │ │ │ │ ├── parameter/ │ │ │ │ │ │ │ ├── AbsParameterFragment.java │ │ │ │ │ │ │ ├── cpu/ │ │ │ │ │ │ │ │ ├── CpuKit.kt │ │ │ │ │ │ │ │ └── CpuMainPageFragment.java │ │ │ │ │ │ │ ├── frameInfo/ │ │ │ │ │ │ │ │ ├── FrameInfoFragment.java │ │ │ │ │ │ │ │ └── FrameInfoKit.kt │ │ │ │ │ │ │ └── ram/ │ │ │ │ │ │ │ ├── RamKit.kt │ │ │ │ │ │ │ └── RamMainPageFragment.java │ │ │ │ │ │ ├── performance/ │ │ │ │ │ │ │ ├── PerformanceCloseDoKitView.java │ │ │ │ │ │ │ ├── PerformanceCloseListener.java │ │ │ │ │ │ │ ├── PerformanceData.java │ │ │ │ │ │ │ ├── PerformanceDataAdapter.java │ │ │ │ │ │ │ ├── PerformanceDataManager.java │ │ │ │ │ │ │ ├── PerformanceDoKitView.java │ │ │ │ │ │ │ ├── PerformanceDokitViewManager.java │ │ │ │ │ │ │ ├── PerformanceFragment.java │ │ │ │ │ │ │ ├── PerformanceFragmentCloseListener.java │ │ │ │ │ │ │ ├── PolyLineAdapter.java │ │ │ │ │ │ │ ├── PolyLineItemView.java │ │ │ │ │ │ │ ├── datasource/ │ │ │ │ │ │ │ │ ├── CpuDataSource.java │ │ │ │ │ │ │ │ ├── DataSourceFactory.java │ │ │ │ │ │ │ │ ├── DefaultDataSource.java │ │ │ │ │ │ │ │ ├── FpsDataSource.java │ │ │ │ │ │ │ │ ├── IDataSource.java │ │ │ │ │ │ │ │ ├── NetworkDataSource.java │ │ │ │ │ │ │ │ └── RamDataSource.java │ │ │ │ │ │ │ ├── performanceViewInfo.java │ │ │ │ │ │ │ └── widget/ │ │ │ │ │ │ │ ├── CardiogramView.java │ │ │ │ │ │ │ ├── LineChart.java │ │ │ │ │ │ │ ├── LineData.java │ │ │ │ │ │ │ └── LineRender.java │ │ │ │ │ │ ├── sysinfo/ │ │ │ │ │ │ │ ├── DevelopmentPageKit.kt │ │ │ │ │ │ │ ├── LocalLangKit.kt │ │ │ │ │ │ │ ├── ServiceRunningKit.kt │ │ │ │ │ │ │ ├── SysInfoFragment.java │ │ │ │ │ │ │ ├── SysInfoItem.java │ │ │ │ │ │ │ ├── SysInfoItemAdapter.java │ │ │ │ │ │ │ ├── SysInfoKit.kt │ │ │ │ │ │ │ ├── ThirdLibInfoFragment.java │ │ │ │ │ │ │ ├── ThirdLibInfoItemAdapter.java │ │ │ │ │ │ │ ├── ThirdLibInfoKit.kt │ │ │ │ │ │ │ └── TitleItem.java │ │ │ │ │ │ ├── timecounter/ │ │ │ │ │ │ │ ├── AppStartInfoFragment.java │ │ │ │ │ │ │ ├── TimeCounterDoKitView.java │ │ │ │ │ │ │ ├── TimeCounterFragment.java │ │ │ │ │ │ │ ├── TimeCounterKit.kt │ │ │ │ │ │ │ ├── TimeCounterListAdapter.java │ │ │ │ │ │ │ ├── TimeCounterListFragment.java │ │ │ │ │ │ │ ├── TimeCounterManager.java │ │ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ │ │ └── CounterInfo.java │ │ │ │ │ │ │ ├── counter/ │ │ │ │ │ │ │ │ ├── ActivityCounter.java │ │ │ │ │ │ │ │ └── AppCounter.java │ │ │ │ │ │ │ └── instrumentation/ │ │ │ │ │ │ │ ├── HandlerHooker.java │ │ │ │ │ │ │ └── ProxyHandlerCallback.java │ │ │ │ │ │ ├── toolpanel/ │ │ │ │ │ │ │ ├── ConfirmDialogProvider.kt │ │ │ │ │ │ │ ├── DokitManagerAdapter.kt │ │ │ │ │ │ │ ├── DokitManagerFragment.kt │ │ │ │ │ │ │ ├── DokitMoreAdapter.kt │ │ │ │ │ │ │ ├── DokitMoreFragment.kt │ │ │ │ │ │ │ ├── KitBeans.kt │ │ │ │ │ │ │ ├── KitWrapItem.kt │ │ │ │ │ │ │ ├── TipDialogProvider.kt │ │ │ │ │ │ │ ├── ToolPanelAdapter.kt │ │ │ │ │ │ │ ├── ToolPanelDoKitView.kt │ │ │ │ │ │ │ ├── ToolPanelUtil.kt │ │ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ │ │ └── MorePageGroupBean.java │ │ │ │ │ │ │ └── decoration/ │ │ │ │ │ │ │ ├── FlexibleDividerDecoration.java │ │ │ │ │ │ │ ├── HorizontalDividerItemDecoration.java │ │ │ │ │ │ │ └── VerticalDividerItemDecoration.java │ │ │ │ │ │ ├── uiperformance/ │ │ │ │ │ │ │ ├── UIPerformanceDisplayDoKitView.java │ │ │ │ │ │ │ ├── UIPerformanceInfoDoKitView.java │ │ │ │ │ │ │ ├── UIPerformanceKit.kt │ │ │ │ │ │ │ ├── UIPerformanceManager.java │ │ │ │ │ │ │ └── UIPerformanceUtil.java │ │ │ │ │ │ ├── viewcheck/ │ │ │ │ │ │ │ ├── AimCircleView.java │ │ │ │ │ │ │ ├── DebugAccessibilityService.java │ │ │ │ │ │ │ ├── LayoutBorderView.java │ │ │ │ │ │ │ ├── ViewCheckDoKitView.java │ │ │ │ │ │ │ ├── ViewCheckDrawDoKitView.java │ │ │ │ │ │ │ ├── ViewCheckInfoDoKitView.java │ │ │ │ │ │ │ └── ViewCheckerKit.kt │ │ │ │ │ │ ├── weaknetwork/ │ │ │ │ │ │ │ ├── NetWokDoKitView.java │ │ │ │ │ │ │ ├── SpeedLimitRequestBody.java │ │ │ │ │ │ │ ├── SpeedLimitResponseBody.java │ │ │ │ │ │ │ ├── WeakNetworkFragment.java │ │ │ │ │ │ │ ├── WeakNetworkKit.kt │ │ │ │ │ │ │ └── WeakNetworkManager.java │ │ │ │ │ │ ├── webdoor/ │ │ │ │ │ │ │ ├── WebDoorDefaultFragment.java │ │ │ │ │ │ │ ├── WebDoorFragment.java │ │ │ │ │ │ │ ├── WebDoorHistoryAdapter.java │ │ │ │ │ │ │ ├── WebDoorKit.kt │ │ │ │ │ │ │ └── WebDoorManager.java │ │ │ │ │ │ └── webview/ │ │ │ │ │ │ ├── CommWebViewFragment.kt │ │ │ │ │ │ ├── OnWebViewTitleChangeCallBack.java │ │ │ │ │ │ └── WebViewManager.kt │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── LatLng.java │ │ │ │ │ │ └── ViewInfo.java │ │ │ │ │ ├── picasso/ │ │ │ │ │ │ ├── Action.java │ │ │ │ │ │ ├── AssetRequestHandler.java │ │ │ │ │ │ ├── BitmapHunter.java │ │ │ │ │ │ ├── Cache.java │ │ │ │ │ │ ├── Callback.java │ │ │ │ │ │ ├── ContactsPhotoRequestHandler.java │ │ │ │ │ │ ├── ContentStreamRequestHandler.java │ │ │ │ │ │ ├── DeferredRequestCreator.java │ │ │ │ │ │ ├── Dispatcher.java │ │ │ │ │ │ ├── DokitPicasso.java │ │ │ │ │ │ ├── Downloader.java │ │ │ │ │ │ ├── FetchAction.java │ │ │ │ │ │ ├── FileRequestHandler.java │ │ │ │ │ │ ├── GetAction.java │ │ │ │ │ │ ├── ImageViewAction.java │ │ │ │ │ │ ├── LruCache.java │ │ │ │ │ │ ├── MarkableInputStream.java │ │ │ │ │ │ ├── MediaStoreRequestHandler.java │ │ │ │ │ │ ├── MemoryPolicy.java │ │ │ │ │ │ ├── NetworkPolicy.java │ │ │ │ │ │ ├── NetworkRequestHandler.java │ │ │ │ │ │ ├── OkHttpDownloader.java │ │ │ │ │ │ ├── PicassoDrawable.java │ │ │ │ │ │ ├── PicassoExecutorService.java │ │ │ │ │ │ ├── RemoteViewsAction.java │ │ │ │ │ │ ├── Request.java │ │ │ │ │ │ ├── RequestCreator.java │ │ │ │ │ │ ├── RequestHandler.java │ │ │ │ │ │ ├── ResourceRequestHandler.java │ │ │ │ │ │ ├── Stats.java │ │ │ │ │ │ ├── StatsSnapshot.java │ │ │ │ │ │ ├── Target.java │ │ │ │ │ │ ├── TargetAction.java │ │ │ │ │ │ ├── Transformation.java │ │ │ │ │ │ ├── UrlConnectionDownloader.java │ │ │ │ │ │ └── Utils.java │ │ │ │ │ ├── reflection/ │ │ │ │ │ │ ├── BootstrapClass.java │ │ │ │ │ │ └── Reflection.java │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── ColorUtil.java │ │ │ │ │ │ ├── DataCleanUtil.java │ │ │ │ │ │ ├── DatabaseUtil.java │ │ │ │ │ │ ├── DoKitCacheUtils.java │ │ │ │ │ │ ├── DoKitClipboardUtils.java │ │ │ │ │ │ ├── DoKitCommUtil.java │ │ │ │ │ │ ├── DoKitExecutorUtil.java │ │ │ │ │ │ ├── DoKitFileUtil.java │ │ │ │ │ │ ├── DoKitFormatUtil.java │ │ │ │ │ │ ├── DoKitImageUtil.java │ │ │ │ │ │ ├── DoKitJsonUtil.java │ │ │ │ │ │ ├── DoKitMiscUtil.java │ │ │ │ │ │ ├── DoKitNotificationUtils.java │ │ │ │ │ │ ├── DoKitPermissionUtil.java │ │ │ │ │ │ ├── DoKitSPUtil.java │ │ │ │ │ │ ├── DoKitSystemUtil.java │ │ │ │ │ │ ├── DoKitWebUtil.java │ │ │ │ │ │ ├── DokitDeviceUtils.java │ │ │ │ │ │ ├── DoraemonStatisticsUtil.java │ │ │ │ │ │ ├── FileManager.java │ │ │ │ │ │ ├── LifecycleListenerUtil.java │ │ │ │ │ │ ├── LogHelper.java │ │ │ │ │ │ ├── Reflector.java │ │ │ │ │ │ ├── UIUtils.java │ │ │ │ │ │ └── threadpool/ │ │ │ │ │ │ ├── ThreadPoolProxy.java │ │ │ │ │ │ └── ThreadPoolProxyFactory.java │ │ │ │ │ ├── volley/ │ │ │ │ │ │ └── VolleyManager.kt │ │ │ │ │ ├── widget/ │ │ │ │ │ │ ├── JustifyTextView.java │ │ │ │ │ │ ├── MultiLineRadioGroup.java │ │ │ │ │ │ ├── bottomview/ │ │ │ │ │ │ │ ├── AssociationView.java │ │ │ │ │ │ │ ├── BottomUpWindow.java │ │ │ │ │ │ │ └── EditSpInputView.java │ │ │ │ │ │ ├── brvah/ │ │ │ │ │ │ │ ├── BaseBinderAdapter.kt │ │ │ │ │ │ │ ├── BaseDelegateMultiAdapter.kt │ │ │ │ │ │ │ ├── BaseMultiItemQuickAdapter.kt │ │ │ │ │ │ │ ├── BaseNodeAdapter.kt │ │ │ │ │ │ │ ├── BaseProviderMultiAdapter.kt │ │ │ │ │ │ │ ├── BaseQuickAdapter.kt │ │ │ │ │ │ │ ├── BaseSectionQuickAdapter.kt │ │ │ │ │ │ │ ├── animation/ │ │ │ │ │ │ │ │ ├── AlphaInAnimation.kt │ │ │ │ │ │ │ │ ├── BaseAnimation.kt │ │ │ │ │ │ │ │ ├── ScaleInAnimation.kt │ │ │ │ │ │ │ │ ├── SlideInBottomAnimation.kt │ │ │ │ │ │ │ │ ├── SlideInLeftAnimation.kt │ │ │ │ │ │ │ │ └── SlideInRightAnimation.kt │ │ │ │ │ │ │ ├── binder/ │ │ │ │ │ │ │ │ ├── BaseItemBinder.kt │ │ │ │ │ │ │ │ ├── QuickDataBindingItemBinder.kt │ │ │ │ │ │ │ │ ├── QuickItemBinder.kt │ │ │ │ │ │ │ │ └── QuickViewBindingItemBinder.kt │ │ │ │ │ │ │ ├── delegate/ │ │ │ │ │ │ │ │ └── BaseMultiTypeDelegate.kt │ │ │ │ │ │ │ ├── diff/ │ │ │ │ │ │ │ │ ├── BrvahAsyncDiffer.kt │ │ │ │ │ │ │ │ ├── BrvahAsyncDifferConfig.kt │ │ │ │ │ │ │ │ ├── BrvahListUpdateCallback.kt │ │ │ │ │ │ │ │ ├── DifferImp.java │ │ │ │ │ │ │ │ └── ListChangeListener.java │ │ │ │ │ │ │ ├── dragswipe/ │ │ │ │ │ │ │ │ └── DragAndSwipeCallback.java │ │ │ │ │ │ │ ├── entity/ │ │ │ │ │ │ │ │ ├── JSectionEntity.java │ │ │ │ │ │ │ │ ├── MultiItemEntity.kt │ │ │ │ │ │ │ │ ├── SectionEntity.kt │ │ │ │ │ │ │ │ └── node/ │ │ │ │ │ │ │ │ ├── BaseExpandNode.kt │ │ │ │ │ │ │ │ ├── BaseNode.kt │ │ │ │ │ │ │ │ └── NodeFooterImp.kt │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ ├── BaseListenerImp.java │ │ │ │ │ │ │ │ ├── DraggableListenerImp.java │ │ │ │ │ │ │ │ ├── GridSpanSizeLookup.java │ │ │ │ │ │ │ │ ├── LoadMoreListenerImp.java │ │ │ │ │ │ │ │ ├── OnItemChildClickListener.java │ │ │ │ │ │ │ │ ├── OnItemChildLongClickListener.java │ │ │ │ │ │ │ │ ├── OnItemClickListener.java │ │ │ │ │ │ │ │ ├── OnItemDragListener.java │ │ │ │ │ │ │ │ ├── OnItemLongClickListener.java │ │ │ │ │ │ │ │ ├── OnItemSwipeListener.java │ │ │ │ │ │ │ │ ├── OnLoadMoreListener.java │ │ │ │ │ │ │ │ ├── OnUpFetchListener.java │ │ │ │ │ │ │ │ └── UpFetchListenerImp.java │ │ │ │ │ │ │ ├── loadmore/ │ │ │ │ │ │ │ │ ├── BaseLoadMoreView.kt │ │ │ │ │ │ │ │ └── SimpleLoadMoreView.kt │ │ │ │ │ │ │ ├── module/ │ │ │ │ │ │ │ │ ├── DraggableModule.kt │ │ │ │ │ │ │ │ ├── LoadMoreModule.kt │ │ │ │ │ │ │ │ └── UpFetchModule.kt │ │ │ │ │ │ │ ├── provider/ │ │ │ │ │ │ │ │ ├── BaseItemProvider.kt │ │ │ │ │ │ │ │ └── BaseNodeProvider.kt │ │ │ │ │ │ │ ├── util/ │ │ │ │ │ │ │ │ └── AdapterUtils.kt │ │ │ │ │ │ │ └── viewholder/ │ │ │ │ │ │ │ ├── BaseDataBindingHolder.kt │ │ │ │ │ │ │ └── BaseViewHolder.kt │ │ │ │ │ │ ├── chart/ │ │ │ │ │ │ │ ├── BarChart.java │ │ │ │ │ │ │ └── PieChart.java │ │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ │ ├── CommonDialogProvider.java │ │ │ │ │ │ │ ├── DialogInfo.java │ │ │ │ │ │ │ ├── DialogListener.kt │ │ │ │ │ │ │ ├── DialogProvider.java │ │ │ │ │ │ │ ├── SimpleDialogListener.java │ │ │ │ │ │ │ └── UniversalDialogFragment.java │ │ │ │ │ │ ├── dropdown/ │ │ │ │ │ │ │ ├── DkDropDownMenu.java │ │ │ │ │ │ │ └── Orientation.java │ │ │ │ │ │ ├── easyrefresh/ │ │ │ │ │ │ │ ├── ELog.java │ │ │ │ │ │ │ ├── EasyRefreshLayout.java │ │ │ │ │ │ │ ├── ILoadMoreView.java │ │ │ │ │ │ │ ├── IRefreshHeader.java │ │ │ │ │ │ │ ├── LoadModel.java │ │ │ │ │ │ │ ├── State.java │ │ │ │ │ │ │ ├── exception/ │ │ │ │ │ │ │ │ └── ERVHRuntimeException.java │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ ├── SimpleLoadMoreView.java │ │ │ │ │ │ │ └── SimpleRefreshHeaderView.java │ │ │ │ │ │ ├── jsonviewer/ │ │ │ │ │ │ │ ├── JsonRecyclerView.java │ │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ │ ├── BaseJsonViewerAdapter.java │ │ │ │ │ │ │ │ └── JsonViewerAdapter.java │ │ │ │ │ │ │ ├── utils/ │ │ │ │ │ │ │ │ └── Utils.java │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ └── JsonItemView.java │ │ │ │ │ │ ├── recyclerview/ │ │ │ │ │ │ │ ├── AbsRecyclerAdapter.java │ │ │ │ │ │ │ ├── AbsViewBinder.java │ │ │ │ │ │ │ └── DividerItemDecoration.java │ │ │ │ │ │ ├── tableview/ │ │ │ │ │ │ │ ├── SelectionOperation.java │ │ │ │ │ │ │ ├── TableConfig.java │ │ │ │ │ │ │ ├── TableMeasurer.java │ │ │ │ │ │ │ ├── TableParser.java │ │ │ │ │ │ │ ├── TableProvider.java │ │ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ │ │ ├── ArrayTableData.java │ │ │ │ │ │ │ │ ├── Cell.java │ │ │ │ │ │ │ │ ├── CellInfo.java │ │ │ │ │ │ │ │ ├── Column.java │ │ │ │ │ │ │ │ ├── ColumnInfo.java │ │ │ │ │ │ │ │ ├── TableData.java │ │ │ │ │ │ │ │ └── TableInfo.java │ │ │ │ │ │ │ ├── component/ │ │ │ │ │ │ │ │ ├── SmartTable.java │ │ │ │ │ │ │ │ ├── TableTitle.java │ │ │ │ │ │ │ │ └── YSequence.java │ │ │ │ │ │ │ ├── format/ │ │ │ │ │ │ │ │ ├── BaseSequenceFormat.java │ │ │ │ │ │ │ │ ├── FastTextDrawFormat.java │ │ │ │ │ │ │ │ ├── NumberSequenceFormat.java │ │ │ │ │ │ │ │ ├── TextDrawFormat.java │ │ │ │ │ │ │ │ └── TitleDrawFormat.java │ │ │ │ │ │ │ ├── intface/ │ │ │ │ │ │ │ │ ├── IComponent.java │ │ │ │ │ │ │ │ ├── IDrawFormat.java │ │ │ │ │ │ │ │ ├── IFormat.java │ │ │ │ │ │ │ │ ├── ISelectFormat.java │ │ │ │ │ │ │ │ ├── ISequenceFormat.java │ │ │ │ │ │ │ │ ├── IStyle.java │ │ │ │ │ │ │ │ ├── ITableTitle.java │ │ │ │ │ │ │ │ ├── ITitleDrawFormat.java │ │ │ │ │ │ │ │ └── ITouch.java │ │ │ │ │ │ │ ├── listener/ │ │ │ │ │ │ │ │ ├── Observable.java │ │ │ │ │ │ │ │ ├── OnColumnClickListener.java │ │ │ │ │ │ │ │ ├── OnColumnItemClickListener.java │ │ │ │ │ │ │ │ ├── OnTableChangeListener.java │ │ │ │ │ │ │ │ └── TableClickObserver.java │ │ │ │ │ │ │ ├── style/ │ │ │ │ │ │ │ │ ├── FontStyle.java │ │ │ │ │ │ │ │ └── LineStyle.java │ │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ │ ├── DensityUtils.java │ │ │ │ │ │ │ ├── DrawUtils.java │ │ │ │ │ │ │ └── MatrixHelper.java │ │ │ │ │ │ ├── textview/ │ │ │ │ │ │ │ └── LabelTextView.java │ │ │ │ │ │ ├── titlebar/ │ │ │ │ │ │ │ ├── HomeTitleBar.java │ │ │ │ │ │ │ ├── LogTitleBar.java │ │ │ │ │ │ │ └── TitleBar.java │ │ │ │ │ │ ├── verticalviewpager/ │ │ │ │ │ │ │ ├── VerticalViewPager.java │ │ │ │ │ │ │ └── transforms/ │ │ │ │ │ │ │ ├── DefaultTransformer.java │ │ │ │ │ │ │ ├── StackTransformer.java │ │ │ │ │ │ │ └── ZoomOutTransformer.java │ │ │ │ │ │ ├── videoview/ │ │ │ │ │ │ │ ├── CustomVideoView.java │ │ │ │ │ │ │ └── MyVideoView.java │ │ │ │ │ │ └── webview/ │ │ │ │ │ │ ├── MyWebView.java │ │ │ │ │ │ └── MyWebViewClient.java │ │ │ │ │ └── zxing/ │ │ │ │ │ ├── activity/ │ │ │ │ │ │ └── CaptureActivity.java │ │ │ │ │ ├── camera/ │ │ │ │ │ │ ├── AutoFocusCallback.java │ │ │ │ │ │ ├── CameraConfigurationManager.java │ │ │ │ │ │ ├── CameraManager.java │ │ │ │ │ │ ├── FlashlightManager.java │ │ │ │ │ │ ├── PlanarYUVLuminanceSource.java │ │ │ │ │ │ └── PreviewCallback.java │ │ │ │ │ ├── decoding/ │ │ │ │ │ │ ├── CaptureActivityHandler.java │ │ │ │ │ │ ├── DecodeFormatManager.java │ │ │ │ │ │ ├── DecodeHandler.java │ │ │ │ │ │ ├── DecodeThread.java │ │ │ │ │ │ ├── FinishListener.java │ │ │ │ │ │ ├── InactivityTimer.java │ │ │ │ │ │ └── Intents.java │ │ │ │ │ └── view/ │ │ │ │ │ ├── ViewfinderResultPointCallback.java │ │ │ │ │ └── ViewfinderView.java │ │ │ │ └── res/ │ │ │ │ ├── anim/ │ │ │ │ │ ├── dk_dd_mask_in.xml │ │ │ │ │ ├── dk_dd_mask_out.xml │ │ │ │ │ ├── dk_dd_menu_in.xml │ │ │ │ │ ├── dk_dd_menu_out.xml │ │ │ │ │ ├── dk_easy_refresh_rotate_down.xml │ │ │ │ │ ├── dk_easy_refresh_rotate_infinite.xml │ │ │ │ │ └── dk_easy_refresh_rotate_up.xml │ │ │ │ ├── color/ │ │ │ │ │ ├── dk_confirm_button_text_color.xml │ │ │ │ │ ├── dk_network_pager_color.xml │ │ │ │ │ └── dk_radio_button_text_color.xml │ │ │ │ ├── drawable/ │ │ │ │ │ ├── dk_add_shape.xml │ │ │ │ │ ├── dk_app_toast_shape.xml │ │ │ │ │ ├── dk_brvah_sample_footer_loading_progress.xml │ │ │ │ │ ├── dk_btn_dokit_for_web_bg.xml │ │ │ │ │ ├── dk_btn_pause_style.xml │ │ │ │ │ ├── dk_btn_play_style.xml │ │ │ │ │ ├── dk_confirm_button_background.xml │ │ │ │ │ ├── dk_dialog_button_background.xml │ │ │ │ │ ├── dk_dialog_complete_bg.xml │ │ │ │ │ ├── dk_dialog_confirm_bg.xml │ │ │ │ │ ├── dk_divider.xml │ │ │ │ │ ├── dk_divider_gray.xml │ │ │ │ │ ├── dk_dokitview_studio_connect.xml │ │ │ │ │ ├── dk_dotted_line_horizontal.xml │ │ │ │ │ ├── dk_dotted_line_vertical.xml │ │ │ │ │ ├── dk_edittext_shape.xml │ │ │ │ │ ├── dk_float_ui_performance_info_bg.xml │ │ │ │ │ ├── dk_health_edittext_style.xml │ │ │ │ │ ├── dk_hint_bg.xml │ │ │ │ │ ├── dk_info_background.xml │ │ │ │ │ ├── dk_input_cursor.xml │ │ │ │ │ ├── dk_item_btn_img.xml │ │ │ │ │ ├── dk_item_performance_detail.xml │ │ │ │ │ ├── dk_jsonviewer_minus.xml │ │ │ │ │ ├── dk_jsonviewer_plus.xml │ │ │ │ │ ├── dk_kit_group_background.xml │ │ │ │ │ ├── dk_line_chart_selected_background.xml │ │ │ │ │ ├── dk_log_filter_background.xml │ │ │ │ │ ├── dk_net_work_monitor_list_selector.xml │ │ │ │ │ ├── dk_net_work_monitor_summary_selector.xml │ │ │ │ │ ├── dk_network_info_background.xml │ │ │ │ │ ├── dk_network_method_bg.xml │ │ │ │ │ ├── dk_network_platform_bg.xml │ │ │ │ │ ├── dk_perform_data_background.xml │ │ │ │ │ ├── dk_progressbar_style.xml │ │ │ │ │ ├── dk_radio_button_background.xml │ │ │ │ │ ├── dk_radio_button_background_left.xml │ │ │ │ │ ├── dk_radio_button_background_middle.xml │ │ │ │ │ ├── dk_radio_button_background_right.xml │ │ │ │ │ ├── dk_radio_button_checked_background.xml │ │ │ │ │ ├── dk_radio_button_checked_background_left.xml │ │ │ │ │ ├── dk_radio_button_checked_background_middle.xml │ │ │ │ │ ├── dk_radio_button_checked_background_right.xml │ │ │ │ │ ├── dk_radio_button_normal_background.xml │ │ │ │ │ ├── dk_radio_button_normal_background_left.xml │ │ │ │ │ ├── dk_radio_button_normal_background_middle.xml │ │ │ │ │ ├── dk_radio_button_normal_background_right.xml │ │ │ │ │ ├── dk_refresh_rotate_down.xml │ │ │ │ │ ├── dk_seekbar_style.xml │ │ │ │ │ ├── dk_setting_item_background.xml │ │ │ │ │ ├── dk_shape_float_view_bg.xml │ │ │ │ │ ├── dk_switch_background.xml │ │ │ │ │ ├── dk_time_counter_background.xml │ │ │ │ │ ├── dk_view_dot_connect.xml │ │ │ │ │ └── dk_web_door_history_item_background.xml │ │ │ │ ├── layout/ │ │ │ │ │ ├── dk_app_toast.xml │ │ │ │ │ ├── dk_brvah_quick_view_load_more.xml │ │ │ │ │ ├── dk_dialog_common.xml │ │ │ │ │ ├── dk_dialog_confirm.xml │ │ │ │ │ ├── dk_dialog_file_explorer_choose.xml │ │ │ │ │ ├── dk_dialog_tip.xml │ │ │ │ │ ├── dk_dialog_userinfo.xml │ │ │ │ │ ├── dk_dropdownmenu_tab_item.xml │ │ │ │ │ ├── dk_float_align_ruler_info.xml │ │ │ │ │ ├── dk_float_align_ruler_line.xml │ │ │ │ │ ├── dk_float_align_ruler_marker.xml │ │ │ │ │ ├── dk_float_color_picker.xml │ │ │ │ │ ├── dk_float_color_picker_info.xml │ │ │ │ │ ├── dk_float_count_down.xml │ │ │ │ │ ├── dk_float_h5_info.xml │ │ │ │ │ ├── dk_float_layout_level.xml │ │ │ │ │ ├── dk_float_lbs_route.xml │ │ │ │ │ ├── dk_float_log_info.xml │ │ │ │ │ ├── dk_float_network.xml │ │ │ │ │ ├── dk_float_perform_data.xml │ │ │ │ │ ├── dk_float_time_counter.xml │ │ │ │ │ ├── dk_float_ui_performance_display.xml │ │ │ │ │ ├── dk_float_ui_performance_info.xml │ │ │ │ │ ├── dk_float_view_check.xml │ │ │ │ │ ├── dk_float_view_check_draw.xml │ │ │ │ │ ├── dk_float_view_check_info.xml │ │ │ │ │ ├── dk_fragment_align_ruler_setting.xml │ │ │ │ │ ├── dk_fragment_app_start_info.xml │ │ │ │ │ ├── dk_fragment_block_list.xml │ │ │ │ │ ├── dk_fragment_block_monitor_index.xml │ │ │ │ │ ├── dk_fragment_color_picker_setting.xml │ │ │ │ │ ├── dk_fragment_comm_webview.xml │ │ │ │ │ ├── dk_fragment_cpu_cache_log.xml │ │ │ │ │ ├── dk_fragment_crash_capture_detail.xml │ │ │ │ │ ├── dk_fragment_crash_capture_main.xml │ │ │ │ │ ├── dk_fragment_crash_detail_info.xml │ │ │ │ │ ├── dk_fragment_data_clean.xml │ │ │ │ │ ├── dk_fragment_db_debug.xml │ │ │ │ │ ├── dk_fragment_db_detail.xml │ │ │ │ │ ├── dk_fragment_dokit_connect.xml │ │ │ │ │ ├── dk_fragment_dokit_for_web.xml │ │ │ │ │ ├── dk_fragment_file_explorer.xml │ │ │ │ │ ├── dk_fragment_file_manager_doc.xml │ │ │ │ │ ├── dk_fragment_health.xml │ │ │ │ │ ├── dk_fragment_health_child0.xml │ │ │ │ │ ├── dk_fragment_health_child1.xml │ │ │ │ │ ├── dk_fragment_image_detail.xml │ │ │ │ │ ├── dk_fragment_kit_manager.xml │ │ │ │ │ ├── dk_fragment_large_img_list.xml │ │ │ │ │ ├── dk_fragment_layout_border_setting.xml │ │ │ │ │ ├── dk_fragment_log_info_setting.xml │ │ │ │ │ ├── dk_fragment_method_cost.xml │ │ │ │ │ ├── dk_fragment_mock_template_preview.xml │ │ │ │ │ ├── dk_fragment_monitor_data_upload_page.xml │ │ │ │ │ ├── dk_fragment_monitor_pagedata.xml │ │ │ │ │ ├── dk_fragment_monitor_pagedata_item.xml │ │ │ │ │ ├── dk_fragment_monitor_pagedata_item_item.xml │ │ │ │ │ ├── dk_fragment_more.xml │ │ │ │ │ ├── dk_fragment_net_main_pager.xml │ │ │ │ │ ├── dk_fragment_net_mock.xml │ │ │ │ │ ├── dk_fragment_net_monitor.xml │ │ │ │ │ ├── dk_fragment_network_monitor_detail.xml │ │ │ │ │ ├── dk_fragment_network_monitor_list.xml │ │ │ │ │ ├── dk_fragment_network_summary_page.xml │ │ │ │ │ ├── dk_fragment_parameter.xml │ │ │ │ │ ├── dk_fragment_performance_large_picture_setting.xml │ │ │ │ │ ├── dk_fragment_simple_dokit_page.xml │ │ │ │ │ ├── dk_fragment_sp_show.xml │ │ │ │ │ ├── dk_fragment_sys_info.xml │ │ │ │ │ ├── dk_fragment_text_detail.xml │ │ │ │ │ ├── dk_fragment_third_lib_info.xml │ │ │ │ │ ├── dk_fragment_time_counter_index.xml │ │ │ │ │ ├── dk_fragment_time_counter_list.xml │ │ │ │ │ ├── dk_fragment_top_activity.xml │ │ │ │ │ ├── dk_fragment_video_play.xml │ │ │ │ │ ├── dk_fragment_view_check.xml │ │ │ │ │ ├── dk_fragment_weak_network.xml │ │ │ │ │ ├── dk_fragment_web_door.xml │ │ │ │ │ ├── dk_fragment_web_door_default.xml │ │ │ │ │ ├── dk_home_title_bar.xml │ │ │ │ │ ├── dk_item_bar_chart.xml │ │ │ │ │ ├── dk_item_block_list.xml │ │ │ │ │ ├── dk_item_connect_address.xml │ │ │ │ │ ├── dk_item_crash_history.xml │ │ │ │ │ ├── dk_item_data_clean.xml │ │ │ │ │ ├── dk_item_default_drop_down.xml │ │ │ │ │ ├── dk_item_file_info.xml │ │ │ │ │ ├── dk_item_group_exit.xml │ │ │ │ │ ├── dk_item_group_kit.xml │ │ │ │ │ ├── dk_item_group_kit_manager.xml │ │ │ │ │ ├── dk_item_group_mode.xml │ │ │ │ │ ├── dk_item_group_title.xml │ │ │ │ │ ├── dk_item_group_version.xml │ │ │ │ │ ├── dk_item_kit.xml │ │ │ │ │ ├── dk_item_large_img_list.xml │ │ │ │ │ ├── dk_item_layout_bottom_up_select_window.xml │ │ │ │ │ ├── dk_item_localstorage.xml │ │ │ │ │ ├── dk_item_log.xml │ │ │ │ │ ├── dk_item_more_content.xml │ │ │ │ │ ├── dk_item_more_header.xml │ │ │ │ │ ├── dk_item_network_list.xml │ │ │ │ │ ├── dk_item_performance_close.xml │ │ │ │ │ ├── dk_item_performance_detail.xml │ │ │ │ │ ├── dk_item_performance_wrap.xml │ │ │ │ │ ├── dk_item_setting.xml │ │ │ │ │ ├── dk_item_sp_input.xml │ │ │ │ │ ├── dk_item_sys_info.xml │ │ │ │ │ ├── dk_item_sys_title.xml │ │ │ │ │ ├── dk_item_text_content.xml │ │ │ │ │ ├── dk_item_third_lib_info.xml │ │ │ │ │ ├── dk_item_time_counter_list.xml │ │ │ │ │ ├── dk_item_tips_view.xml │ │ │ │ │ ├── dk_item_web_door_history.xml │ │ │ │ │ ├── dk_item_white_host.xml │ │ │ │ │ ├── dk_jsonviewer_layout_item_view.xml │ │ │ │ │ ├── dk_label_text_view.xml │ │ │ │ │ ├── dk_layout_localstorage_empty.xml │ │ │ │ │ ├── dk_layout_sessionstorage_empty.xml │ │ │ │ │ ├── dk_light_hint_layout.xml │ │ │ │ │ ├── dk_log_title_bar.xml │ │ │ │ │ ├── dk_main_launch_icon.xml │ │ │ │ │ ├── dk_mock_intercept_content_item.xml │ │ │ │ │ ├── dk_mock_template_content_item.xml │ │ │ │ │ ├── dk_mock_title_item.xml │ │ │ │ │ ├── dk_performance_close_wrap.xml │ │ │ │ │ ├── dk_performance_wrap.xml │ │ │ │ │ ├── dk_radio_button.xml │ │ │ │ │ ├── dk_radio_table_layout.xml │ │ │ │ │ ├── dk_radio_table_row.xml │ │ │ │ │ ├── dk_refresh_default_load_more.xml │ │ │ │ │ ├── dk_refresh_default_refresh_header.xml │ │ │ │ │ ├── dk_rv_empty_layout.xml │ │ │ │ │ ├── dk_rv_empty_layout2.xml │ │ │ │ │ ├── dk_title_bar.xml │ │ │ │ │ ├── dk_tool_panel.xml │ │ │ │ │ ├── dk_tool_panel_old.xml │ │ │ │ │ ├── dk_video_layout.xml │ │ │ │ │ ├── dk_view_line_chart.xml │ │ │ │ │ ├── dk_view_network_detail_pager_title.xml │ │ │ │ │ ├── dk_view_network_request.xml │ │ │ │ │ ├── dk_view_network_tab_layout.xml │ │ │ │ │ ├── dk_volume_hint_layout.xml │ │ │ │ │ ├── dk_zxing_activity_scanner.xml │ │ │ │ │ ├── kd_item_sp_input.xml │ │ │ │ │ └── layout_mock_pos_adjust.xml │ │ │ │ ├── values/ │ │ │ │ │ ├── attrs.xml │ │ │ │ │ ├── colors.xml │ │ │ │ │ ├── dimens.xml │ │ │ │ │ ├── font_sizes.xml │ │ │ │ │ ├── ids.xml │ │ │ │ │ ├── strings.xml │ │ │ │ │ └── styles.xml │ │ │ │ ├── values-en-rUS/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-zh-rCN/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-zh-rTW/ │ │ │ │ │ └── strings.xml │ │ │ │ └── xml/ │ │ │ │ ├── dokit_debug_provider_paths.xml │ │ │ │ └── dokit_network_config.xml │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ ├── DokitTest.java │ │ │ └── kit/ │ │ │ └── connect/ │ │ │ ├── ByteParserTest.kt │ │ │ ├── WebSocketClientTest.kt │ │ │ └── WebSocketSessionTest.java │ │ └── upload.sh │ ├── dokit-autotest/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── didichuxing/ │ │ │ │ │ └── doraemonkit/ │ │ │ │ │ └── kit/ │ │ │ │ │ └── autotest/ │ │ │ │ │ ├── AutoTestControlKit.kt │ │ │ │ │ ├── AutoTestManager.kt │ │ │ │ │ ├── AutoTestMessage.kt │ │ │ │ │ ├── AutoTestState.kt │ │ │ │ │ ├── DelayHandler.kt │ │ │ │ │ └── ui/ │ │ │ │ │ ├── AutotestPage.java │ │ │ │ │ ├── DoKitAutotestActivity.java │ │ │ │ │ ├── DoKitAutotestConnectFragment.kt │ │ │ │ │ ├── DoKitAutotestFragment.kt │ │ │ │ │ └── RecordingCaseDoKitView.kt │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ ├── dk_autotest_dialog_bg.xml │ │ │ │ │ ├── dk_autotest_flash_blue_bg.xml │ │ │ │ │ ├── dk_autotest_flash_green_bg.xml │ │ │ │ │ ├── dk_autotest_flash_red_bg.xml │ │ │ │ │ └── dk_btn_autotest_bg.xml │ │ │ │ ├── layout/ │ │ │ │ │ ├── dk_activity_autotest.xml │ │ │ │ │ ├── dk_autotest_view_recording_case.xml │ │ │ │ │ ├── dk_fragment_autotest_connect.xml │ │ │ │ │ └── dk_fragment_autotest_main.xml │ │ │ │ ├── values/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-en-rCN/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-zh-rTW/ │ │ │ │ │ └── strings.xml │ │ │ │ └── values-zh-rUS/ │ │ │ │ └── strings.xml │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── kit/ │ │ │ └── autotest/ │ │ │ └── ExampleUnitTest.java │ │ └── upload.sh │ ├── dokit-ft/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── kit/ │ │ │ │ └── filemanager/ │ │ │ │ ├── DokitFileRouter.kt │ │ │ │ ├── FileManagerUtil.kt │ │ │ │ ├── FileTransferFragment.kt │ │ │ │ ├── FileTransferKit.kt │ │ │ │ ├── HttpServer.kt │ │ │ │ ├── ability/ │ │ │ │ │ ├── DokitFtAbility.kt │ │ │ │ │ └── DokitFtModuleProcessor.kt │ │ │ │ ├── action/ │ │ │ │ │ ├── RequestErrorAction.kt │ │ │ │ │ ├── file/ │ │ │ │ │ │ ├── CreateFolderAction.kt │ │ │ │ │ │ ├── DeleteFileAction.kt │ │ │ │ │ │ ├── DeviceInfoAction.kt │ │ │ │ │ │ ├── FileDetailAction.kt │ │ │ │ │ │ ├── FileListAction.kt │ │ │ │ │ │ ├── IndexAction.kt │ │ │ │ │ │ ├── RenameFileAction.kt │ │ │ │ │ │ ├── SaveFileAction.kt │ │ │ │ │ │ └── UploadFileAction.kt │ │ │ │ │ └── sql/ │ │ │ │ │ └── DatabaseAction.kt │ │ │ │ ├── bean/ │ │ │ │ │ ├── DirInfo.kt │ │ │ │ │ ├── RenameFileInfo.kt │ │ │ │ │ └── SaveFileInfo.kt │ │ │ │ ├── convert/ │ │ │ │ │ └── GsonConverter.kt │ │ │ │ └── sqlite/ │ │ │ │ ├── DBManager.kt │ │ │ │ ├── bean/ │ │ │ │ │ ├── RowFiledInfo.kt │ │ │ │ │ ├── RowRequestInfo.kt │ │ │ │ │ └── TableFieldInfo.kt │ │ │ │ ├── dao/ │ │ │ │ │ ├── EncryptSQLiteDB.kt │ │ │ │ │ ├── NormalSQLiteDB.kt │ │ │ │ │ └── SQLiteDB.kt │ │ │ │ ├── factory/ │ │ │ │ │ ├── DBFactory.kt │ │ │ │ │ ├── EncryptDBFactory.kt │ │ │ │ │ └── NormalDBFactory.kt │ │ │ │ └── util/ │ │ │ │ └── DBUtil.kt │ │ │ └── res/ │ │ │ └── layout/ │ │ │ └── dk_fragment_file_transfer.xml │ │ └── upload.sh │ ├── dokit-gps-mock/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── gradle.properties │ │ ├── libs/ │ │ │ └── BaiduLBS_Android.jar │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── gps_mock/ │ │ │ │ ├── ability/ │ │ │ │ │ ├── DokitFtAbility.kt │ │ │ │ │ └── DokitFtModuleProcessor.kt │ │ │ │ ├── common/ │ │ │ │ │ ├── BdMapRouteData.java │ │ │ │ │ └── Utils.java │ │ │ │ ├── gpsmock/ │ │ │ │ │ ├── BaseServiceHooker.kt │ │ │ │ │ ├── BinderHookHandler.java │ │ │ │ │ ├── CordTransformUtil.java │ │ │ │ │ ├── GpsMockFragment.java │ │ │ │ │ ├── GpsMockKit.kt │ │ │ │ │ ├── GpsMockManager.java │ │ │ │ │ ├── GpsMockProxyManager.kt │ │ │ │ │ ├── LocationBuilder.java │ │ │ │ │ ├── LocationHookHandler.java │ │ │ │ │ ├── LocationHooker.java │ │ │ │ │ ├── MethodHandler.kt │ │ │ │ │ ├── RouteMockThread.java │ │ │ │ │ ├── ServiceHookManager.kt │ │ │ │ │ ├── TelephonyHooker.java │ │ │ │ │ ├── TencentLocationImp.java │ │ │ │ │ └── WifiHooker.java │ │ │ │ ├── lbs/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── AMapDrivingRouteOverLay.java │ │ │ │ │ │ ├── AMapRouteOverlay.java │ │ │ │ │ │ ├── AMapUtil.kt │ │ │ │ │ │ ├── Constants.java │ │ │ │ │ │ └── LocInfo.java │ │ │ │ │ ├── manual/ │ │ │ │ │ │ ├── FloatGpsMockCache.java │ │ │ │ │ │ ├── GPSTools.java │ │ │ │ │ │ ├── PosAdjustKit.kt │ │ │ │ │ │ └── PosAdjustKitView.java │ │ │ │ │ ├── preset/ │ │ │ │ │ │ ├── FloatGpsPresetMockCache.java │ │ │ │ │ │ └── MockLocList.java │ │ │ │ │ └── route/ │ │ │ │ │ ├── AMapRealNavMockView.kt │ │ │ │ │ ├── FloatGpsRouteMockCache.java │ │ │ │ │ ├── NaviSettings.kt │ │ │ │ │ └── RealNavMockKit.kt │ │ │ │ ├── location/ │ │ │ │ │ └── GpsStatusUtil.java │ │ │ │ ├── map/ │ │ │ │ │ ├── AMapLocationChangedListenerProxy.java │ │ │ │ │ ├── AMapLocationClientProxy.java │ │ │ │ │ ├── AMapLocationListenerProxy.java │ │ │ │ │ ├── AMapLocationSourceProxy.java │ │ │ │ │ ├── AMapNaviListenerProxy.java │ │ │ │ │ ├── AMapNaviListenerProxyDelegate.java │ │ │ │ │ ├── AMapNaviListenerProxyNoOp.java │ │ │ │ │ ├── BDAbsLocationListenerProxy.java │ │ │ │ │ ├── BDLocationListenerProxy.java │ │ │ │ │ ├── BDLocationUtil.java │ │ │ │ │ ├── DMapLocationListener.kt │ │ │ │ │ ├── TencentLocationListenerProxy.java │ │ │ │ │ └── ThirdMapLocationListenerUtil.java │ │ │ │ ├── sysservicehook/ │ │ │ │ │ ├── ActivityMangerHooker.kt │ │ │ │ │ ├── ActivityTaskMangerHooker.kt │ │ │ │ │ ├── GetInstalledApplicationsMethodHandler.kt │ │ │ │ │ ├── PackageManagerHooker.kt │ │ │ │ │ └── StartActivityMethodHandler.kt │ │ │ │ └── widget/ │ │ │ │ ├── CustomDialogFragment.java │ │ │ │ ├── DrivingRouteOverlay.java │ │ │ │ ├── IDialogHelper.java │ │ │ │ ├── OverlayManager.java │ │ │ │ ├── PositionSelectDialogHelper.java │ │ │ │ ├── PositionSelectRecyclerAdapter.java │ │ │ │ ├── RouteMockDokitView.kt │ │ │ │ └── SeekRangeBar.java │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── dk_bg_btn_round_rectangle.xml │ │ │ │ ├── dk_bg_custom_spinner.xml │ │ │ │ ├── dk_bg_dokitview_route_mock.xml │ │ │ │ ├── dk_bg_edt_hint.xml │ │ │ │ ├── dk_bg_gray_round_rectangle.xml │ │ │ │ ├── dk_bg_round_edt.xml │ │ │ │ ├── dk_icon_loc_circle_shape.xml │ │ │ │ ├── dk_seek_bar_background_shape.xml │ │ │ │ ├── dk_seek_bar_circle_indicator.xml │ │ │ │ └── dk_seek_bar_foreground_shape.xml │ │ │ ├── layout/ │ │ │ │ ├── dk_dokitview_route_mock.xml │ │ │ │ ├── dk_fragment_gps_mock.xml │ │ │ │ ├── dk_item_position_select.xml │ │ │ │ └── dk_position_select_dialog_fragment.xml │ │ │ ├── values/ │ │ │ │ ├── attrs.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ └── strings.xml │ │ │ ├── values-en-rCN/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rUS/ │ │ │ │ └── strings.xml │ │ │ └── xml/ │ │ │ └── gps_mock_root_scene.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── didichuxing/ │ │ └── doraemonkit/ │ │ └── ExampleUnitTest.java │ ├── dokit-leakcanary/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── aidl/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── aidl/ │ │ │ │ ├── IReceiverAidlInterface.aidl │ │ │ │ └── ISenderAidlInterface.aidl │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ ├── didichuxing/ │ │ │ │ │ └── doraemonkit/ │ │ │ │ │ ├── LeakCanaryManager.java │ │ │ │ │ ├── abridge/ │ │ │ │ │ │ ├── AbridgeCallBack.java │ │ │ │ │ │ ├── AbridgeManager.java │ │ │ │ │ │ ├── AbridgeMessengerCallBack.java │ │ │ │ │ │ ├── AbridgeMessengerManager.java │ │ │ │ │ │ ├── IBridge.java │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── ABridgeService.java │ │ │ │ │ │ └── MessengerService.java │ │ │ │ │ └── kit/ │ │ │ │ │ └── leakcanary/ │ │ │ │ │ └── LeakCanaryKit.java │ │ │ │ └── squareup/ │ │ │ │ ├── haha/ │ │ │ │ │ └── perflib/ │ │ │ │ │ └── HahaSpy.java │ │ │ │ └── leakcanary/ │ │ │ │ ├── AbstractAnalysisResultService.java │ │ │ │ ├── ActivityRefWatcher.java │ │ │ │ ├── AnalysisResult.java │ │ │ │ ├── AnalyzedHeap.java │ │ │ │ ├── AnalyzerProgressListener.java │ │ │ │ ├── AndroidDebuggerControl.java │ │ │ │ ├── AndroidExcludedRefs.java │ │ │ │ ├── AndroidHeapDumper.java │ │ │ │ ├── AndroidReachabilityInspectors.java │ │ │ │ ├── AndroidRefWatcherBuilder.java │ │ │ │ ├── AndroidWatchExecutor.java │ │ │ │ ├── CanaryLog.java │ │ │ │ ├── DebuggerControl.java │ │ │ │ ├── DefaultLeakDirectoryProvider.java │ │ │ │ ├── DisplayLeakService.java │ │ │ │ ├── ExcludedRefs.java │ │ │ │ ├── Exclusion.java │ │ │ │ ├── FailTestOnLeakRunListener.java │ │ │ │ ├── GcTrigger.java │ │ │ │ ├── HahaHelper.java │ │ │ │ ├── HeapAnalyzer.java │ │ │ │ ├── HeapDump.java │ │ │ │ ├── HeapDumper.java │ │ │ │ ├── InstrumentationLeakDetector.java │ │ │ │ ├── InstrumentationLeakResults.java │ │ │ │ ├── KeyedWeakReference.java │ │ │ │ ├── LeakCanary.java │ │ │ │ ├── LeakDirectoryProvider.java │ │ │ │ ├── LeakNode.java │ │ │ │ ├── LeakReference.java │ │ │ │ ├── LeakTrace.java │ │ │ │ ├── LeakTraceElement.java │ │ │ │ ├── Preconditions.java │ │ │ │ ├── Reachability.java │ │ │ │ ├── RefWatcher.java │ │ │ │ ├── RefWatcherBuilder.java │ │ │ │ ├── Retryable.java │ │ │ │ ├── ServiceHeapDumpListener.java │ │ │ │ ├── ShortestPathFinder.java │ │ │ │ ├── TrackedReference.java │ │ │ │ ├── UploadLeakService.java │ │ │ │ ├── WatchExecutor.java │ │ │ │ └── internal/ │ │ │ │ ├── ActivityLifecycleCallbacksAdapter.java │ │ │ │ ├── AndroidOFragmentRefWatcher.java │ │ │ │ ├── DisplayLeakActivity.java │ │ │ │ ├── DisplayLeakAdapter.java │ │ │ │ ├── DisplayLeakConnectorView.java │ │ │ │ ├── ForegroundService.java │ │ │ │ ├── FragmentRefWatcher.java │ │ │ │ ├── FutureResult.java │ │ │ │ ├── HeapAnalyzerService.java │ │ │ │ ├── LeakCanaryFileProvider.java │ │ │ │ ├── LeakCanaryInternals.java │ │ │ │ ├── LeakCanarySingleThreadFactory.java │ │ │ │ ├── MoreDetailsView.java │ │ │ │ ├── RequestStoragePermissionActivity.java │ │ │ │ ├── RowElementLayout.java │ │ │ │ ├── SquigglySpan.java │ │ │ │ └── SupportFragmentRefWatcher.java │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ ├── leak_canary_icon_foreground.xml │ │ │ │ └── leak_canary_toast_background.xml │ │ │ ├── layout/ │ │ │ │ ├── leak_canary_display_leak.xml │ │ │ │ ├── leak_canary_heap_dump_toast.xml │ │ │ │ ├── leak_canary_leak_row.xml │ │ │ │ ├── leak_canary_ref_row.xml │ │ │ │ └── leak_canary_ref_top_row.xml │ │ │ ├── values/ │ │ │ │ ├── leak_canary_attrs.xml │ │ │ │ ├── leak_canary_colors.xml │ │ │ │ ├── leak_canary_dimens.xml │ │ │ │ ├── leak_canary_icon_background.xml │ │ │ │ ├── leak_canary_public.xml │ │ │ │ ├── leak_canary_strings.xml │ │ │ │ ├── leak_canary_themes.xml │ │ │ │ └── strings.xml │ │ │ └── xml/ │ │ │ └── leak_canary_file_paths.xml │ │ └── upload.sh │ ├── dokit-mc/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java/ │ │ │ │ │ └── com/ │ │ │ │ │ └── didichuxing/ │ │ │ │ │ └── doraemonkit/ │ │ │ │ │ └── kit/ │ │ │ │ │ └── mc/ │ │ │ │ │ ├── AbstractMultiController.kt │ │ │ │ │ ├── ClientMultiController.kt │ │ │ │ │ ├── DelayHandler.kt │ │ │ │ │ ├── HostMultiController.kt │ │ │ │ │ ├── MultiControlConfig.kt │ │ │ │ │ ├── MultiControlKit.kt │ │ │ │ │ ├── MultiControlKitTest.kt │ │ │ │ │ ├── MultiControlManager.kt │ │ │ │ │ ├── OnMultiControlModeChangeListener.kt │ │ │ │ │ ├── ability/ │ │ │ │ │ │ ├── DoKitMcAbility.kt │ │ │ │ │ │ └── DoKitMcModuleProcessor.kt │ │ │ │ │ ├── net/ │ │ │ │ │ │ ├── ConnectMode.kt │ │ │ │ │ │ ├── DoKitMcClient.kt │ │ │ │ │ │ ├── DoKitMcHostServer.kt │ │ │ │ │ │ ├── DokitMcConnectManager.kt │ │ │ │ │ │ ├── WSEventProcessor.kt │ │ │ │ │ │ ├── WSSRouter.kt │ │ │ │ │ │ └── WSServerProcessor.kt │ │ │ │ │ ├── oldui/ │ │ │ │ │ │ ├── DoKitMcManager.kt │ │ │ │ │ │ ├── client/ │ │ │ │ │ │ │ ├── ClientDoKitView.kt │ │ │ │ │ │ │ ├── DoKitMcClientFragment.kt │ │ │ │ │ │ │ └── DoKitMcClientHistoryFragment.kt │ │ │ │ │ │ ├── host/ │ │ │ │ │ │ │ ├── DoKitMcHostFragment.kt │ │ │ │ │ │ │ └── HostDoKitView.kt │ │ │ │ │ │ ├── main/ │ │ │ │ │ │ │ └── DoKitMcMainFragment.kt │ │ │ │ │ │ └── record/ │ │ │ │ │ │ ├── DoKitMcDatasFragment.kt │ │ │ │ │ │ └── RecordingDoKitView.kt │ │ │ │ │ ├── report/ │ │ │ │ │ │ ├── MCRecordManager.kt │ │ │ │ │ │ ├── RecordActionCase.kt │ │ │ │ │ │ ├── RecordActionStep.kt │ │ │ │ │ │ ├── RecordData.kt │ │ │ │ │ │ └── ScreenShotManager.java │ │ │ │ │ ├── ui/ │ │ │ │ │ │ ├── BorderDoKitView.java │ │ │ │ │ │ ├── DoKitMcActivity.kt │ │ │ │ │ │ ├── DoKitMcScanActivity.kt │ │ │ │ │ │ ├── McDialogDoKitView.kt │ │ │ │ │ │ ├── McPages.kt │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ ├── McCaseInfoDialogProvider.kt │ │ │ │ │ │ │ ├── McCaseListAdapter.kt │ │ │ │ │ │ │ └── McClientHistoryAdapter.kt │ │ │ │ │ │ └── connect/ │ │ │ │ │ │ ├── MultiControlAllFragment.kt │ │ │ │ │ │ └── MultiControlDoKitView.kt │ │ │ │ │ └── utils/ │ │ │ │ │ ├── ActivityStatusUtil.kt │ │ │ │ │ ├── ClientHistoryUtils.kt │ │ │ │ │ ├── CodeUtils.kt │ │ │ │ │ ├── ConnectHistoryUtils.kt │ │ │ │ │ ├── DensityUtils.kt │ │ │ │ │ ├── McCaseUtils.kt │ │ │ │ │ ├── McPageUtils.kt │ │ │ │ │ └── WSPackageUtils.kt │ │ │ │ └── res/ │ │ │ │ ├── drawable/ │ │ │ │ │ ├── dk_btn_mc_bg.xml │ │ │ │ │ ├── dk_dokitview_mc.xml │ │ │ │ │ ├── dk_dokitview_mc_connect.xml │ │ │ │ │ └── dk_dokitview_mc_recoding.xml │ │ │ │ ├── layout/ │ │ │ │ │ ├── dk_activity_mc.xml │ │ │ │ │ ├── dk_dialog_mc_case_info.xml │ │ │ │ │ ├── dk_dokitview_client.xml │ │ │ │ │ ├── dk_dokitview_connect.xml │ │ │ │ │ ├── dk_dokitview_dialog.xml │ │ │ │ │ ├── dk_dokitview_host.xml │ │ │ │ │ ├── dk_dokitview_recording.xml │ │ │ │ │ ├── dk_fragment_mc_client.xml │ │ │ │ │ ├── dk_fragment_mc_client_history.xml │ │ │ │ │ ├── dk_fragment_mc_connect.xml │ │ │ │ │ ├── dk_fragment_mc_connect_history.xml │ │ │ │ │ ├── dk_fragment_mc_datas.xml │ │ │ │ │ ├── dk_fragment_mc_host.xml │ │ │ │ │ ├── dk_fragment_mc_select.xml │ │ │ │ │ ├── dk_item_mc_case.xml │ │ │ │ │ └── dk_item_mc_client.xml │ │ │ │ ├── values/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-en-rCN/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-zh-rTW/ │ │ │ │ │ └── strings.xml │ │ │ │ ├── values-zh-rUS/ │ │ │ │ │ └── strings.xml │ │ │ │ └── xml/ │ │ │ │ └── mc_accessibity_config.xml │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── ExampleUnitTest.kt │ │ └── upload.sh │ ├── dokit-no-op/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ ├── DoKit.kt │ │ │ ├── DoKitCallBack.kt │ │ │ ├── DoKitMCHummerHelper.java │ │ │ ├── DoraemonKit.kt │ │ │ ├── kit/ │ │ │ │ ├── AbstractKit.kt │ │ │ │ ├── Category.java │ │ │ │ ├── IKit.kt │ │ │ │ ├── core/ │ │ │ │ │ ├── AbsDokitFragment.kt │ │ │ │ │ ├── AbsDokitView.kt │ │ │ │ │ ├── BaseFragment.kt │ │ │ │ │ ├── DokitFrameLayout.java │ │ │ │ │ ├── DokitIntent.kt │ │ │ │ │ ├── DokitView.java │ │ │ │ │ ├── DokitViewInterface.java │ │ │ │ │ ├── DokitViewLayoutParams.java │ │ │ │ │ ├── DokitViewManager.kt │ │ │ │ │ ├── DokitViewManagerInterface.kt │ │ │ │ │ ├── McClientProcessor.kt │ │ │ │ │ └── TouchProxy.java │ │ │ │ ├── network/ │ │ │ │ │ ├── bean/ │ │ │ │ │ │ ├── NetworkRecord.java │ │ │ │ │ │ ├── Request.java │ │ │ │ │ │ └── Response.java │ │ │ │ │ └── okhttp/ │ │ │ │ │ └── interceptor/ │ │ │ │ │ └── DokitExtInterceptor.kt │ │ │ │ ├── performance/ │ │ │ │ │ └── PerformanceValueListener.kt │ │ │ │ ├── test/ │ │ │ │ │ ├── DoKitTestManager.kt │ │ │ │ │ └── TestMode.kt │ │ │ │ └── webdoor/ │ │ │ │ └── WebDoorManager.java │ │ │ └── tcp/ │ │ │ └── ability/ │ │ │ ├── MessageReceiverHook.java │ │ │ ├── MessageSenderHook.java │ │ │ └── TcpMessageHook.java │ │ └── upload.sh │ ├── dokit-okhttp-api/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── okhttp_api/ │ │ │ └── OkHttpWrap.kt │ │ └── upload.sh │ ├── dokit-okhttp-v3/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── okhttp_api/ │ │ │ ├── ByteCountBufferedSinkV3.java │ │ │ └── OkHttpWrapV3.kt │ │ └── upload.sh │ ├── dokit-okhttp-v4/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── okhttp_api/ │ │ │ ├── ByteCountBufferedSinkV4.java │ │ │ └── OkHttpWrapV4.kt │ │ └── upload.sh │ ├── dokit-plugin/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── kotlin/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── plugin/ │ │ │ │ ├── DoKitExt.kt │ │ │ │ ├── DoKitExtUtil.kt │ │ │ │ ├── DoKitPlugin.kt │ │ │ │ ├── DoKitPluginUtil.kt │ │ │ │ ├── DoKitTransformTaskExecutionListener.kt │ │ │ │ ├── extension/ │ │ │ │ │ ├── BigImageExtension.kt │ │ │ │ │ ├── DoKitExtension.kt │ │ │ │ │ ├── GpsExtension.kt │ │ │ │ │ ├── NetworkExtension.kt │ │ │ │ │ ├── SlowMethodExtension.kt │ │ │ │ │ └── WebViewExtension.kt │ │ │ │ ├── processor/ │ │ │ │ │ ├── DoKitComponentHandler.kt │ │ │ │ │ └── DoKitPluginConfigProcessor.kt │ │ │ │ ├── stack_method/ │ │ │ │ │ ├── MethodStackNode.kt │ │ │ │ │ └── MethodStackNodeUtil.kt │ │ │ │ ├── thirdlib/ │ │ │ │ │ ├── ThirdLibInfo.kt │ │ │ │ │ └── ThirdLibVariantProcessor.kt │ │ │ │ └── transform/ │ │ │ │ ├── DoKitBaseTransform.kt │ │ │ │ ├── DoKitCommonTransform.kt │ │ │ │ ├── DoKitCommonTransformV34.kt │ │ │ │ ├── DoKitDependTransform.kt │ │ │ │ ├── DoKitDependTransformV34.kt │ │ │ │ ├── DoKitTransformContext.kt │ │ │ │ ├── DoKitTransformInvocation.kt │ │ │ │ ├── asmtransform/ │ │ │ │ │ ├── BaseDoKitAsmTransformer.kt │ │ │ │ │ └── DoKitAsmTransformer.kt │ │ │ │ └── classtransform/ │ │ │ │ ├── AbsClassTransformer.kt │ │ │ │ ├── BigImgClassTransformer.kt │ │ │ │ ├── CommClassTransformer.kt │ │ │ │ ├── EnterMSClassTransformer.kt │ │ │ │ ├── GPSAMapClassTransformer.kt │ │ │ │ ├── GPSBDClassTransformer.kt │ │ │ │ ├── GPSClassTransformer.kt │ │ │ │ ├── GPSTencentClassTransformer.kt │ │ │ │ ├── GSMClassTransformer.kt │ │ │ │ ├── MSDClassTransformer.kt │ │ │ │ ├── Okhttp3ClassTransformer.kt │ │ │ │ ├── ThirdLibsClassTransformer.kt │ │ │ │ ├── UrlConnectionTransformer.kt │ │ │ │ └── WebViewClassTransformer.kt │ │ │ └── resources/ │ │ │ └── META-INF/ │ │ │ └── gradle-plugins/ │ │ │ └── com.didi.dokit.properties │ │ └── upload.sh │ ├── dokit-pthread-hook/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── kronos/ │ │ │ └── dokit/ │ │ │ └── pthread/ │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── kronos/ │ │ │ │ └── dokit/ │ │ │ │ └── pthread/ │ │ │ │ ├── AutoDumpListener.kt │ │ │ │ ├── PThreadDumpHelper.kt │ │ │ │ ├── PThreadEntity.kt │ │ │ │ ├── PThreadKit.kt │ │ │ │ ├── ViewExtensions.kt │ │ │ │ └── ui/ │ │ │ │ ├── PThreadHookUiActivity.kt │ │ │ │ └── ThreadAdapter.kt │ │ │ └── res/ │ │ │ ├── layout/ │ │ │ │ ├── activity_pthread_hook.xml │ │ │ │ └── recycler_view_thread_hook.xml │ │ │ └── values/ │ │ │ └── values.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── kronos/ │ │ └── dokit/ │ │ └── pthread/ │ │ └── ExampleUnitTest.kt │ ├── dokit-test/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── consumer-rules.pro │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ ├── main/ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── kit/ │ │ │ │ └── test/ │ │ │ │ ├── DoKitTestManager.kt │ │ │ │ ├── OnTestModeChangeListener.kt │ │ │ │ ├── TestMode.kt │ │ │ │ ├── event/ │ │ │ │ │ ├── AccessibilityEventNode.kt │ │ │ │ │ ├── ActionType.kt │ │ │ │ │ ├── ControlEvent.kt │ │ │ │ │ ├── ControlEventManager.kt │ │ │ │ │ ├── ControlEventProcessor.kt │ │ │ │ │ ├── DoKitViewNode.kt │ │ │ │ │ ├── DoKitViewPanelNode.kt │ │ │ │ │ ├── EventErrorCode.kt │ │ │ │ │ ├── EventType.kt │ │ │ │ │ ├── OnControlEventActionListener.kt │ │ │ │ │ ├── OnControlEventActionProcessListener.kt │ │ │ │ │ ├── OnControlEventInterceptor.kt │ │ │ │ │ ├── Position.kt │ │ │ │ │ ├── SystemViewNode.kt │ │ │ │ │ ├── ViewC12c.kt │ │ │ │ │ ├── WindowNode.kt │ │ │ │ │ ├── monitor/ │ │ │ │ │ │ ├── AccessibilityEventMonitor.kt │ │ │ │ │ │ ├── CustomEventMonitor.kt │ │ │ │ │ │ ├── LifecycleEventMonitor.kt │ │ │ │ │ │ └── TcpMessageEventMonitor.kt │ │ │ │ │ └── processor/ │ │ │ │ │ ├── AbstractEventProcessor.kt │ │ │ │ │ ├── AccessibilityEventProcessor.kt │ │ │ │ │ ├── CustomEventProcessor.kt │ │ │ │ │ ├── LifecycleEventProcessor.kt │ │ │ │ │ └── TcpMessageEventProcessor.kt │ │ │ │ ├── hook/ │ │ │ │ │ ├── AccessibilityGetInstanceMethodHook.kt │ │ │ │ │ ├── ViewOnClickListenerEventHook.kt │ │ │ │ │ ├── ViewOnClickListenerProxy.kt │ │ │ │ │ └── ViewOnInitializeAccessibilityEventHook.kt │ │ │ │ ├── mock/ │ │ │ │ │ ├── HttpMockInterceptor.kt │ │ │ │ │ ├── MockManager.kt │ │ │ │ │ ├── OnHttpProxyMockDataListener.kt │ │ │ │ │ ├── OnHttpProxyMockSendListener.kt │ │ │ │ │ ├── ProxyMockCallback.kt │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── AppInfo.kt │ │ │ │ │ │ ├── CaseInfo.kt │ │ │ │ │ │ ├── HostInfo.kt │ │ │ │ │ │ ├── HttpMatchedInfo.kt │ │ │ │ │ │ ├── HttpUploadInfo.kt │ │ │ │ │ │ ├── McCaseInfo.kt │ │ │ │ │ │ ├── McConfigInfo.kt │ │ │ │ │ │ ├── McMockKey.kt │ │ │ │ │ │ └── McResInfo.kt │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── DoKitMockInterceptor.kt │ │ │ │ │ │ ├── DoKitProxyMockInterceptor.kt │ │ │ │ │ │ └── HttpMockServer.kt │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ ├── ProxyCallback.kt │ │ │ │ │ │ ├── ProxyMockManager.kt │ │ │ │ │ │ ├── ProxyMockUtils.kt │ │ │ │ │ │ ├── ProxyQueryData.java │ │ │ │ │ │ ├── ProxyRequest.kt │ │ │ │ │ │ └── ProxyResponse.kt │ │ │ │ │ └── tcp/ │ │ │ │ │ ├── TcpMockManager.kt │ │ │ │ │ └── TcpMockMessageProcessor.kt │ │ │ │ ├── report/ │ │ │ │ │ ├── AutoTestMessage.kt │ │ │ │ │ ├── AutoTestState.kt │ │ │ │ │ ├── FileUploadManager.kt │ │ │ │ │ ├── MCRecordManager.kt │ │ │ │ │ ├── MyWindowBitmap.kt │ │ │ │ │ ├── RecordActionCase.kt │ │ │ │ │ ├── RecordActionStep.kt │ │ │ │ │ ├── RecordData.kt │ │ │ │ │ └── ScreenShotManager.java │ │ │ │ ├── utils/ │ │ │ │ │ ├── DateTime.kt │ │ │ │ │ ├── RandomIdentityUtil.kt │ │ │ │ │ ├── ReflectHookUtil.java │ │ │ │ │ ├── ViewPathUtil.kt │ │ │ │ │ ├── WindowPathUtil.java │ │ │ │ │ └── XposedHookUtil.kt │ │ │ │ └── widget/ │ │ │ │ ├── FlashImageView.kt │ │ │ │ └── FlashTextView.kt │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── didichuxing/ │ │ │ └── doraemonkit/ │ │ │ └── kit/ │ │ │ └── test/ │ │ │ └── ExampleUnitTest.java │ │ └── upload.sh │ ├── dokit-util/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ ├── constant/ │ │ │ │ │ ├── CacheConstants.java │ │ │ │ │ ├── MemoryConstants.java │ │ │ │ │ ├── PermissionConstants.java │ │ │ │ │ ├── RegexConstants.java │ │ │ │ │ └── TimeConstants.java │ │ │ │ └── util/ │ │ │ │ ├── ActivityUtils.java │ │ │ │ ├── AdaptScreenUtils.java │ │ │ │ ├── ApiUtils.java │ │ │ │ ├── AppStoreUtils.java │ │ │ │ ├── AppUtils.java │ │ │ │ ├── ArrayUtils.java │ │ │ │ ├── BarUtils.java │ │ │ │ ├── BatteryUtils.java │ │ │ │ ├── BitUtils.java │ │ │ │ ├── BrightnessUtils.java │ │ │ │ ├── BusUtils.java │ │ │ │ ├── CacheDiskStaticUtils.java │ │ │ │ ├── CacheDiskUtils.java │ │ │ │ ├── CacheDoubleStaticUtils.java │ │ │ │ ├── CacheDoubleUtils.java │ │ │ │ ├── CacheMemoryStaticUtils.java │ │ │ │ ├── CacheMemoryUtils.java │ │ │ │ ├── CameraUtils.java │ │ │ │ ├── CleanUtils.java │ │ │ │ ├── ClickUtils.java │ │ │ │ ├── ClipboardUtils.java │ │ │ │ ├── CloneUtils.java │ │ │ │ ├── CloseUtils.java │ │ │ │ ├── CollectionUtils.java │ │ │ │ ├── ColorUtils.java │ │ │ │ ├── ConvertUtils.java │ │ │ │ ├── CoordinateUtils.java │ │ │ │ ├── CountryUtils.java │ │ │ │ ├── CrashUtils.java │ │ │ │ ├── DangerousUtils.java │ │ │ │ ├── DebouncingUtils.java │ │ │ │ ├── DeviceUtils.java │ │ │ │ ├── DialogUtils.java │ │ │ │ ├── EncodeUtils.java │ │ │ │ ├── EncryptUtils.java │ │ │ │ ├── FileIOUtils.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── FlashlightUtils.java │ │ │ │ ├── FragmentUtils.java │ │ │ │ ├── GlideUtils.java │ │ │ │ ├── GsonUtils.java │ │ │ │ ├── HttpsUtil.java │ │ │ │ ├── ImageUtils.java │ │ │ │ ├── IntentUtils.java │ │ │ │ ├── JsonUtils.java │ │ │ │ ├── KeyboardUtils.java │ │ │ │ ├── LanguageUtils.java │ │ │ │ ├── LocationUtils.java │ │ │ │ ├── LogUtils.java │ │ │ │ ├── LunarUtils.java │ │ │ │ ├── MapUtils.java │ │ │ │ ├── MessengerUtils.java │ │ │ │ ├── MetaDataUtils.java │ │ │ │ ├── NetworkUtils.java │ │ │ │ ├── NotificationUtils.java │ │ │ │ ├── NumberUtils.java │ │ │ │ ├── ObjectUtils.java │ │ │ │ ├── PathUtils.java │ │ │ │ ├── PermissionUtils.java │ │ │ │ ├── PhoneUtils.java │ │ │ │ ├── PinyinUtils.java │ │ │ │ ├── ProcessUtils.java │ │ │ │ ├── RandomUtils.java │ │ │ │ ├── ReflectUtils.java │ │ │ │ ├── RegexUtils.java │ │ │ │ ├── ResourceUtils.java │ │ │ │ ├── RetrofitUtils.java │ │ │ │ ├── RomUtils.java │ │ │ │ ├── SDCardUtils.java │ │ │ │ ├── SPStaticUtils.java │ │ │ │ ├── SPUtils.java │ │ │ │ ├── ScreenUtils.java │ │ │ │ ├── ServiceUtils.java │ │ │ │ ├── ShadowUtils.java │ │ │ │ ├── ShellUtils.java │ │ │ │ ├── SizeUtils.java │ │ │ │ ├── SnackbarUtils.java │ │ │ │ ├── SpanUtils.java │ │ │ │ ├── StringUtils.java │ │ │ │ ├── TemperatureUtils.java │ │ │ │ ├── ThreadUtils.java │ │ │ │ ├── ThrowableUtils.java │ │ │ │ ├── TimeUtils.java │ │ │ │ ├── ToastUtils.java │ │ │ │ ├── TouchUtils.java │ │ │ │ ├── UiMessageUtils.java │ │ │ │ ├── UriUtils.java │ │ │ │ ├── Utils.java │ │ │ │ ├── UtilsActivityLifecycleImpl.java │ │ │ │ ├── UtilsBridge.java │ │ │ │ ├── UtilsFileProvider.java │ │ │ │ ├── UtilsTransActivity.java │ │ │ │ ├── UtilsTransActivity4MainProcess.java │ │ │ │ ├── VibrateUtils.java │ │ │ │ ├── ViewUtils.java │ │ │ │ ├── VolumeUtils.java │ │ │ │ └── ZipUtils.java │ │ │ └── res/ │ │ │ ├── drawable/ │ │ │ │ └── utils_toast_bg.xml │ │ │ ├── layout/ │ │ │ │ └── utils_toast_view.xml │ │ │ ├── values/ │ │ │ │ └── styles.xml │ │ │ ├── values-v21/ │ │ │ │ └── styles.xml │ │ │ └── xml/ │ │ │ └── util_code_provider_paths.xml │ │ └── upload.sh │ ├── dokit-weex/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── proguard-rules.pro │ │ ├── src/ │ │ │ └── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── didichuxing/ │ │ │ │ └── doraemonkit/ │ │ │ │ └── weex/ │ │ │ │ ├── common/ │ │ │ │ │ └── DKCommonActivity.java │ │ │ │ ├── devtool/ │ │ │ │ │ ├── DevToolActivity.java │ │ │ │ │ ├── DevToolScanActivity.java │ │ │ │ │ └── WeexDevToolKit.kt │ │ │ │ ├── info/ │ │ │ │ │ ├── WeexInfo.java │ │ │ │ │ ├── WeexInfoAdapter.java │ │ │ │ │ ├── WeexInfoFragment.java │ │ │ │ │ ├── WeexInfoHacker.java │ │ │ │ │ └── WeexInfoKit.kt │ │ │ │ ├── log/ │ │ │ │ │ ├── WeexLogInfoDoKitView.java │ │ │ │ │ └── WeexLogKit.kt │ │ │ │ └── storage/ │ │ │ │ ├── StorageAdapter.java │ │ │ │ ├── StorageDialogFragment.java │ │ │ │ ├── StorageFragment.java │ │ │ │ ├── StorageHacker.java │ │ │ │ ├── StorageInfo.java │ │ │ │ └── WeexStorageKit.kt │ │ │ └── res/ │ │ │ ├── layout/ │ │ │ │ ├── dk_fragment_info.xml │ │ │ │ ├── dk_fragment_info_item.xml │ │ │ │ ├── dk_fragment_storage.xml │ │ │ │ ├── dk_item_storage_dialog.xml │ │ │ │ ├── dk_item_storage_watch.xml │ │ │ │ └── dk_weex_float_log_info.xml │ │ │ ├── values/ │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── values-en-rUS/ │ │ │ │ └── strings.xml │ │ │ ├── values-zh-rCN/ │ │ │ │ └── strings.xml │ │ │ └── values-zh-rTW/ │ │ │ └── strings.xml │ │ └── upload.sh │ ├── dokit_module.json │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle │ ├── upload.gradle │ ├── upload_didi.sh │ ├── upload_local.sh │ ├── upload_maven.sh │ ├── upload_maven_central.gradle │ └── upload_private.gradle ├── CODE_OF_CONDUCT.md ├── CODE_OF_CONDUCT.zh-cn.md ├── CONTRIBUTING.md ├── Doc/ │ ├── android-ReleaseNotes.md │ ├── iOS-ReleaseNotes.md │ ├── iOS_cn_guide.md │ ├── iOS_en_guide.md │ ├── miniapp-ReleaseNotes.md │ └── miniapp_cn_guide.md ├── DoraemonKit.podspec ├── Flutter/ │ ├── .gitignore │ ├── .metadata │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── LICENSE │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── app/ │ │ │ │ ├── build.gradle │ │ │ │ └── src/ │ │ │ │ ├── debug/ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── linjizong/ │ │ │ │ │ │ └── flutter_app/ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ └── values/ │ │ │ │ │ └── styles.xml │ │ │ │ └── profile/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle │ │ │ ├── gradle/ │ │ │ │ └── wrapper/ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ └── settings.gradle │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ ├── .last_build_id │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner/ │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── AppDelegate.m │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj/ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ └── Main.storyboard │ │ │ │ ├── Info.plist │ │ │ │ ├── Runner-Bridging-Header.h │ │ │ │ └── main.m │ │ │ ├── Runner.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── Runner.xcscheme │ │ │ └── Runner.xcworkspace/ │ │ │ └── xcshareddata/ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ │ ├── lib/ │ │ │ ├── main.dart │ │ │ └── page2.dart │ │ ├── local.properties │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── dokit_library_test.dart │ ├── flutterw │ ├── lib/ │ │ ├── dokit.dart │ │ ├── engine/ │ │ │ ├── dokit_binding.dart │ │ │ └── dokit_http.dart │ │ ├── kit/ │ │ │ ├── apm/ │ │ │ │ ├── apm.dart │ │ │ │ ├── fps_kit.dart │ │ │ │ ├── http_kit.dart │ │ │ │ ├── launch/ │ │ │ │ │ ├── model.dart │ │ │ │ │ ├── page_launch_kit.dart │ │ │ │ │ └── route_observer.dart │ │ │ │ ├── log_kit.dart │ │ │ │ ├── memory_kit.dart │ │ │ │ ├── method_channel_kit.dart │ │ │ │ ├── route_kit.dart │ │ │ │ ├── source_code_kit.dart │ │ │ │ └── vm/ │ │ │ │ ├── version.dart │ │ │ │ ├── vm_helper.dart │ │ │ │ └── vm_service_wrapper.dart │ │ │ ├── biz/ │ │ │ │ └── biz.dart │ │ │ ├── common/ │ │ │ │ ├── basic_info.dart │ │ │ │ └── common.dart │ │ │ ├── kit.dart │ │ │ ├── observer.dart │ │ │ └── visual/ │ │ │ ├── color_pick.dart │ │ │ ├── view_check.dart │ │ │ └── visual.dart │ │ ├── ui/ │ │ │ ├── dokit_app.dart │ │ │ ├── dokit_btn.dart │ │ │ ├── kit_page.dart │ │ │ └── resident_page.dart │ │ ├── util/ │ │ │ ├── byte_util.dart │ │ │ ├── screen_util.dart │ │ │ └── time_util.dart │ │ └── widget/ │ │ ├── dash_decoration.dart │ │ ├── fps_chart.dart │ │ ├── source_code/ │ │ │ ├── source_code_view.dart │ │ │ └── syntax_highlighter.dart │ │ └── widget_build_chain/ │ │ ├── widget_build_chain_page.dart │ │ └── widget_details_page.dart │ ├── pubspec.yaml │ └── test/ │ └── widget_test.dart ├── LICENSE ├── README.md ├── README_EN.md ├── Web/ │ ├── .gitignore │ ├── DEVELOPMENT.md │ ├── LICENSE │ ├── README.md │ ├── jest.config.js │ ├── lerna-debug.log │ ├── lerna.json │ ├── package.json │ ├── packages/ │ │ ├── core/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ └── index.test.js │ │ │ ├── package.json │ │ │ ├── rollup.config.js │ │ │ └── src/ │ │ │ ├── common/ │ │ │ │ ├── components/ │ │ │ │ │ ├── card.vue │ │ │ │ │ ├── dokit-ui/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── layout/ │ │ │ │ │ │ ├── col.css │ │ │ │ │ │ ├── col.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── row.css │ │ │ │ │ │ └── row.js │ │ │ │ │ ├── toast/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── toast.vue │ │ │ │ │ ├── top-bar.vue │ │ │ │ │ └── version.vue │ │ │ │ └── js/ │ │ │ │ ├── EventPlayback.js │ │ │ │ ├── EventRecorder.js │ │ │ │ ├── UIController.js │ │ │ │ ├── dom-events-to-record.js │ │ │ │ ├── feature.js │ │ │ │ ├── finder/ │ │ │ │ │ └── index.js │ │ │ │ ├── icon.js │ │ │ │ ├── lifecycle.js │ │ │ │ ├── node.js │ │ │ │ ├── socket.js │ │ │ │ ├── store.js │ │ │ │ ├── util.js │ │ │ │ └── xpath/ │ │ │ │ └── index.js │ │ │ ├── components/ │ │ │ │ ├── app.vue │ │ │ │ ├── elements-highlight.vue │ │ │ │ ├── home.vue │ │ │ │ ├── hostSuspendedBall.vue │ │ │ │ ├── independ-container.vue │ │ │ │ └── router-container.vue │ │ │ ├── index.js │ │ │ ├── router/ │ │ │ │ ├── index.js │ │ │ │ ├── router.js │ │ │ │ └── routes.js │ │ │ └── store/ │ │ │ └── index.js │ │ ├── utils/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ └── index.test.js │ │ │ ├── package.json │ │ │ ├── rollup.config.js │ │ │ └── src/ │ │ │ ├── deepClone.js │ │ │ ├── dom.js │ │ │ ├── dragable.js │ │ │ ├── eventEmiter.js │ │ │ ├── index.js │ │ │ ├── md5.js │ │ │ ├── network.js │ │ │ └── utils.js │ │ ├── web/ │ │ │ ├── README.md │ │ │ ├── __tests__/ │ │ │ │ └── index.test.js │ │ │ ├── package.json │ │ │ ├── playground/ │ │ │ │ └── index.html │ │ │ ├── rollup.config.js │ │ │ └── src/ │ │ │ ├── assets/ │ │ │ │ ├── CssStore.js │ │ │ │ ├── deepClone.js │ │ │ │ └── util.js │ │ │ ├── common/ │ │ │ │ ├── Card.vue │ │ │ │ └── info-card.vue │ │ │ ├── components/ │ │ │ │ ├── ScanerComponent.vue │ │ │ │ ├── ToolHelloWorld.vue │ │ │ │ └── ToolsContainer.vue │ │ │ ├── feature.js │ │ │ ├── index.js │ │ │ └── plugins/ │ │ │ ├── align-ruler/ │ │ │ │ ├── align-ruler.vue │ │ │ │ ├── index.js │ │ │ │ └── info-box.vue │ │ │ ├── api-mock/ │ │ │ │ ├── index.js │ │ │ │ ├── interface-item.vue │ │ │ │ └── main.vue │ │ │ ├── app-info/ │ │ │ │ ├── ToolAppInfo.vue │ │ │ │ └── index.js │ │ │ ├── console/ │ │ │ │ ├── console-tap.vue │ │ │ │ ├── css/ │ │ │ │ │ └── var.less │ │ │ │ ├── index.js │ │ │ │ ├── js/ │ │ │ │ │ └── console.js │ │ │ │ ├── log-container.vue │ │ │ │ ├── log-detail.vue │ │ │ │ ├── log-item.vue │ │ │ │ ├── main.vue │ │ │ │ └── op-command.vue │ │ │ ├── demo-plugin/ │ │ │ │ ├── ToolHelloWorld.vue │ │ │ │ └── index.js │ │ │ ├── demo-single-plugin/ │ │ │ │ ├── FPS.vue │ │ │ │ ├── IndependPluginDemo.vue │ │ │ │ └── index.js │ │ │ ├── element/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ElementAttributes.vue │ │ │ │ │ ├── ElementBoxModel.vue │ │ │ │ │ ├── ElementBreadcrumb.vue │ │ │ │ │ ├── ElementComputedStyle.vue │ │ │ │ │ └── ElementStyles.vue │ │ │ │ ├── elementContainer.vue │ │ │ │ ├── elementDetails.vue │ │ │ │ ├── elementSnippet.vue │ │ │ │ ├── elementTree.vue │ │ │ │ └── index.js │ │ │ ├── h5-door/ │ │ │ │ ├── ToolH5Door.vue │ │ │ │ └── index.js │ │ │ ├── network/ │ │ │ │ ├── index.js │ │ │ │ ├── js/ │ │ │ │ │ └── request.js │ │ │ │ ├── main.vue │ │ │ │ └── request-item.vue │ │ │ ├── one-machine-with-multiple-controls/ │ │ │ │ ├── app.vue │ │ │ │ └── index.js │ │ │ ├── resources/ │ │ │ │ ├── css/ │ │ │ │ │ └── var.less │ │ │ │ ├── index.js │ │ │ │ ├── js/ │ │ │ │ │ └── resources.js │ │ │ │ ├── main.vue │ │ │ │ ├── resource-container.vue │ │ │ │ ├── resource-item.vue │ │ │ │ └── resource-tap.vue │ │ │ ├── scan-code/ │ │ │ │ ├── app.vue │ │ │ │ └── index.js │ │ │ ├── storage/ │ │ │ │ ├── cookie.vue │ │ │ │ ├── index.js │ │ │ │ ├── info-card.vue │ │ │ │ ├── js/ │ │ │ │ │ └── storage.js │ │ │ │ ├── local-storage.vue │ │ │ │ ├── main.vue │ │ │ │ └── session-storage.vue │ │ │ └── web-vitals-time/ │ │ │ ├── index.js │ │ │ └── info-box.vue │ │ └── web-independent/ │ │ ├── README.md │ │ ├── package.json │ │ ├── rollup.config.js │ │ └── src/ │ │ └── index.js │ ├── playground/ │ │ ├── independent.html │ │ ├── index.html │ │ ├── index2.html │ │ ├── index3.html │ │ └── liveReload.js │ └── scripts/ │ └── dev-playground.js ├── iOS/ │ ├── .gitignore │ ├── Demo/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── ViewController.swift │ ├── Demo.xcodeproj/ │ │ ├── project.pbxproj │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ └── Demo.xcscheme │ ├── DoKit/ │ │ ├── Assets/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── Contents.json │ │ │ │ └── dokit_logo.imageset/ │ │ │ │ └── Contents.json │ │ │ └── DKTrayViewController.xib │ │ └── Classes/ │ │ ├── CFoundation/ │ │ │ ├── common.h │ │ │ ├── hook.c │ │ │ └── hook.h │ │ ├── Core/ │ │ │ ├── DKTrayViewController.h │ │ │ ├── DKTrayViewController.m │ │ │ ├── DoKit.h │ │ │ └── DoKit.m │ │ ├── EventSynthesize/ │ │ │ ├── UITouch+DKEventSynthesize.h │ │ │ ├── UITouch+DKEventSynthesize.m │ │ │ ├── UIView+EventSynthesize.h │ │ │ └── UIView+EventSynthesize.m │ │ └── Foundation/ │ │ ├── DKMultiControlProtocol.h │ │ ├── DKMultiControlProtocol.m │ │ ├── DKMultiControlStreamManager.h │ │ ├── DKMultiControlStreamManager.m │ │ ├── DKQRCodeScanLogic.h │ │ ├── DKQRCodeScanLogic.m │ │ ├── DKQRCodeScanView.h │ │ ├── DKQRCodeScanView.m │ │ ├── DKQRCodeScanViewController.h │ │ ├── DKQRCodeScanViewController.m │ │ ├── DKWebSocketSession.h │ │ ├── DKWebSocketSession.m │ │ ├── DTO/ │ │ │ ├── DKActionDTOModel.h │ │ │ ├── DKActionDTOModel.m │ │ │ ├── DKCommonDTOModel.h │ │ │ ├── DKCommonDTOModel.m │ │ │ ├── DKDataRequestDTOModel.h │ │ │ ├── DKDataRequestDTOModel.m │ │ │ ├── DKDataResponseDTOModel.h │ │ │ ├── DKDataResponseDTOModel.m │ │ │ ├── DKLoginDataDTOModel.h │ │ │ └── DKLoginDataDTOModel.m │ │ ├── NSURLSessionConfiguration+DoKit.h │ │ └── NSURLSessionConfiguration+DoKit.m │ ├── DoraemonKit/ │ │ ├── Framework/ │ │ │ └── DoraemonLoadAnalyze.framework/ │ │ │ ├── DoraemonLoadAnalyze │ │ │ ├── Headers/ │ │ │ │ └── DoraemonLoadAnalyze.h │ │ │ ├── Info.plist │ │ │ └── Modules/ │ │ │ └── module.modulemap │ │ ├── Resource/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── Contents.json │ │ │ │ ├── dk_icon_mc.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── dk_mc_banner.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_align.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_app_info.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_app_start_time.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_arrow_down.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_back.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_back_dark.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_check_circle.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_check_circle_fill.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_close.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_close_dark.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_close_white.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_cpu.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_crash.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_database.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_default.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_dir.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_expand.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_expand_no.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_file.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_file_2.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_file_sync.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_file_sync_banner.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_fps.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_h5.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health_bg.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health_cell_bg.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health_end.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health_slide.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health_slideTop.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_health_start.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_hierarchy_info.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_hierarchy_parent.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_hierarchy_select.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_hierarchy_subview.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_js.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_kadun.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_location.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_log.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_logo.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_logo_dark.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_max.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_memory.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_memory_leak.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_method_use_time.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_min.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_cancle.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_data.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_data_selected.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_detail_down.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_detail_up.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_filter_down.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_filter_up.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_gps.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_selected.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_up.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_mock_up_selected.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_more.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_net.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_netflow_list_select.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_netflow_list_unselect.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_netflow_summary_select.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_netflow_summary_unselect.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_nslog.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_qingchu.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_scan.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_scan_line.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_search.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_search_highlight.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_self.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_setting.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_straw.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_time_profiler.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_ui.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_view_check.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_view_level.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_viewmetrics.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── doraemon_visual.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── doraemon_weaknet.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── en.lproj/ │ │ │ │ └── Doraemon.strings │ │ │ └── zh-Hans.lproj/ │ │ │ └── Doraemon.strings │ │ └── Src/ │ │ ├── Core/ │ │ │ ├── Base/ │ │ │ │ ├── DoraemonBaseViewController.h │ │ │ │ ├── DoraemonBaseViewController.m │ │ │ │ ├── DoraemonNavBarItemModel.h │ │ │ │ ├── DoraemonNavBarItemModel.m │ │ │ │ ├── DoraemonStatusBarViewController.h │ │ │ │ ├── DoraemonStatusBarViewController.m │ │ │ │ └── View/ │ │ │ │ ├── DoraemonBaseBigTitleView.h │ │ │ │ └── DoraemonBaseBigTitleView.m │ │ │ ├── Cache/ │ │ │ │ ├── DoraemonCacheManager.h │ │ │ │ └── DoraemonCacheManager.m │ │ │ ├── Category/ │ │ │ │ ├── Foundation+Doraemon.m │ │ │ │ ├── NSObject+Doraemon.h │ │ │ │ ├── NSObject+Doraemon.m │ │ │ │ ├── UIColor+Doraemon.h │ │ │ │ ├── UIColor+Doraemon.m │ │ │ │ ├── UIImage+Doraemon.h │ │ │ │ ├── UIImage+Doraemon.m │ │ │ │ ├── UIView+Doraemon.h │ │ │ │ ├── UIView+Doraemon.m │ │ │ │ ├── UIViewController+Doraemon.h │ │ │ │ └── UIViewController+Doraemon.m │ │ │ ├── CommonUI/ │ │ │ │ ├── Alert/ │ │ │ │ │ ├── DoraemonAlertUtil.h │ │ │ │ │ └── DoraemonAlertUtil.m │ │ │ │ ├── CellBtn/ │ │ │ │ │ ├── DoraemonCellButton.h │ │ │ │ │ └── DoraemonCellButton.m │ │ │ │ ├── CellInput/ │ │ │ │ │ ├── DoraemonCellInput.h │ │ │ │ │ └── DoraemonCellInput.m │ │ │ │ ├── CellSwitch/ │ │ │ │ │ ├── DoraemonCellSwitch.h │ │ │ │ │ └── DoraemonCellSwitch.m │ │ │ │ ├── Charts/ │ │ │ │ │ ├── DoraemonBarChart.h │ │ │ │ │ ├── DoraemonBarChart.m │ │ │ │ │ ├── DoraemonChart.h │ │ │ │ │ ├── DoraemonChart.m │ │ │ │ │ ├── DoraemonChartAxis.h │ │ │ │ │ ├── DoraemonChartAxis.m │ │ │ │ │ ├── DoraemonChartDataItem.h │ │ │ │ │ ├── DoraemonChartDataItem.m │ │ │ │ │ ├── DoraemonPieChart.h │ │ │ │ │ ├── DoraemonPieChart.m │ │ │ │ │ ├── DoraemonXAxis.h │ │ │ │ │ ├── DoraemonXAxis.m │ │ │ │ │ ├── DoraemonYAxis.h │ │ │ │ │ └── DoraemonYAxis.m │ │ │ │ ├── Label/ │ │ │ │ │ ├── DoraemonCopyLabel.h │ │ │ │ │ └── DoraemonCopyLabel.m │ │ │ │ ├── Oscillogram/ │ │ │ │ │ ├── DoraemonOscillogramView.h │ │ │ │ │ ├── DoraemonOscillogramView.m │ │ │ │ │ ├── DoraemonOscillogramViewController.h │ │ │ │ │ ├── DoraemonOscillogramViewController.m │ │ │ │ │ ├── DoraemonOscillogramWindow.h │ │ │ │ │ ├── DoraemonOscillogramWindow.m │ │ │ │ │ ├── DoraemonOscillogramWindowManager.h │ │ │ │ │ └── DoraemonOscillogramWindowManager.m │ │ │ │ ├── Toast/ │ │ │ │ │ ├── DoraemonToastUtil.h │ │ │ │ │ └── DoraemonToastUtil.m │ │ │ │ └── Visual/ │ │ │ │ ├── DoraemonVisualInfoWindow.h │ │ │ │ ├── DoraemonVisualInfoWindow.m │ │ │ │ ├── DoraemonVisualMagnifierWindow.h │ │ │ │ └── DoraemonVisualMagnifierWindow.m │ │ │ ├── Define/ │ │ │ │ └── DoraemonDefine.h │ │ │ ├── DoraemonKit.h │ │ │ ├── Entry/ │ │ │ │ ├── Entry/ │ │ │ │ │ ├── DoraemonEntryWindow.h │ │ │ │ │ └── DoraemonEntryWindow.m │ │ │ │ └── Home/ │ │ │ │ ├── Cell/ │ │ │ │ │ ├── DoraemonHomeCell.h │ │ │ │ │ ├── DoraemonHomeCell.m │ │ │ │ │ ├── DoraemonHomeCloseCell.h │ │ │ │ │ ├── DoraemonHomeCloseCell.m │ │ │ │ │ ├── DoraemonHomeFootCell.h │ │ │ │ │ ├── DoraemonHomeFootCell.m │ │ │ │ │ ├── DoraemonHomeHeadCell.h │ │ │ │ │ └── DoraemonHomeHeadCell.m │ │ │ │ ├── DoraemonHomeViewController.h │ │ │ │ ├── DoraemonHomeViewController.m │ │ │ │ ├── DoraemonHomeWindow.h │ │ │ │ ├── DoraemonHomeWindow.m │ │ │ │ ├── DoraemonNavigationController.h │ │ │ │ ├── DoraemonNavigationController.m │ │ │ │ └── Settings/ │ │ │ │ ├── DoraemonSettingCell.h │ │ │ │ ├── DoraemonSettingCell.m │ │ │ │ ├── DoraemonSettingViewController.h │ │ │ │ ├── DoraemonSettingViewController.m │ │ │ │ └── KitManager/ │ │ │ │ ├── DoraemonKitManagerViewController.h │ │ │ │ ├── DoraemonKitManagerViewController.m │ │ │ │ └── View/ │ │ │ │ ├── DoraemonKitManagerCell.h │ │ │ │ ├── DoraemonKitManagerCell.m │ │ │ │ ├── DoraemonKitManagerHeadCell.h │ │ │ │ ├── DoraemonKitManagerHeadCell.m │ │ │ │ ├── DoraemonKitManagerResetCell.h │ │ │ │ └── DoraemonKitManagerResetCell.m │ │ │ ├── Manager/ │ │ │ │ ├── DoraemonManager.h │ │ │ │ └── DoraemonManager.m │ │ │ ├── Network/ │ │ │ │ └── Interceptor/ │ │ │ │ ├── DoraemonNSURLProtocol.h │ │ │ │ ├── DoraemonNSURLProtocol.m │ │ │ │ ├── DoraemonNetworkInterceptor.h │ │ │ │ ├── DoraemonNetworkInterceptor.m │ │ │ │ ├── DoraemonURLSessionDemux.h │ │ │ │ ├── DoraemonURLSessionDemux.m │ │ │ │ ├── NSURLSessionConfiguration+Doraemon.h │ │ │ │ └── NSURLSessionConfiguration+Doraemon.m │ │ │ ├── Plugin/ │ │ │ │ ├── Common/ │ │ │ │ │ ├── AppInfo/ │ │ │ │ │ │ ├── DoraemonAppInfoCell.h │ │ │ │ │ │ ├── DoraemonAppInfoCell.m │ │ │ │ │ │ ├── DoraemonAppInfoPlugin.h │ │ │ │ │ │ ├── DoraemonAppInfoPlugin.m │ │ │ │ │ │ ├── DoraemonAppInfoUtil.h │ │ │ │ │ │ ├── DoraemonAppInfoUtil.m │ │ │ │ │ │ ├── DoraemonAppInfoViewController.h │ │ │ │ │ │ └── DoraemonAppInfoViewController.m │ │ │ │ │ ├── AppSetting/ │ │ │ │ │ │ ├── DoraemonAppSettingPlugin.h │ │ │ │ │ │ └── DoraemonAppSettingPlugin.m │ │ │ │ │ ├── DeleteLocalData/ │ │ │ │ │ │ ├── DoraemonDeleteLocalDataPlugin.h │ │ │ │ │ │ ├── DoraemonDeleteLocalDataPlugin.m │ │ │ │ │ │ ├── DoraemonDeleteLocalDataViewController.h │ │ │ │ │ │ └── DoraemonDeleteLocalDataViewController.m │ │ │ │ │ ├── H5/ │ │ │ │ │ │ ├── DoraemonDefaultWebViewController.h │ │ │ │ │ │ ├── DoraemonDefaultWebViewController.m │ │ │ │ │ │ ├── DoraemonH5Plugin.h │ │ │ │ │ │ ├── DoraemonH5Plugin.m │ │ │ │ │ │ ├── DoraemonH5ViewController.h │ │ │ │ │ │ ├── DoraemonH5ViewController.m │ │ │ │ │ │ ├── DoraemonQRCodeViewController.h │ │ │ │ │ │ ├── DoraemonQRCodeViewController.m │ │ │ │ │ │ └── QRCode/ │ │ │ │ │ │ ├── DoraemonQRScanView.h │ │ │ │ │ │ └── DoraemonQRScanView.m │ │ │ │ │ ├── JavaScript/ │ │ │ │ │ │ ├── DoraemonJavaScriptDetailViewController.h │ │ │ │ │ │ ├── DoraemonJavaScriptDetailViewController.m │ │ │ │ │ │ ├── DoraemonJavaScriptPlugin.h │ │ │ │ │ │ ├── DoraemonJavaScriptPlugin.m │ │ │ │ │ │ ├── DoraemonJavaScriptViewController.h │ │ │ │ │ │ ├── DoraemonJavaScriptViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonJavaScriptManager.h │ │ │ │ │ │ └── DoraemonJavaScriptManager.m │ │ │ │ │ ├── NSLog/ │ │ │ │ │ │ ├── DoraemonNSLogPlugin.h │ │ │ │ │ │ ├── DoraemonNSLogPlugin.m │ │ │ │ │ │ ├── DoraemonNSLogViewController.h │ │ │ │ │ │ ├── DoraemonNSLogViewController.m │ │ │ │ │ │ ├── Function/ │ │ │ │ │ │ │ ├── DoraemonNSLogManager.h │ │ │ │ │ │ │ ├── DoraemonNSLogManager.m │ │ │ │ │ │ │ ├── DoraemonNSLogModel.h │ │ │ │ │ │ │ └── DoraemonNSLogModel.m │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── DoraemonNSLogListCell.h │ │ │ │ │ │ ├── DoraemonNSLogListCell.m │ │ │ │ │ │ ├── DoraemonNSLogListViewController.h │ │ │ │ │ │ ├── DoraemonNSLogListViewController.m │ │ │ │ │ │ ├── DoraemonNSLogSearchView.h │ │ │ │ │ │ └── DoraemonNSLogSearchView.m │ │ │ │ │ ├── NSUserDefaults/ │ │ │ │ │ │ ├── DoraemonNSUserDefaultsPlugin.h │ │ │ │ │ │ ├── DoraemonNSUserDefaultsPlugin.m │ │ │ │ │ │ ├── Model/ │ │ │ │ │ │ │ ├── DoraemonNSUserDefaultsModel.h │ │ │ │ │ │ │ └── DoraemonNSUserDefaultsModel.m │ │ │ │ │ │ └── ViewControllers/ │ │ │ │ │ │ ├── DoraemonNSUserDefaultsEditViewController.h │ │ │ │ │ │ ├── DoraemonNSUserDefaultsEditViewController.m │ │ │ │ │ │ ├── DoraemonNSUserDefaultsViewController.h │ │ │ │ │ │ └── DoraemonNSUserDefaultsViewController.m │ │ │ │ │ └── Sanbox/ │ │ │ │ │ ├── DoraemonSandboxPlugin.h │ │ │ │ │ ├── DoraemonSandboxPlugin.m │ │ │ │ │ ├── Util/ │ │ │ │ │ │ ├── DoraemonDBManager.h │ │ │ │ │ │ └── DoraemonDBManager.m │ │ │ │ │ └── VC/ │ │ │ │ │ ├── DB/ │ │ │ │ │ │ ├── DoraemonDBCell.h │ │ │ │ │ │ ├── DoraemonDBCell.m │ │ │ │ │ │ ├── DoraemonDBRowView.h │ │ │ │ │ │ ├── DoraemonDBRowView.m │ │ │ │ │ │ ├── DoraemonDBShowView.h │ │ │ │ │ │ ├── DoraemonDBShowView.m │ │ │ │ │ │ ├── DoraemonDBTableViewController.h │ │ │ │ │ │ └── DoraemonDBTableViewController.m │ │ │ │ │ ├── DoraemonSanboxDetailViewController.h │ │ │ │ │ ├── DoraemonSanboxDetailViewController.m │ │ │ │ │ ├── DoraemonSandboxCell.h │ │ │ │ │ ├── DoraemonSandboxCell.m │ │ │ │ │ ├── DoraemonSandboxModel.h │ │ │ │ │ ├── DoraemonSandboxModel.m │ │ │ │ │ ├── DoraemonSandboxViewController.h │ │ │ │ │ └── DoraemonSandboxViewController.m │ │ │ │ ├── Performance/ │ │ │ │ │ ├── ANR/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── DoraemonANRDetailViewController.h │ │ │ │ │ │ │ └── DoraemonANRDetailViewController.m │ │ │ │ │ │ ├── DoraemonANRPlugin.h │ │ │ │ │ │ ├── DoraemonANRPlugin.m │ │ │ │ │ │ ├── DoraemonANRViewController.h │ │ │ │ │ │ ├── DoraemonANRViewController.m │ │ │ │ │ │ ├── Function/ │ │ │ │ │ │ │ ├── DoraemonANRManager.h │ │ │ │ │ │ │ ├── DoraemonANRManager.m │ │ │ │ │ │ │ ├── DoraemonANRTool.h │ │ │ │ │ │ │ ├── DoraemonANRTool.m │ │ │ │ │ │ │ ├── DoraemonANRTracker.h │ │ │ │ │ │ │ ├── DoraemonANRTracker.m │ │ │ │ │ │ │ ├── DoraemonPingThread.h │ │ │ │ │ │ │ └── DoraemonPingThread.m │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── DoraemonANRListCell.h │ │ │ │ │ │ ├── DoraemonANRListCell.m │ │ │ │ │ │ ├── DoraemonANRListViewController.h │ │ │ │ │ │ └── DoraemonANRListViewController.m │ │ │ │ │ ├── CPU/ │ │ │ │ │ │ ├── DoraemonCPUPlugin.h │ │ │ │ │ │ ├── DoraemonCPUPlugin.m │ │ │ │ │ │ ├── DoraemonCPUViewController.h │ │ │ │ │ │ ├── DoraemonCPUViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonCPUOscillogramViewController.h │ │ │ │ │ │ ├── DoraemonCPUOscillogramViewController.m │ │ │ │ │ │ ├── DoraemonCPUOscillogramWindow.h │ │ │ │ │ │ ├── DoraemonCPUOscillogramWindow.m │ │ │ │ │ │ ├── DoraemonCPUUtil.h │ │ │ │ │ │ └── DoraemonCPUUtil.m │ │ │ │ │ ├── Crash/ │ │ │ │ │ │ ├── DoraemonCrashPlugin.h │ │ │ │ │ │ ├── DoraemonCrashPlugin.m │ │ │ │ │ │ ├── DoraemonCrashViewController.h │ │ │ │ │ │ ├── DoraemonCrashViewController.m │ │ │ │ │ │ ├── Function/ │ │ │ │ │ │ │ ├── DoraemonCrashSignalExceptionHandler.h │ │ │ │ │ │ │ ├── DoraemonCrashSignalExceptionHandler.m │ │ │ │ │ │ │ ├── DoraemonCrashTool.h │ │ │ │ │ │ │ ├── DoraemonCrashTool.m │ │ │ │ │ │ │ ├── DoraemonCrashUncaughtExceptionHandler.h │ │ │ │ │ │ │ └── DoraemonCrashUncaughtExceptionHandler.m │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── DoraemonCrashListCell.h │ │ │ │ │ │ ├── DoraemonCrashListCell.m │ │ │ │ │ │ ├── DoraemonCrashListViewController.h │ │ │ │ │ │ └── DoraemonCrashListViewController.m │ │ │ │ │ ├── FPS/ │ │ │ │ │ │ ├── DoraemonFPSPlugin.h │ │ │ │ │ │ ├── DoraemonFPSPlugin.m │ │ │ │ │ │ ├── DoraemonFPSViewController.h │ │ │ │ │ │ ├── DoraemonFPSViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonFPSOscillogramViewController.h │ │ │ │ │ │ ├── DoraemonFPSOscillogramViewController.m │ │ │ │ │ │ ├── DoraemonFPSOscillogramWindow.h │ │ │ │ │ │ ├── DoraemonFPSOscillogramWindow.m │ │ │ │ │ │ ├── DoraemonFPSUtil.h │ │ │ │ │ │ └── DoraemonFPSUtil.m │ │ │ │ │ ├── LargeImageDetection/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── DoraemonImageDetectionCell.h │ │ │ │ │ │ │ ├── DoraemonImageDetectionCell.m │ │ │ │ │ │ │ ├── DoraemonLargeImageDetectionListViewController.h │ │ │ │ │ │ │ ├── DoraemonLargeImageDetectionListViewController.m │ │ │ │ │ │ │ ├── DoraemonResponseImageModel.h │ │ │ │ │ │ │ └── DoraemonResponseImageModel.m │ │ │ │ │ │ ├── DoraemonLargeImagePlugin.h │ │ │ │ │ │ ├── DoraemonLargeImagePlugin.m │ │ │ │ │ │ ├── DoraemonLargeImageViewController.h │ │ │ │ │ │ ├── DoraemonLargeImageViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonLargeImageDetectionManager.h │ │ │ │ │ │ ├── DoraemonLargeImageDetectionManager.m │ │ │ │ │ │ ├── UIImageView+DoraemonSDImage.h │ │ │ │ │ │ └── UIImageView+DoraemonSDImage.m │ │ │ │ │ ├── Memory/ │ │ │ │ │ │ ├── DoraemonMemoryPlugin.h │ │ │ │ │ │ ├── DoraemonMemoryPlugin.m │ │ │ │ │ │ ├── DoraemonMemoryViewController.h │ │ │ │ │ │ ├── DoraemonMemoryViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonMemoryOscillogramViewController.h │ │ │ │ │ │ ├── DoraemonMemoryOscillogramViewController.m │ │ │ │ │ │ ├── DoraemonMemoryOscillogramWindow.h │ │ │ │ │ │ ├── DoraemonMemoryOscillogramWindow.m │ │ │ │ │ │ ├── DoraemonMemoryUtil.h │ │ │ │ │ │ └── DoraemonMemoryUtil.m │ │ │ │ │ ├── NetFlow/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── DoraemonNetFlowDetailCell.h │ │ │ │ │ │ │ ├── DoraemonNetFlowDetailCell.m │ │ │ │ │ │ │ ├── DoraemonNetFlowDetailSegment.h │ │ │ │ │ │ │ ├── DoraemonNetFlowDetailSegment.m │ │ │ │ │ │ │ ├── DoraemonNetFlowDetailViewController.h │ │ │ │ │ │ │ └── DoraemonNetFlowDetailViewController.m │ │ │ │ │ │ ├── DoraemonNetFlowPlugin.h │ │ │ │ │ │ ├── DoraemonNetFlowPlugin.m │ │ │ │ │ │ ├── DoraemonNetFlowViewController.h │ │ │ │ │ │ ├── DoraemonNetFlowViewController.m │ │ │ │ │ │ ├── Function/ │ │ │ │ │ │ │ ├── DoraemonNetFlowDataSource.h │ │ │ │ │ │ │ ├── DoraemonNetFlowDataSource.m │ │ │ │ │ │ │ ├── DoraemonNetFlowHttpModel.h │ │ │ │ │ │ │ ├── DoraemonNetFlowHttpModel.m │ │ │ │ │ │ │ ├── DoraemonNetFlowManager.h │ │ │ │ │ │ │ ├── DoraemonNetFlowManager.m │ │ │ │ │ │ │ ├── Util/ │ │ │ │ │ │ │ │ ├── DoraemonUrlUtil.h │ │ │ │ │ │ │ │ ├── DoraemonUrlUtil.m │ │ │ │ │ │ │ │ ├── NSURLRequest+Doraemon.h │ │ │ │ │ │ │ │ └── NSURLRequest+Doraemon.m │ │ │ │ │ │ │ └── View/ │ │ │ │ │ │ │ ├── DoraemonNetFlowOscillogramViewController.h │ │ │ │ │ │ │ ├── DoraemonNetFlowOscillogramViewController.m │ │ │ │ │ │ │ ├── DoraemonNetFlowOscillogramWindow.h │ │ │ │ │ │ │ └── DoraemonNetFlowOscillogramWindow.m │ │ │ │ │ │ ├── List/ │ │ │ │ │ │ │ ├── DoraemonNetFlowListCell.h │ │ │ │ │ │ │ ├── DoraemonNetFlowListCell.m │ │ │ │ │ │ │ ├── DoraemonNetFlowListViewController.h │ │ │ │ │ │ │ └── DoraemonNetFlowListViewController.m │ │ │ │ │ │ └── Summary/ │ │ │ │ │ │ ├── DoraemonNetFlowSummaryViewController.h │ │ │ │ │ │ ├── DoraemonNetFlowSummaryViewController.m │ │ │ │ │ │ └── View/ │ │ │ │ │ │ ├── DoraemonNetFlowSummaryMethodDataView.h │ │ │ │ │ │ ├── DoraemonNetFlowSummaryMethodDataView.m │ │ │ │ │ │ ├── DoraemonNetFlowSummaryTotalDataView.h │ │ │ │ │ │ ├── DoraemonNetFlowSummaryTotalDataView.m │ │ │ │ │ │ ├── DoraemonNetFlowSummaryTypeDataView.h │ │ │ │ │ │ └── DoraemonNetFlowSummaryTypeDataView.m │ │ │ │ │ ├── StartTime/ │ │ │ │ │ │ ├── DoraemonStartTimePlugin.h │ │ │ │ │ │ ├── DoraemonStartTimePlugin.m │ │ │ │ │ │ ├── DoraemonStartTimeViewController.h │ │ │ │ │ │ ├── DoraemonStartTimeViewController.m │ │ │ │ │ │ └── TimeProfiler/ │ │ │ │ │ │ ├── DoraemonStartTimeProfilerViewController.h │ │ │ │ │ │ └── DoraemonStartTimeProfilerViewController.m │ │ │ │ │ ├── SubThreadUICheck/ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ ├── DoraemonSubThreadUICheckDetailViewController.h │ │ │ │ │ │ │ └── DoraemonSubThreadUICheckDetailViewController.m │ │ │ │ │ │ ├── DoraemonSubThreadUICheckPlugin.h │ │ │ │ │ │ ├── DoraemonSubThreadUICheckPlugin.m │ │ │ │ │ │ ├── DoraemonSubThreadUICheckViewController.h │ │ │ │ │ │ ├── DoraemonSubThreadUICheckViewController.m │ │ │ │ │ │ ├── Function/ │ │ │ │ │ │ │ ├── DoraemonSubThreadUICheckManager.h │ │ │ │ │ │ │ ├── DoraemonSubThreadUICheckManager.m │ │ │ │ │ │ │ ├── UIView+DoraemonSubThreadUICheck.h │ │ │ │ │ │ │ └── UIView+DoraemonSubThreadUICheck.m │ │ │ │ │ │ └── List/ │ │ │ │ │ │ ├── DoraemonSubThreadUICheckListCell.h │ │ │ │ │ │ ├── DoraemonSubThreadUICheckListCell.m │ │ │ │ │ │ ├── DoraemonSubThreadUICheckListViewController.h │ │ │ │ │ │ └── DoraemonSubThreadUICheckListViewController.m │ │ │ │ │ ├── TimeProfiler/ │ │ │ │ │ │ ├── DoraemonTimeProfilerPlugin.h │ │ │ │ │ │ ├── DoraemonTimeProfilerPlugin.m │ │ │ │ │ │ ├── DoraemonTimeProfilerViewController.h │ │ │ │ │ │ ├── DoraemonTimeProfilerViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonTimeProfiler.h │ │ │ │ │ │ ├── DoraemonTimeProfiler.m │ │ │ │ │ │ ├── DoraemonTimeProfilerCore.c │ │ │ │ │ │ ├── DoraemonTimeProfilerCore.h │ │ │ │ │ │ ├── DoraemonTimeProfilerRecord.h │ │ │ │ │ │ └── DoraemonTimeProfilerRecord.m │ │ │ │ │ ├── UIProfile/ │ │ │ │ │ │ ├── DoraemonUIProfilePlugin.h │ │ │ │ │ │ ├── DoraemonUIProfilePlugin.m │ │ │ │ │ │ ├── DoraemonUIProfileViewController.h │ │ │ │ │ │ ├── DoraemonUIProfileViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonUIProfileManager.h │ │ │ │ │ │ ├── DoraemonUIProfileManager.m │ │ │ │ │ │ ├── DoraemonUIProfileWindow.h │ │ │ │ │ │ ├── DoraemonUIProfileWindow.m │ │ │ │ │ │ ├── UIViewController+DoraemonUIProfile.h │ │ │ │ │ │ └── UIViewController+DoraemonUIProfile.m │ │ │ │ │ ├── VCProfiler/ │ │ │ │ │ │ ├── UIViewController+DoraemonVCProfiler.h │ │ │ │ │ │ ├── UIViewController+DoraemonVCProfiler.m │ │ │ │ │ │ ├── WKWebView+Doraemon.h │ │ │ │ │ │ └── WKWebView+Doraemon.m │ │ │ │ │ └── WeakNetwork/ │ │ │ │ │ ├── DoraemonWeakNetworkPlugin.h │ │ │ │ │ ├── DoraemonWeakNetworkPlugin.m │ │ │ │ │ ├── DoraemonWeakNetworkViewController.h │ │ │ │ │ ├── DoraemonWeakNetworkViewController.m │ │ │ │ │ ├── Function/ │ │ │ │ │ │ ├── DoraemonWeakNetworkHandle.h │ │ │ │ │ │ ├── DoraemonWeakNetworkHandle.m │ │ │ │ │ │ ├── DoraemonWeakNetworkManager.h │ │ │ │ │ │ └── DoraemonWeakNetworkManager.m │ │ │ │ │ └── View/ │ │ │ │ │ ├── DoraemonWeakNetworkDetailView.h │ │ │ │ │ ├── DoraemonWeakNetworkDetailView.m │ │ │ │ │ ├── DoraemonWeakNetworkInputView.h │ │ │ │ │ ├── DoraemonWeakNetworkInputView.m │ │ │ │ │ ├── DoraemonWeakNetworkLevelView.h │ │ │ │ │ ├── DoraemonWeakNetworkLevelView.m │ │ │ │ │ └── Window/ │ │ │ │ │ ├── DoraemonWeakNetworkWindow.h │ │ │ │ │ └── DoraemonWeakNetworkWindow.m │ │ │ │ ├── Platform/ │ │ │ │ │ ├── FileSync/ │ │ │ │ │ │ ├── DoraemonFileSyncPlugin.h │ │ │ │ │ │ ├── DoraemonFileSyncPlugin.m │ │ │ │ │ │ ├── DoraemonFileSyncViewController.h │ │ │ │ │ │ ├── DoraemonFileSyncViewController.m │ │ │ │ │ │ └── Function/ │ │ │ │ │ │ ├── DoraemonFileSyncManager.h │ │ │ │ │ │ └── DoraemonFileSyncManager.m │ │ │ │ │ ├── Health/ │ │ │ │ │ │ ├── Alert/ │ │ │ │ │ │ │ ├── DoraemonHealthAlertView.h │ │ │ │ │ │ │ ├── DoraemonHealthAlertView.m │ │ │ │ │ │ │ ├── DoraemonHealthEndInputView.h │ │ │ │ │ │ │ └── DoraemonHealthEndInputView.m │ │ │ │ │ │ ├── DoraemonHealthPlugin.h │ │ │ │ │ │ ├── DoraemonHealthPlugin.m │ │ │ │ │ │ ├── DoraemonHealthViewController.h │ │ │ │ │ │ ├── DoraemonHealthViewController.m │ │ │ │ │ │ ├── Function/ │ │ │ │ │ │ │ ├── DoraemonHealthManager.h │ │ │ │ │ │ │ └── DoraemonHealthManager.m │ │ │ │ │ │ └── View/ │ │ │ │ │ │ ├── DoraemonHealthFooterView.h │ │ │ │ │ │ ├── DoraemonHealthFooterView.m │ │ │ │ │ │ ├── Home/ │ │ │ │ │ │ │ ├── Detail/ │ │ │ │ │ │ │ │ ├── DoraemonHealthBgView.h │ │ │ │ │ │ │ │ ├── DoraemonHealthBgView.m │ │ │ │ │ │ │ │ ├── DoraemonHealthBtnView.h │ │ │ │ │ │ │ │ ├── DoraemonHealthBtnView.m │ │ │ │ │ │ │ │ ├── DoraemonHealthStartingTitle.h │ │ │ │ │ │ │ │ └── DoraemonHealthStartingTitle.m │ │ │ │ │ │ │ ├── DoraemonHealthHomeView.h │ │ │ │ │ │ │ └── DoraemonHealthHomeView.m │ │ │ │ │ │ ├── Instructions/ │ │ │ │ │ │ │ ├── DoraemonHealthInstructionsCell.h │ │ │ │ │ │ │ ├── DoraemonHealthInstructionsCell.m │ │ │ │ │ │ │ ├── DoraemonHealthInstructionsView.h │ │ │ │ │ │ │ └── DoraemonHealthInstructionsView.m │ │ │ │ │ │ └── Window/ │ │ │ │ │ │ ├── DoraemonHealthCountdownWindow.h │ │ │ │ │ │ └── DoraemonHealthCountdownWindow.m │ │ │ │ │ └── Mock/ │ │ │ │ │ ├── DoraemonMockPlugin.h │ │ │ │ │ ├── DoraemonMockPlugin.m │ │ │ │ │ ├── DoraemonMockViewController.h │ │ │ │ │ ├── DoraemonMockViewController.m │ │ │ │ │ ├── Function/ │ │ │ │ │ │ ├── DoraemonMockManager.h │ │ │ │ │ │ ├── DoraemonMockManager.m │ │ │ │ │ │ ├── DoraemonMockUtil.h │ │ │ │ │ │ └── DoraemonMockUtil.m │ │ │ │ │ ├── Model/ │ │ │ │ │ │ ├── DoraemonMockAPIModel.h │ │ │ │ │ │ ├── DoraemonMockAPIModel.m │ │ │ │ │ │ ├── DoraemonMockBaseModel.h │ │ │ │ │ │ ├── DoraemonMockBaseModel.m │ │ │ │ │ │ ├── DoraemonMockScene.h │ │ │ │ │ │ ├── DoraemonMockScene.m │ │ │ │ │ │ ├── DoraemonMockUpLoadModel.h │ │ │ │ │ │ └── DoraemonMockUpLoadModel.m │ │ │ │ │ ├── VC/ │ │ │ │ │ │ ├── DoraemonMockAPIViewController.h │ │ │ │ │ │ ├── DoraemonMockAPIViewController.m │ │ │ │ │ │ ├── DoraemonMockBaseViewController.h │ │ │ │ │ │ ├── DoraemonMockBaseViewController.m │ │ │ │ │ │ ├── DoraemonMockUploadViewController.h │ │ │ │ │ │ ├── DoraemonMockUploadViewController.m │ │ │ │ │ │ └── Preview/ │ │ │ │ │ │ ├── DoraemonMockDataPreviewViewController.h │ │ │ │ │ │ └── DoraemonMockDataPreviewViewController.m │ │ │ │ │ └── View/ │ │ │ │ │ ├── Filter/ │ │ │ │ │ │ ├── DoraemonMockFilterButton.h │ │ │ │ │ │ ├── DoraemonMockFilterButton.m │ │ │ │ │ │ ├── DoraemonMockFilterListView.h │ │ │ │ │ │ ├── DoraemonMockFilterListView.m │ │ │ │ │ │ ├── DoraemonMockFilterTableCell.h │ │ │ │ │ │ └── DoraemonMockFilterTableCell.m │ │ │ │ │ ├── List/ │ │ │ │ │ │ ├── Cell/ │ │ │ │ │ │ │ ├── DoraemonMockApiCell.h │ │ │ │ │ │ │ ├── DoraemonMockApiCell.m │ │ │ │ │ │ │ ├── DoraemonMockBaseCell.h │ │ │ │ │ │ │ ├── DoraemonMockBaseCell.m │ │ │ │ │ │ │ ├── DoraemonMockUploadCell.h │ │ │ │ │ │ │ └── DoraemonMockUploadCell.m │ │ │ │ │ │ ├── DoraemonMockDetailSwitch.h │ │ │ │ │ │ ├── DoraemonMockDetailSwitch.m │ │ │ │ │ │ ├── DoraemonMockSceneButton.h │ │ │ │ │ │ ├── DoraemonMockSceneButton.m │ │ │ │ │ │ └── ListView/ │ │ │ │ │ │ ├── DoraemonMockApiListView.h │ │ │ │ │ │ ├── DoraemonMockApiListView.m │ │ │ │ │ │ ├── DoraemonMockBaseListView.h │ │ │ │ │ │ ├── DoraemonMockBaseListView.m │ │ │ │ │ │ ├── DoraemonMockUploadListView.h │ │ │ │ │ │ └── DoraemonMockUploadListView.m │ │ │ │ │ └── Search/ │ │ │ │ │ ├── DoraemonMockSearchView.h │ │ │ │ │ └── DoraemonMockSearchView.m │ │ │ │ ├── Protocol/ │ │ │ │ │ ├── DoraemonPluginProtocol.h │ │ │ │ │ └── DoraemonStartPluginProtocol.h │ │ │ │ └── UI/ │ │ │ │ ├── ColorPick/ │ │ │ │ │ ├── DoraemonColorPickPlugin.h │ │ │ │ │ ├── DoraemonColorPickPlugin.m │ │ │ │ │ └── Function/ │ │ │ │ │ ├── DoraemonColorPickInfoView.h │ │ │ │ │ ├── DoraemonColorPickInfoView.m │ │ │ │ │ ├── DoraemonColorPickInfoWindow.h │ │ │ │ │ ├── DoraemonColorPickInfoWindow.m │ │ │ │ │ ├── DoraemonColorPickMagnifyLayer.h │ │ │ │ │ ├── DoraemonColorPickMagnifyLayer.m │ │ │ │ │ ├── DoraemonColorPickView.h │ │ │ │ │ ├── DoraemonColorPickView.m │ │ │ │ │ ├── DoraemonColorPickWindow.h │ │ │ │ │ └── DoraemonColorPickWindow.m │ │ │ │ ├── Hierarchy/ │ │ │ │ │ ├── DoraemonHierarchyPlugin.h │ │ │ │ │ ├── DoraemonHierarchyPlugin.m │ │ │ │ │ ├── Function/ │ │ │ │ │ │ ├── Category/ │ │ │ │ │ │ │ ├── NSObject+DoraemonHierarchy.h │ │ │ │ │ │ │ ├── NSObject+DoraemonHierarchy.m │ │ │ │ │ │ │ ├── UIColor+DoraemonHierarchy.h │ │ │ │ │ │ │ ├── UIColor+DoraemonHierarchy.m │ │ │ │ │ │ │ ├── UIViewController+DoraemonHierarchy.h │ │ │ │ │ │ │ └── UIViewController+DoraemonHierarchy.m │ │ │ │ │ │ ├── DoraemonEnumDescription.h │ │ │ │ │ │ ├── DoraemonEnumDescription.m │ │ │ │ │ │ ├── DoraemonHierarchyFormatterTool.h │ │ │ │ │ │ ├── DoraemonHierarchyFormatterTool.m │ │ │ │ │ │ ├── DoraemonHierarchyHelper.h │ │ │ │ │ │ └── DoraemonHierarchyHelper.m │ │ │ │ │ └── UserInterface/ │ │ │ │ │ ├── Cell/ │ │ │ │ │ │ ├── DoraemonHierarchyDetailTitleCell.h │ │ │ │ │ │ ├── DoraemonHierarchyDetailTitleCell.m │ │ │ │ │ │ ├── DoraemonHierarchySelectorCell.h │ │ │ │ │ │ ├── DoraemonHierarchySelectorCell.m │ │ │ │ │ │ ├── DoraemonHierarchySwitchCell.h │ │ │ │ │ │ ├── DoraemonHierarchySwitchCell.m │ │ │ │ │ │ ├── DoraemonHierarchyTitleCell.h │ │ │ │ │ │ └── DoraemonHierarchyTitleCell.m │ │ │ │ │ ├── DoraemonHierarchyDetailViewController.h │ │ │ │ │ ├── DoraemonHierarchyDetailViewController.m │ │ │ │ │ ├── DoraemonHierarchyTableViewController.h │ │ │ │ │ ├── DoraemonHierarchyTableViewController.m │ │ │ │ │ ├── DoraemonHierarchyViewController.h │ │ │ │ │ ├── DoraemonHierarchyViewController.m │ │ │ │ │ ├── DoraemonHierarchyWindow.h │ │ │ │ │ ├── DoraemonHierarchyWindow.m │ │ │ │ │ ├── Model/ │ │ │ │ │ │ ├── DoraemonHierarchyCategoryModel.h │ │ │ │ │ │ ├── DoraemonHierarchyCategoryModel.m │ │ │ │ │ │ ├── DoraemonHierarchyCellModel.h │ │ │ │ │ │ └── DoraemonHierarchyCellModel.m │ │ │ │ │ └── View/ │ │ │ │ │ ├── DKHierarchyInfoView.h │ │ │ │ │ ├── DKHierarchyInfoView.m │ │ │ │ │ ├── DKHierarchyPickerView.h │ │ │ │ │ ├── DKHierarchyPickerView.m │ │ │ │ │ ├── DKMoveView.h │ │ │ │ │ ├── DKMoveView.m │ │ │ │ │ ├── DKPickerView.h │ │ │ │ │ ├── DKPickerView.m │ │ │ │ │ ├── DoraemonHierarchyHeaderView.h │ │ │ │ │ └── DoraemonHierarchyHeaderView.m │ │ │ │ ├── ViewAlign/ │ │ │ │ │ ├── DoraemonViewAlignPlugin.h │ │ │ │ │ ├── DoraemonViewAlignPlugin.m │ │ │ │ │ └── Function/ │ │ │ │ │ ├── DoraemonViewAlignManager.h │ │ │ │ │ ├── DoraemonViewAlignManager.m │ │ │ │ │ ├── DoraemonViewAlignView.h │ │ │ │ │ └── DoraemonViewAlignView.m │ │ │ │ ├── ViewCheck/ │ │ │ │ │ ├── DoraemonViewCheckPlugin.h │ │ │ │ │ ├── DoraemonViewCheckPlugin.m │ │ │ │ │ └── Function/ │ │ │ │ │ ├── DoraemonViewCheckManager.h │ │ │ │ │ ├── DoraemonViewCheckManager.m │ │ │ │ │ ├── DoraemonViewCheckView.h │ │ │ │ │ └── DoraemonViewCheckView.m │ │ │ │ └── ViewMetrics/ │ │ │ │ ├── DoraemonMetricsViewController.h │ │ │ │ ├── DoraemonMetricsViewController.m │ │ │ │ ├── DoraemonViewMetricsPlugin.h │ │ │ │ ├── DoraemonViewMetricsPlugin.m │ │ │ │ └── Function/ │ │ │ │ ├── DoraemonViewMetricsConfig.h │ │ │ │ ├── DoraemonViewMetricsConfig.m │ │ │ │ ├── UIView+DoraemonViewMetrics.h │ │ │ │ └── UIView+DoraemonViewMetrics.m │ │ │ └── Util/ │ │ │ ├── BSBacktraceLogger/ │ │ │ │ ├── DoraemonBacktraceLogger.h │ │ │ │ └── DoraemonBacktraceLogger.m │ │ │ ├── BuriedPoint/ │ │ │ │ ├── DoraemonBuriedPointManager.h │ │ │ │ └── DoraemonBuriedPointManager.m │ │ │ ├── DoraemonNetworkUtil.h │ │ │ ├── DoraemonNetworkUtil.m │ │ │ ├── DoraemonStatisticsUtil.h │ │ │ ├── DoraemonStatisticsUtil.m │ │ │ ├── DoraemonThreadSafeMutableArray.h │ │ │ ├── DoraemonThreadSafeMutableArray.m │ │ │ ├── DoraemonThreadSafeMutableDictionary.h │ │ │ ├── DoraemonThreadSafeMutableDictionary.m │ │ │ ├── DoraemonUtil.h │ │ │ ├── DoraemonUtil.m │ │ │ ├── Doraemoni18NUtil.h │ │ │ ├── Doraemoni18NUtil.m │ │ │ └── fishhook/ │ │ │ ├── doraemon_fishhook.c │ │ │ └── doraemon_fishhook.h │ │ ├── Database/ │ │ │ ├── DoraemonDatabasePlugin.h │ │ │ ├── DoraemonDatabasePlugin.m │ │ │ ├── DoraemonDatabaseViewController.h │ │ │ └── DoraemonDatabaseViewController.m │ │ ├── GPS/ │ │ │ ├── DoraemonGPSPlugin.h │ │ │ ├── DoraemonGPSPlugin.m │ │ │ ├── DoraemonGPSViewController.h │ │ │ ├── DoraemonGPSViewController.m │ │ │ ├── Function/ │ │ │ │ ├── CLLocationManager+Doraemon.h │ │ │ │ ├── CLLocationManager+Doraemon.m │ │ │ │ ├── DoraemonGPSMocker.h │ │ │ │ └── DoraemonGPSMocker.m │ │ │ └── View/ │ │ │ ├── DoraemonMockGPSCenterView.h │ │ │ ├── DoraemonMockGPSCenterView.m │ │ │ ├── DoraemonMockGPSInputView.h │ │ │ ├── DoraemonMockGPSInputView.m │ │ │ ├── DoraemonMockGPSOperateView.h │ │ │ └── DoraemonMockGPSOperateView.m │ │ ├── Logger/ │ │ │ ├── DoraemonCocoaLumberjackPlugin.h │ │ │ ├── DoraemonCocoaLumberjackPlugin.m │ │ │ ├── DoraemonCocoaLumberjackViewController.h │ │ │ ├── DoraemonCocoaLumberjackViewController.m │ │ │ ├── Function/ │ │ │ │ ├── DoraemonCocoaLumberjackLogger.h │ │ │ │ ├── DoraemonCocoaLumberjackLogger.m │ │ │ │ ├── DoraemonDDLogMessage.h │ │ │ │ └── DoraemonDDLogMessage.m │ │ │ └── List/ │ │ │ ├── DoraemonCocoaLumberjackLevelView.h │ │ │ ├── DoraemonCocoaLumberjackLevelView.m │ │ │ ├── DoraemonCocoaLumberjackListCell.h │ │ │ ├── DoraemonCocoaLumberjackListCell.m │ │ │ ├── DoraemonCocoaLumberjackListViewController.h │ │ │ └── DoraemonCocoaLumberjackListViewController.m │ │ ├── MLeaksFinder/ │ │ │ ├── Detail/ │ │ │ │ ├── DoraemonMLeaksFinderDetailViewController.h │ │ │ │ └── DoraemonMLeaksFinderDetailViewController.m │ │ │ ├── DoraemonMLeaksFinderPlugin.h │ │ │ ├── DoraemonMLeaksFinderPlugin.m │ │ │ ├── DoraemonMLeaksFinderViewController.h │ │ │ ├── DoraemonMLeaksFinderViewController.m │ │ │ ├── Function/ │ │ │ │ ├── Extra/ │ │ │ │ │ ├── DoraemonMemoryLeakData.h │ │ │ │ │ └── DoraemonMemoryLeakData.m │ │ │ │ ├── MLeakedObjectProxy.h │ │ │ │ ├── MLeakedObjectProxy.m │ │ │ │ ├── MLeaksFinder.h │ │ │ │ ├── NSObject+MemoryLeak.h │ │ │ │ ├── NSObject+MemoryLeak.m │ │ │ │ ├── UIApplication+MemoryLeak.h │ │ │ │ ├── UIApplication+MemoryLeak.m │ │ │ │ ├── UINavigationController+MemoryLeak.h │ │ │ │ ├── UINavigationController+MemoryLeak.m │ │ │ │ ├── UIPageViewController+MemoryLeak.h │ │ │ │ ├── UIPageViewController+MemoryLeak.m │ │ │ │ ├── UISplitViewController+MemoryLeak.h │ │ │ │ ├── UISplitViewController+MemoryLeak.m │ │ │ │ ├── UITabBarController+MemoryLeak.h │ │ │ │ ├── UITabBarController+MemoryLeak.m │ │ │ │ ├── UITouch+MemoryLeak.h │ │ │ │ ├── UITouch+MemoryLeak.m │ │ │ │ ├── UIView+MemoryLeak.h │ │ │ │ ├── UIView+MemoryLeak.m │ │ │ │ ├── UIViewController+MemoryLeak.h │ │ │ │ └── UIViewController+MemoryLeak.m │ │ │ └── List/ │ │ │ ├── DoraemonMLeaksFinderListCell.h │ │ │ ├── DoraemonMLeaksFinderListCell.m │ │ │ ├── DoraemonMLeaksFinderListViewController.h │ │ │ └── DoraemonMLeaksFinderListViewController.m │ │ ├── MethodUseTime/ │ │ │ ├── DoraemonMethodUseTimePlugin.h │ │ │ ├── DoraemonMethodUseTimePlugin.m │ │ │ ├── DoraemonMethodUseTimeViewController.h │ │ │ ├── DoraemonMethodUseTimeViewController.m │ │ │ ├── Function/ │ │ │ │ ├── DoraemonMethodUseTimeManager.h │ │ │ │ └── DoraemonMethodUseTimeManager.m │ │ │ └── List/ │ │ │ ├── DoraemonMethodUseTimeListCell.h │ │ │ ├── DoraemonMethodUseTimeListCell.m │ │ │ ├── DoraemonMethodUseTimeListViewController.h │ │ │ └── DoraemonMethodUseTimeListViewController.m │ │ ├── MultiControl/ │ │ │ ├── Function/ │ │ │ │ └── EventSync/ │ │ │ │ ├── Communication/ │ │ │ │ │ ├── DoraemonMCClient.h │ │ │ │ │ ├── DoraemonMCClient.m │ │ │ │ │ ├── DoraemonMCServer.h │ │ │ │ │ └── DoraemonMCServer.m │ │ │ │ ├── Dispatcher/ │ │ │ │ │ ├── DoraemonMCCommandExcutor.h │ │ │ │ │ ├── DoraemonMCCommandExcutor.m │ │ │ │ │ ├── DoraemonMCCommandGenerator.h │ │ │ │ │ └── DoraemonMCCommandGenerator.m │ │ │ │ ├── Event/ │ │ │ │ │ ├── Capture/ │ │ │ │ │ │ ├── DoraemonMCEventCapturer.h │ │ │ │ │ │ ├── DoraemonMCEventCapturer.m │ │ │ │ │ │ ├── DoraemonMCGestureTargetActionPair.h │ │ │ │ │ │ ├── DoraemonMCGestureTargetActionPair.m │ │ │ │ │ │ ├── DoraemonMCReuseViewDelegateProxy.h │ │ │ │ │ │ └── DoraemonMCReuseViewDelegateProxy.m │ │ │ │ │ └── Excutor/ │ │ │ │ │ ├── DoraemonMCEventHandler.h │ │ │ │ │ └── DoraemonMCEventHandler.m │ │ │ │ ├── MessagePackager/ │ │ │ │ │ ├── DoraemonMCMessagePackager.h │ │ │ │ │ └── DoraemonMCMessagePackager.m │ │ │ │ ├── Serialize/ │ │ │ │ │ ├── EventInfo/ │ │ │ │ │ │ ├── DoraemonMCGustureSerializer.h │ │ │ │ │ │ ├── DoraemonMCGustureSerializer.m │ │ │ │ │ │ ├── UIControl+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UIControl+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UIGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UIGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UILongPressGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UILongPressGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UIPanGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UIPanGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UIPinchGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UIPinchGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UIResponder+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UIResponder+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UIRotationGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UIRotationGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UISwipeGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ ├── UISwipeGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ │ ├── UITapGestureRecognizer+DoraemonMCSerializer.h │ │ │ │ │ │ └── UITapGestureRecognizer+DoraemonMCSerializer.m │ │ │ │ │ └── XPath/ │ │ │ │ │ ├── DoraemonMCXPathSerializer.h │ │ │ │ │ └── DoraemonMCXPathSerializer.m │ │ │ │ └── Utils/ │ │ │ │ ├── NSObject+DoraemonMCSupport.h │ │ │ │ └── NSObject+DoraemonMCSupport.m │ │ │ ├── Plugin/ │ │ │ │ ├── DoraemonMultiControlPlugin.h │ │ │ │ └── DoraemonMultiControlPlugin.m │ │ │ └── UserInterface/ │ │ │ └── Main/ │ │ │ ├── DoraemonMCViewController.h │ │ │ └── DoraemonMCViewController.m │ │ └── Weex/ │ │ ├── DevTool/ │ │ │ ├── DoraemonWeexDevToolViewController.h │ │ │ ├── DoraemonWeexDevToolViewController.m │ │ │ ├── DoraemonWeexDevTooloPlugin.h │ │ │ └── DoraemonWeexDevTooloPlugin.m │ │ ├── Info/ │ │ │ ├── DoraemonWeexInfoPlugin.h │ │ │ ├── DoraemonWeexInfoPlugin.m │ │ │ ├── DoraemonWeexInfoViewController.h │ │ │ ├── DoraemonWeexInfoViewController.m │ │ │ ├── Function/ │ │ │ │ ├── DoraemonWeexInfoAnalyzer.h │ │ │ │ ├── DoraemonWeexInfoAnalyzer.m │ │ │ │ ├── DoraemonWeexInfoDataManager.h │ │ │ │ └── DoraemonWeexInfoDataManager.m │ │ │ └── View/ │ │ │ ├── DoraemonWeexInfoCell.h │ │ │ ├── DoraemonWeexInfoCell.m │ │ │ ├── DoraemonWeexInfoHeaderView.h │ │ │ └── DoraemonWeexInfoHeaderView.m │ │ ├── Log/ │ │ │ ├── DoraemonWeexLogPlugin.h │ │ │ ├── DoraemonWeexLogPlugin.m │ │ │ ├── DoraemonWeexLogViewController.h │ │ │ ├── DoraemonWeexLogViewController.m │ │ │ ├── Function/ │ │ │ │ ├── DoraemonWeexLogDataSource.h │ │ │ │ ├── DoraemonWeexLogDataSource.m │ │ │ │ ├── DoraemonWeexLogger.h │ │ │ │ └── DoraemonWeexLogger.m │ │ │ ├── Model/ │ │ │ │ ├── DoraemonWeexLogModel.h │ │ │ │ └── DoraemonWeexLogModel.m │ │ │ └── View/ │ │ │ ├── DoraemonWeexLogCell.h │ │ │ ├── DoraemonWeexLogCell.m │ │ │ ├── DoraemonWeexLogLevelView.h │ │ │ ├── DoraemonWeexLogLevelView.m │ │ │ ├── DoraemonWeexLogSearchView.h │ │ │ └── DoraemonWeexLogSearchView.m │ │ └── Storage/ │ │ ├── DoraemonWeexStoragePlugin.h │ │ ├── DoraemonWeexStoragePlugin.m │ │ ├── DoraemonWeexStorageViewController.h │ │ ├── DoraemonWeexStorageViewController.m │ │ ├── Function/ │ │ │ ├── DoraemonWeexStorageResolver.h │ │ │ └── DoraemonWeexStorageResolver.m │ │ └── View/ │ │ ├── DoraemonWeexStorageCell.h │ │ ├── DoraemonWeexStorageCell.m │ │ ├── DoraemonWeexStorageRowView.h │ │ ├── DoraemonWeexStorageRowView.m │ │ ├── DoraemonWeexStorageShowView.h │ │ └── DoraemonWeexStorageShowView.m │ ├── DoraemonKitDemo/ │ │ ├── DoraemonKitDemo/ │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ ├── Contents.json │ │ │ │ ├── emoji.imageset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── zhaoliyin.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ └── LaunchScreen.storyboard │ │ │ ├── DemoVC/ │ │ │ │ ├── Base/ │ │ │ │ │ ├── DoraemonDemoBaseViewController.h │ │ │ │ │ └── DoraemonDemoBaseViewController.m │ │ │ │ ├── Common/ │ │ │ │ │ ├── DoraemonDemoCommonViewController.h │ │ │ │ │ └── DoraemonDemoCommonViewController.m │ │ │ │ ├── Crash/ │ │ │ │ │ ├── DoraemonDemoCrashMRCView.h │ │ │ │ │ ├── DoraemonDemoCrashMRCView.m │ │ │ │ │ ├── DoraemonDemoCrashViewController.h │ │ │ │ │ └── DoraemonDemoCrashViewController.m │ │ │ │ ├── Home/ │ │ │ │ │ ├── DoraemonDemoHomeViewController.h │ │ │ │ │ └── DoraemonDemoHomeViewController.m │ │ │ │ ├── Logger/ │ │ │ │ │ ├── DoraemonDemoLoggerViewController.h │ │ │ │ │ └── DoraemonDemoLoggerViewController.m │ │ │ │ ├── MemoryLeak/ │ │ │ │ │ ├── DoraemonDemoMemoryLeakModel.h │ │ │ │ │ ├── DoraemonDemoMemoryLeakModel.m │ │ │ │ │ ├── DoraemonDemoMemoryLeakView.h │ │ │ │ │ ├── DoraemonDemoMemoryLeakView.m │ │ │ │ │ ├── DoraemonDemoMemoryLeakViewController.h │ │ │ │ │ └── DoraemonDemoMemoryLeakViewController.m │ │ │ │ ├── MockGPS/ │ │ │ │ │ ├── DoraemonDemoMockGPSAnnotation.h │ │ │ │ │ ├── DoraemonDemoMockGPSAnnotation.m │ │ │ │ │ ├── DoraemonDemoMockGPSViewController.h │ │ │ │ │ └── DoraemonDemoMockGPSViewController.m │ │ │ │ ├── MultiControl/ │ │ │ │ │ ├── DoraemonDemoMultiConLongPressGesture.h │ │ │ │ │ ├── DoraemonDemoMultiConLongPressGesture.m │ │ │ │ │ ├── DoraemonDemoMultiConPinchGesture.h │ │ │ │ │ ├── DoraemonDemoMultiConPinchGesture.m │ │ │ │ │ ├── DoraemonDemoMultiConRotationGesture.h │ │ │ │ │ ├── DoraemonDemoMultiConRotationGesture.m │ │ │ │ │ ├── DoraemonDemoMultiConScreenEdgePanGesture.h │ │ │ │ │ ├── DoraemonDemoMultiConScreenEdgePanGesture.m │ │ │ │ │ ├── DoraemonDemoMultiConSwipeGesture.h │ │ │ │ │ ├── DoraemonDemoMultiConSwipeGesture.m │ │ │ │ │ ├── DoraemonDemoMultiConTapGesture.h │ │ │ │ │ ├── DoraemonDemoMultiConTapGesture.m │ │ │ │ │ ├── DoraemonDemoMultiControlViewController.h │ │ │ │ │ ├── DoraemonDemoMultiControlViewController.m │ │ │ │ │ ├── DoraemonDemoMultiSlideView.h │ │ │ │ │ └── DoraemonDemoMultiSlideView.m │ │ │ │ ├── Net/ │ │ │ │ │ ├── NSURLProtocol/ │ │ │ │ │ │ ├── DoraemonDemoURLProtocol1.h │ │ │ │ │ │ ├── DoraemonDemoURLProtocol1.m │ │ │ │ │ │ ├── DoraemonDemoURLProtocol2.h │ │ │ │ │ │ └── DoraemonDemoURLProtocol2.m │ │ │ │ │ ├── Cell/ │ │ │ │ │ │ ├── DoraemonDemoNetTableViewCell.h │ │ │ │ │ │ └── DoraemonDemoNetTableViewCell.m │ │ │ │ │ ├── DoraemonDemoNetViewController.h │ │ │ │ │ ├── DoraemonDemoNetViewController.m │ │ │ │ │ ├── Image/ │ │ │ │ │ │ ├── DoraemonDemoImageShowViewController.h │ │ │ │ │ │ ├── DoraemonDemoImageShowViewController.m │ │ │ │ │ │ ├── DoraemonDemoImageViewController.h │ │ │ │ │ │ └── DoraemonDemoImageViewController.m │ │ │ │ │ └── WebView/ │ │ │ │ │ ├── DoraemonUIWebViewViewController.h │ │ │ │ │ ├── DoraemonUIWebViewViewController.m │ │ │ │ │ ├── DoraemonWKWebViewViewController.h │ │ │ │ │ └── DoraemonWKWebViewViewController.m │ │ │ │ ├── Performance/ │ │ │ │ │ ├── DoraemonDemoPerformanceViewController.h │ │ │ │ │ └── DoraemonDemoPerformanceViewController.m │ │ │ │ ├── Sanbox/ │ │ │ │ │ ├── DoraemonDemoSanboxViewController.h │ │ │ │ │ └── DoraemonDemoSanboxViewController.m │ │ │ │ └── UI/ │ │ │ │ ├── DoraemonDemoUIViewController.h │ │ │ │ └── DoraemonDemoUIViewController.m │ │ │ ├── DoKitAppDelegate.h │ │ │ ├── DoKitAppDelegate.m │ │ │ ├── DoraemonKitDemo-PrefixHeader.pch │ │ │ ├── Info.plist │ │ │ ├── Plugin/ │ │ │ │ ├── StartPlugin.h │ │ │ │ ├── StartPlugin.m │ │ │ │ ├── TestPlugin.h │ │ │ │ └── TestPlugin.m │ │ │ ├── Resource/ │ │ │ │ ├── Doraemon.docx │ │ │ │ ├── Doraemon.xlsx │ │ │ │ └── doraemon.html │ │ │ ├── Util/ │ │ │ │ ├── DoraemonKitDemoi18Util.h │ │ │ │ ├── DoraemonKitDemoi18Util.m │ │ │ │ ├── NSObject+Runtime.h │ │ │ │ └── NSObject+Runtime.m │ │ │ ├── en.lproj/ │ │ │ │ └── DoraemonKitDemo.strings │ │ │ ├── main.m │ │ │ └── zh-Hans.lproj/ │ │ │ ├── DoraemonKitDemo.strings │ │ │ └── LaunchScreen.strings │ │ ├── DoraemonKitDemo.xcodeproj/ │ │ │ └── project.pbxproj │ │ └── Podfile │ ├── DoraemonLoadAnalyzeDemo/ │ │ ├── DoraemonLoadAnalyze/ │ │ │ ├── DoraemonLoadAnalyze.h │ │ │ ├── DoraemonLoadAnalyze.mm │ │ │ └── Info.plist │ │ ├── DoraemonLoadAnalyzeDemo/ │ │ │ ├── AppDelegate.h │ │ │ ├── AppDelegate.m │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ └── Main.storyboard │ │ │ ├── Info.plist │ │ │ ├── ViewController+A.h │ │ │ ├── ViewController+A.m │ │ │ ├── ViewController+B.h │ │ │ ├── ViewController+B.m │ │ │ ├── ViewController.h │ │ │ ├── ViewController.m │ │ │ └── main.m │ │ ├── DoraemonLoadAnalyzeDemo.xcodeproj/ │ │ │ ├── project.pbxproj │ │ │ └── xcshareddata/ │ │ │ └── xcschemes/ │ │ │ ├── DoraemonLoadAnalyze.xcscheme │ │ │ └── UniversalFramework.xcscheme │ │ └── README.md │ ├── LICENSE │ ├── Podfile │ ├── README.md │ └── Swift/ │ └── DoKitSwiftDemo/ │ ├── DoKitSwiftDemo/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── emoji.imageset/ │ │ │ │ └── Contents.json │ │ │ └── zhaoliyin.imageset/ │ │ │ └── Contents.json │ │ ├── Base/ │ │ │ └── DoraemonDemoBaseViewController.swift │ │ ├── Base.lproj/ │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Common/ │ │ │ └── DoraemonDemoCommonViewController.swift │ │ ├── Crash/ │ │ │ └── DoraemonDemoCrashViewController.swift │ │ ├── DoKitSwiftDemo-Bridging-Header.h │ │ ├── Home/ │ │ │ └── DoraemonDemoHomeViewController.swift │ │ ├── Info.plist │ │ ├── Logger/ │ │ │ └── DoraemonDemoLoggerViewController.swift │ │ ├── MemoryLeak/ │ │ │ ├── DoraemonDemoMemoryLeakModel.swift │ │ │ ├── DoraemonDemoMemoryLeakView.swift │ │ │ └── DoraemonDemoMemoryLeakViewController.swift │ │ ├── MockGPS/ │ │ │ ├── DoraemonDemoGPSAnnotation.swift │ │ │ └── DoraemonDemoGPSViewController.swift │ │ ├── Net/ │ │ │ └── DoraemonDemoNetViewController.swift │ │ ├── OC/ │ │ │ ├── DoraemonDemoOCViewController.h │ │ │ ├── DoraemonDemoOCViewController.m │ │ │ └── DoraemonDemoSwiftViewController.swift │ │ ├── Performance/ │ │ │ └── DoraemonDemoPerformanceViewController.swift │ │ ├── Plugin/ │ │ │ └── TestPlugin.swift │ │ ├── Resource/ │ │ │ ├── Doraemon.docx │ │ │ ├── Doraemon.xlsx │ │ │ └── doraemon.html │ │ ├── Sanbox/ │ │ │ └── DoraemonDemoSanboxViewController.swift │ │ ├── SceneDelegate.swift │ │ ├── UI/ │ │ │ └── DoraemonDemoUIViewController.swift │ │ ├── Util/ │ │ │ ├── Dictionary+DoKit.swift │ │ │ ├── DoraemonDemoDefine.swift │ │ │ ├── DoraemonDemoi18Util.swift │ │ │ ├── UIColor+DoKit.swift │ │ │ └── UIView+DoKit.swift │ │ ├── en.lproj/ │ │ │ └── DoraemonKitDemo.strings │ │ └── zh-Hans.lproj/ │ │ ├── DoraemonKitDemo.strings │ │ ├── LaunchScreen.strings │ │ └── Main.strings │ ├── DoKitSwiftDemo.xcodeproj/ │ │ └── project.pbxproj │ └── Podfile └── miniapp/ ├── .babelrc ├── .gitignore ├── README.md ├── example/ │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── pages/ │ │ ├── index/ │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ ├── index.wxml │ │ │ └── index.wxss │ │ └── logs/ │ │ ├── logs.js │ │ ├── logs.json │ │ ├── logs.wxml │ │ └── logs.wxss │ ├── project.config.json │ ├── sitemap.json │ └── utils/ │ └── util.js ├── gulpfile.babel.js ├── package.json ├── postcss.config.js └── src/ ├── components/ │ ├── apimock/ │ │ ├── apimock.js │ │ ├── apimock.json │ │ ├── apimock.wxml │ │ └── apimock.wxss │ ├── appinformation/ │ │ ├── appinformation.js │ │ ├── appinformation.json │ │ ├── appinformation.wxml │ │ ├── appinformation.wxss │ │ └── formatInfo.js │ ├── back/ │ │ ├── back.js │ │ ├── back.json │ │ ├── back.wxml │ │ └── back.wxss │ ├── debug/ │ │ ├── debug.js │ │ ├── debug.json │ │ ├── debug.wxml │ │ └── debug.wxss │ ├── h5door/ │ │ ├── h5door.js │ │ ├── h5door.json │ │ ├── h5door.wxml │ │ └── h5door.wxss │ ├── httpinjector/ │ │ ├── httpinjector.js │ │ ├── httpinjector.json │ │ ├── httpinjector.wxml │ │ └── httpinjector.wxss │ ├── looklogs/ │ │ ├── looklogs.js │ │ ├── looklogs.json │ │ ├── looklogs.wxml │ │ └── looklogs.wxss │ ├── pagedoor/ │ │ ├── pagedoor.js │ │ ├── pagedoor.json │ │ ├── pagedoor.wxml │ │ └── pagedoor.wxss │ ├── positionsimulation/ │ │ ├── positionsimulation.js │ │ ├── positionsimulation.json │ │ ├── positionsimulation.wxml │ │ └── positionsimulation.wxss │ └── storage/ │ ├── storage.js │ ├── storage.json │ ├── storage.wxml │ └── storage.wxss ├── index/ │ ├── index.js │ ├── index.json │ ├── index.wxml │ └── index.wxss ├── logs/ │ ├── logs.js │ ├── logs.json │ ├── logs.wxml │ └── logs.wxss └── utils/ ├── imgbase64.js └── util.js