├── .gitignore ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── knightboost │ │ └── stacksampler │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── knightboost │ │ │ └── stacksampler │ │ │ └── demo │ │ │ ├── App.java │ │ │ ├── BlockMethodMock.kt │ │ │ ├── MainActivity.kt │ │ │ └── MainThreadStackSampler.kt │ └── res │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-xxhdpi │ │ └── block_canary.png │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ ├── colors.xml │ │ ├── my_block_canary.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── knightboost │ └── stacksampler │ └── ExampleUnitTest.kt ├── blockcanary-ui ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── gradle.properties ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── blockcanary │ │ └── ui │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── blockcanary │ │ │ └── ui │ │ │ ├── BlockCanaryUI.kt │ │ │ ├── BlockDetailActivity.kt │ │ │ ├── BlockListActivity.kt │ │ │ ├── BlockMetaInfo.kt │ │ │ ├── Handlers.kt │ │ │ ├── NotificationType.kt │ │ │ ├── Notifications.kt │ │ │ ├── Screen.kt │ │ │ ├── friendly │ │ │ └── Friendly.kt │ │ │ └── util │ │ │ ├── SimpleListAdapter.kt │ │ │ ├── TimeFormatter.kt │ │ │ ├── UiUtils.kt │ │ │ └── Views.kt │ └── res │ │ ├── color │ │ ├── block_canary_count_text.xml │ │ └── leak_canary_bottom_menu.xml │ │ ├── drawable │ │ ├── block_canary.png │ │ ├── block_canary_block.xml │ │ ├── block_canary_count_background.xml │ │ ├── block_canary_gray_fill.xml │ │ ├── block_canary_icon.xml │ │ ├── block_canary_info.xml │ │ ├── block_canary_list_selector.xml │ │ ├── block_canary_toast_background.xml │ │ └── icon_block.png │ │ ├── layout │ │ ├── activity_block_detail.xml │ │ ├── activity_block_list.xml │ │ ├── block_canary_block_chips.xml │ │ ├── block_canary_block_row.xml │ │ └── block_canary_list.xml │ │ ├── menu │ │ ├── block_canary_main_menu.xml │ │ └── block_item_action.xml │ │ ├── mipmap-hdpi │ │ └── block_canary.png │ │ ├── values-v21 │ │ └── block_canary_themes.xml │ │ ├── values-zh │ │ ├── block_canary_string.xml │ │ └── strings.xml │ │ └── values │ │ ├── block_canary_bools.xml │ │ ├── block_canary_colors.xml │ │ ├── block_canary_dimens.xml │ │ ├── block_canary_ids.xml │ │ ├── block_canary_public.xml │ │ ├── block_canary_string.xml │ │ ├── block_canary_themes.xml │ │ └── strings.xml │ └── test │ └── java │ └── blockcanary │ └── ui │ └── ExampleUnitTest.kt ├── blockcanary ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── gradle.properties ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── blockcanary │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── blockcanary │ │ │ ├── BlockCanary.kt │ │ │ ├── BlockCanaryConfig.java │ │ │ ├── BlockCanaryInternal.kt │ │ │ ├── BlockCanaryStartupInitializer.kt │ │ │ ├── BlockDetectListener.kt │ │ │ ├── BlockInfo.kt │ │ │ ├── CanaryExecutors.kt │ │ │ ├── LooperMonitor.java │ │ │ ├── LooperUtil.kt │ │ │ ├── SlowMessageHandler.kt │ │ │ ├── SlowMessageNotifyHandler.kt │ │ │ └── db │ │ │ ├── BlockInfoRepository.kt │ │ │ └── BlockInfoRepositoryImpl.kt │ └── res │ │ └── values │ │ └── block_canary.xml │ └── test │ └── java │ └── blockcanary │ └── ExampleUnitTest.kt ├── docs ├── img_principle │ └── image.png └── 实现原理.md ├── flamegraph-ui ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── gradle.properties ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── knightboost │ │ └── flamegraph │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── bootstrap.css │ │ ├── d3-flamegraph.css │ │ ├── d3-flamegraph.js │ │ ├── d3-tip.js │ │ ├── d3.js │ │ ├── flame-graph-convert-source.js │ │ ├── flame-graph-convert.js │ │ └── flame-graph.html │ ├── java │ │ └── com │ │ │ └── knightboost │ │ │ └── flamegraph │ │ │ └── FlameGraphActivity.kt │ └── res │ │ ├── layout │ │ └── activity_flame_graph.xml │ │ ├── values-v21 │ │ └── themes.xml │ │ └── values │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── knightboost │ └── flamegraph │ └── ExampleUnitTest.kt ├── gradle.properties ├── gradle ├── publish.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── imgs ├── blocking_flamegraph.jpeg ├── blocking_list.jpeg └── notification.jpeg ├── publish-and-sync.sh ├── python └── block2perfetto.py ├── release.md ├── settings.gradle └── stacksampler ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── gradle.properties ├── proguard-rules.pro └── src ├── androidTest └── java │ └── com │ └── knightboost │ └── stacksampler │ ├── ExampleInstrumentedTest.kt │ └── StackSamplerTest.java ├── main ├── AndroidManifest.xml └── java │ └── com │ └── knightboost │ └── stacksampler │ ├── StackSampler.java │ ├── StackTraceSample.java │ └── util │ ├── FastTimer.kt │ └── FlameGraphUtil.java └── test └── java └── com └── knightboost └── stacksampler └── ExampleUnitTest.kt /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/README.md -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/build.gradle -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/proguard-rules.pro -------------------------------------------------------------------------------- /app/src/androidTest/java/com/knightboost/stacksampler/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/androidTest/java/com/knightboost/stacksampler/ExampleInstrumentedTest.kt -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /app/src/main/java/com/knightboost/stacksampler/demo/App.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/java/com/knightboost/stacksampler/demo/App.java -------------------------------------------------------------------------------- /app/src/main/java/com/knightboost/stacksampler/demo/BlockMethodMock.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/java/com/knightboost/stacksampler/demo/BlockMethodMock.kt -------------------------------------------------------------------------------- /app/src/main/java/com/knightboost/stacksampler/demo/MainActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/java/com/knightboost/stacksampler/demo/MainActivity.kt -------------------------------------------------------------------------------- /app/src/main/java/com/knightboost/stacksampler/demo/MainThreadStackSampler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/java/com/knightboost/stacksampler/demo/MainThreadStackSampler.kt -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/layout/activity_main.xml -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/block_canary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/mipmap-xxhdpi/block_canary.png -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/values-night/themes.xml -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/values/colors.xml -------------------------------------------------------------------------------- /app/src/main/res/values/my_block_canary.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/values/my_block_canary.xml -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/main/res/values/themes.xml -------------------------------------------------------------------------------- /app/src/test/java/com/knightboost/stacksampler/ExampleUnitTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/app/src/test/java/com/knightboost/stacksampler/ExampleUnitTest.kt -------------------------------------------------------------------------------- /blockcanary-ui/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /blockcanary-ui/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/build.gradle -------------------------------------------------------------------------------- /blockcanary-ui/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blockcanary-ui/gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/gradle.properties -------------------------------------------------------------------------------- /blockcanary-ui/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/proguard-rules.pro -------------------------------------------------------------------------------- /blockcanary-ui/src/androidTest/java/blockcanary/ui/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/androidTest/java/blockcanary/ui/ExampleInstrumentedTest.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/BlockCanaryUI.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/BlockCanaryUI.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/BlockDetailActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/BlockDetailActivity.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/BlockListActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/BlockListActivity.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/BlockMetaInfo.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/BlockMetaInfo.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/Handlers.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/Handlers.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/NotificationType.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/NotificationType.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/Notifications.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/Notifications.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/Screen.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/Screen.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/friendly/Friendly.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/friendly/Friendly.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/util/SimpleListAdapter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/util/SimpleListAdapter.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/util/TimeFormatter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/util/TimeFormatter.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/util/UiUtils.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/util/UiUtils.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/java/blockcanary/ui/util/Views.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/java/blockcanary/ui/util/Views.kt -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/color/block_canary_count_text.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/color/block_canary_count_text.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/color/leak_canary_bottom_menu.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/color/leak_canary_bottom_menu.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary.png -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_block.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_block.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_count_background.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_count_background.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_gray_fill.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_gray_fill.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_icon.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_icon.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_info.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_info.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_list_selector.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_list_selector.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/block_canary_toast_background.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/block_canary_toast_background.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/drawable/icon_block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/drawable/icon_block.png -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/layout/activity_block_detail.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/layout/activity_block_detail.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/layout/activity_block_list.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/layout/activity_block_list.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/layout/block_canary_block_chips.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/layout/block_canary_block_chips.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/layout/block_canary_block_row.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/layout/block_canary_block_row.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/layout/block_canary_list.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/layout/block_canary_list.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/menu/block_canary_main_menu.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/menu/block_canary_main_menu.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/menu/block_item_action.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/menu/block_item_action.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/mipmap-hdpi/block_canary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/mipmap-hdpi/block_canary.png -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values-v21/block_canary_themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values-v21/block_canary_themes.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values-zh/block_canary_string.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values-zh/block_canary_string.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values-zh/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values-zh/strings.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_bools.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_bools.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_colors.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_colors.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_dimens.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_dimens.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_ids.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_ids.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_public.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_public.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_string.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_string.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/block_canary_themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/block_canary_themes.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /blockcanary-ui/src/test/java/blockcanary/ui/ExampleUnitTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary-ui/src/test/java/blockcanary/ui/ExampleUnitTest.kt -------------------------------------------------------------------------------- /blockcanary/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /blockcanary/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/build.gradle -------------------------------------------------------------------------------- /blockcanary/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blockcanary/gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/gradle.properties -------------------------------------------------------------------------------- /blockcanary/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/proguard-rules.pro -------------------------------------------------------------------------------- /blockcanary/src/androidTest/java/blockcanary/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/androidTest/java/blockcanary/ExampleInstrumentedTest.kt -------------------------------------------------------------------------------- /blockcanary/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/BlockCanary.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/BlockCanary.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/BlockCanaryConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/BlockCanaryConfig.java -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/BlockCanaryInternal.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/BlockCanaryInternal.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/BlockCanaryStartupInitializer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/BlockCanaryStartupInitializer.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/BlockDetectListener.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/BlockDetectListener.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/BlockInfo.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/BlockInfo.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/CanaryExecutors.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/CanaryExecutors.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/LooperMonitor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/LooperMonitor.java -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/LooperUtil.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/LooperUtil.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/SlowMessageHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/SlowMessageHandler.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/SlowMessageNotifyHandler.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/SlowMessageNotifyHandler.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/db/BlockInfoRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/db/BlockInfoRepository.kt -------------------------------------------------------------------------------- /blockcanary/src/main/java/blockcanary/db/BlockInfoRepositoryImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/java/blockcanary/db/BlockInfoRepositoryImpl.kt -------------------------------------------------------------------------------- /blockcanary/src/main/res/values/block_canary.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/main/res/values/block_canary.xml -------------------------------------------------------------------------------- /blockcanary/src/test/java/blockcanary/ExampleUnitTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/blockcanary/src/test/java/blockcanary/ExampleUnitTest.kt -------------------------------------------------------------------------------- /docs/img_principle/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/docs/img_principle/image.png -------------------------------------------------------------------------------- /docs/实现原理.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/docs/实现原理.md -------------------------------------------------------------------------------- /flamegraph-ui/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /flamegraph-ui/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/build.gradle -------------------------------------------------------------------------------- /flamegraph-ui/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /flamegraph-ui/gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/gradle.properties -------------------------------------------------------------------------------- /flamegraph-ui/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/proguard-rules.pro -------------------------------------------------------------------------------- /flamegraph-ui/src/androidTest/java/com/knightboost/flamegraph/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/androidTest/java/com/knightboost/flamegraph/ExampleInstrumentedTest.kt -------------------------------------------------------------------------------- /flamegraph-ui/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/bootstrap.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/bootstrap.css -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/d3-flamegraph.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/d3-flamegraph.css -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/d3-flamegraph.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/d3-flamegraph.js -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/d3-tip.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/d3-tip.js -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/d3.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/d3.js -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/flame-graph-convert-source.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/flame-graph-convert-source.js -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/flame-graph-convert.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/flame-graph-convert.js -------------------------------------------------------------------------------- /flamegraph-ui/src/main/assets/flame-graph.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/assets/flame-graph.html -------------------------------------------------------------------------------- /flamegraph-ui/src/main/java/com/knightboost/flamegraph/FlameGraphActivity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/java/com/knightboost/flamegraph/FlameGraphActivity.kt -------------------------------------------------------------------------------- /flamegraph-ui/src/main/res/layout/activity_flame_graph.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/res/layout/activity_flame_graph.xml -------------------------------------------------------------------------------- /flamegraph-ui/src/main/res/values-v21/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/res/values-v21/themes.xml -------------------------------------------------------------------------------- /flamegraph-ui/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/res/values/strings.xml -------------------------------------------------------------------------------- /flamegraph-ui/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/main/res/values/themes.xml -------------------------------------------------------------------------------- /flamegraph-ui/src/test/java/com/knightboost/flamegraph/ExampleUnitTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/flamegraph-ui/src/test/java/com/knightboost/flamegraph/ExampleUnitTest.kt -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/publish.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.vanniktech.maven.publish" -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/gradlew.bat -------------------------------------------------------------------------------- /imgs/blocking_flamegraph.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/imgs/blocking_flamegraph.jpeg -------------------------------------------------------------------------------- /imgs/blocking_list.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/imgs/blocking_list.jpeg -------------------------------------------------------------------------------- /imgs/notification.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/imgs/notification.jpeg -------------------------------------------------------------------------------- /publish-and-sync.sh: -------------------------------------------------------------------------------- 1 | ./gradlew uploadArchives -------------------------------------------------------------------------------- /python/block2perfetto.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/python/block2perfetto.py -------------------------------------------------------------------------------- /release.md: -------------------------------------------------------------------------------- 1 | ### 0.0.3 2 | - 支持清除全部记录菜单项 3 | ### 0.0.4 4 | - 修复低版本浏览器的兼容性问题 -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/settings.gradle -------------------------------------------------------------------------------- /stacksampler/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /stacksampler/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/build.gradle -------------------------------------------------------------------------------- /stacksampler/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /stacksampler/gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/gradle.properties -------------------------------------------------------------------------------- /stacksampler/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/proguard-rules.pro -------------------------------------------------------------------------------- /stacksampler/src/androidTest/java/com/knightboost/stacksampler/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/androidTest/java/com/knightboost/stacksampler/ExampleInstrumentedTest.kt -------------------------------------------------------------------------------- /stacksampler/src/androidTest/java/com/knightboost/stacksampler/StackSamplerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/androidTest/java/com/knightboost/stacksampler/StackSamplerTest.java -------------------------------------------------------------------------------- /stacksampler/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /stacksampler/src/main/java/com/knightboost/stacksampler/StackSampler.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/main/java/com/knightboost/stacksampler/StackSampler.java -------------------------------------------------------------------------------- /stacksampler/src/main/java/com/knightboost/stacksampler/StackTraceSample.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/main/java/com/knightboost/stacksampler/StackTraceSample.java -------------------------------------------------------------------------------- /stacksampler/src/main/java/com/knightboost/stacksampler/util/FastTimer.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/main/java/com/knightboost/stacksampler/util/FastTimer.kt -------------------------------------------------------------------------------- /stacksampler/src/main/java/com/knightboost/stacksampler/util/FlameGraphUtil.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/main/java/com/knightboost/stacksampler/util/FlameGraphUtil.java -------------------------------------------------------------------------------- /stacksampler/src/test/java/com/knightboost/stacksampler/ExampleUnitTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Knight-ZXW/BlockCanaryX/HEAD/stacksampler/src/test/java/com/knightboost/stacksampler/ExampleUnitTest.kt --------------------------------------------------------------------------------