# blankj/androidutilcode architecture

> Architecture diagram of the GitHub repository blankj/androidutilcode, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/blankj/androidutilcode
- Repository: https://github.com/blankj/androidutilcode

## Overview

AndroidUtilCode is an Android utility library, with a demo application that exposes its common and less-common APIs through feature screens. The main workflow is selecting a demo area, opening a feature screen, and exercising an API; the reusable utilities are the product, while the demo is their showcase. The graph also retains the shared demo UI layer and the separate debug-toolkit code visible in the tree. Some feature implementations were not sampled, so their internal calls are not inferred.

Main entry points: [`feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`](https://github.com/blankj/androidutilcode/blob/master/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt) (Demo home), [`lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java`](https://github.com/blankj/androidutilcode/blob/master/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java) (Common activity UI), [`lib/common/src/main/java/com/blankj/common/item/CommonItem.java`](https://github.com/blankj/androidutilcode/blob/master/lib/common/src/main/java/com/blankj/common/item/CommonItem.java) (Demo item models), [`feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt`](https://github.com/blankj/androidutilcode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt) (Utility demos)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_demo["Demo Application"]
  node_main["Demo home<br/>[MainActivity.kt]"]
  node_core_demo["Utility demos"]
  node_extra_demo["Special utility demos<br/>[SubUtilActivity.kt]"]
  node_util_api["Utility API bridge"]
  node_extra_api["Special API bridge"]
end

subgraph group_ui["Shared Demo UI"]
  node_common_activity["Common activity UI"]
  node_common_items["Demo item models<br/>[CommonItem.java]"]
  node_base_adapter["List adapter"]
  node_base_fragment["Base fragments<br/>[BaseFragment.java]"]
end

subgraph group_core["Core Utilities"]
  node_util_api_lib["Utility APIs"]
  node_util_app["App management<br/>[AppUtils.java]"]
  node_util_activity["Activity helpers<br/>[ActivityUtils.java]"]
  node_util_click["Click behavior<br/>[ClickUtils.java]"]
  node_util_log["Logging<br/>[LogUtils.java]"]
end

subgraph group_extra["Specialized Utilities"]
  node_extra_lib["Specialized helpers"]
  node_location_service["Location service<br/>[LocationService.kt]"]
end

subgraph group_debug["Debug Tools"]
  node_debug_tools["Debug toolkit"]
  node_float_manager["Floating tool views"]
end

node_user(("Android user"))

node_user -->|"opens demo"| node_main
node_main -->|"extends"| node_common_activity
node_main -->|"builds menu"| node_common_items
node_main -->|"dispatches selection"| node_util_api
node_main -->|"dispatches selection"| node_extra_api
node_core_demo -->|"extends"| node_common_activity
node_core_demo -->|"creates menu"| node_common_items
node_extra_demo -->|"extends"| node_common_activity
node_extra_demo -->|"creates menu"| node_common_items
node_common_activity -->|"configures list"| node_base_adapter
node_common_items -->|"supplies items"| node_base_adapter
node_base_fragment -->|"uses click handling"| node_util_click
node_util_api -.->|"starts demo"| node_core_demo
node_extra_api -.->|"starts demo"| node_extra_demo
node_location_service -->|"uses location helpers"| node_extra_lib
node_float_manager -->|"manages tool views"| node_debug_tools

click node_main "https://github.com/blankj/androidutilcode/blob/master/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt"
click node_core_demo "https://github.com/blankj/androidutilcode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt"
click node_extra_demo "https://github.com/blankj/androidutilcode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/SubUtilActivity.kt"
click node_util_api "https://github.com/blankj/androidutilcode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/UtilCodeApiImpl.java"
click node_extra_api "https://github.com/blankj/androidutilcode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/SubUtilApiImpl.java"
click node_common_activity "https://github.com/blankj/androidutilcode/blob/master/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java"
click node_common_items "https://github.com/blankj/androidutilcode/blob/master/lib/common/src/main/java/com/blankj/common/item/CommonItem.java"
click node_base_adapter "https://github.com/blankj/androidutilcode/blob/master/lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java"
click node_base_fragment "https://github.com/blankj/androidutilcode/blob/master/lib/base/src/main/java/com/blankj/base/BaseFragment.java"
click node_util_api_lib "https://github.com/blankj/androidutilcode/tree/master/lib/utilcode/src/main/java/com/blankj/utilcode/util"
click node_util_app "https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java"
click node_util_activity "https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java"
click node_util_click "https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java"
click node_util_log "https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java"
click node_extra_lib "https://github.com/blankj/androidutilcode/tree/master/lib/subutil/src/main/java/com/blankj/subutil/util"
click node_location_service "https://github.com/blankj/androidutilcode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationService.kt"
click node_debug_tools "https://github.com/blankj/androidutilcode/tree/master/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool"
click node_float_manager "https://github.com/blankj/androidutilcode/blob/master/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatViewManager.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_core_demo,node_extra_demo,node_util_api,node_extra_api,node_user toneBlue
class node_common_activity,node_common_items,node_base_adapter,node_base_fragment toneAmber
class node_util_api_lib,node_util_app,node_util_activity,node_util_click,node_util_log toneMint
class node_extra_lib,node_location_service toneRose
class node_debug_tools,node_float_manager toneIndigo
```

## Components

### Demo Application

- [Demo home](https://github.com/blankj/androidutilcode/blob/master/feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt): `feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`
- [Utility demos](https://github.com/blankj/androidutilcode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt): `feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt`
- [Special utility demos](https://github.com/blankj/androidutilcode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/SubUtilActivity.kt): `feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/SubUtilActivity.kt`
- [Utility API bridge](https://github.com/blankj/androidutilcode/blob/master/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/UtilCodeApiImpl.java): `feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/UtilCodeApiImpl.java`
- [Special API bridge](https://github.com/blankj/androidutilcode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/SubUtilApiImpl.java): `feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/SubUtilApiImpl.java`

### Shared Demo UI

- [Common activity UI](https://github.com/blankj/androidutilcode/blob/master/lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java): `lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java`
- [Demo item models](https://github.com/blankj/androidutilcode/blob/master/lib/common/src/main/java/com/blankj/common/item/CommonItem.java): `lib/common/src/main/java/com/blankj/common/item/CommonItem.java`
- [List adapter](https://github.com/blankj/androidutilcode/blob/master/lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java): `lib/base/src/main/java/com/blankj/base/rv/BaseItemAdapter.java`
- [Base fragments](https://github.com/blankj/androidutilcode/blob/master/lib/base/src/main/java/com/blankj/base/BaseFragment.java): `lib/base/src/main/java/com/blankj/base/BaseFragment.java`

### Core Utilities

- [Utility APIs](https://github.com/blankj/androidutilcode/tree/master/lib/utilcode/src/main/java/com/blankj/utilcode/util): `lib/utilcode/src/main/java/com/blankj/utilcode/util`
- [App management](https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java): `lib/utilcode/src/main/java/com/blankj/utilcode/util/AppUtils.java`
- [Activity helpers](https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java): `lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java`
- [Click behavior](https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java): `lib/utilcode/src/main/java/com/blankj/utilcode/util/ClickUtils.java`
- [Logging](https://github.com/blankj/androidutilcode/blob/master/lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java): `lib/utilcode/src/main/java/com/blankj/utilcode/util/LogUtils.java`

### Specialized Utilities

- [Specialized helpers](https://github.com/blankj/androidutilcode/tree/master/lib/subutil/src/main/java/com/blankj/subutil/util): `lib/subutil/src/main/java/com/blankj/subutil/util`
- [Location service](https://github.com/blankj/androidutilcode/blob/master/feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationService.kt): `feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationService.kt`

### Debug Tools

- [Debug toolkit](https://github.com/blankj/androidutilcode/tree/master/lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool): `lib/utildebug/src/main/java/com/blankj/utildebug/debug/tool`
- [Floating tool views](https://github.com/blankj/androidutilcode/blob/master/lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatViewManager.java): `lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatViewManager.java`

### Other components

- **Android user**

## Connections

- Android user → Demo home: opens demo (evidence: `feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`)
- Demo home → Common activity UI: extends (evidence: `feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`)
- Demo home → Demo item models: builds menu (evidence: `feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`)
- Demo home → Utility API bridge: dispatches selection (evidence: `feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`)
- Demo home → Special API bridge: dispatches selection (evidence: `feature/main/pkg/src/main/java/com/blankj/main/pkg/MainActivity.kt`)
- Utility demos → Common activity UI: extends (evidence: `feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt`)
- Utility demos → Demo item models: creates menu (evidence: `feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/CoreUtilActivity.kt`)
- Special utility demos → Common activity UI: extends (evidence: `feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/SubUtilActivity.kt`)
- Special utility demos → Demo item models: creates menu (evidence: `feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/SubUtilActivity.kt`)
- Common activity UI → List adapter: configures list (evidence: `lib/common/src/main/java/com/blankj/common/activity/CommonActivity.java`)
- Demo item models → List adapter: supplies items (evidence: `lib/common/src/main/java/com/blankj/common/item/CommonItem.java`)
- Base fragments → Click behavior: uses click handling (evidence: `lib/base/src/main/java/com/blankj/base/BaseFragment.java`)
- Utility API bridge → Utility demos: starts demo
- Special API bridge → Special utility demos: starts demo
- Location service → Specialized helpers: uses location helpers (evidence: `feature/subutil/pkg/src/main/java/com/blankj/subutil/pkg/feature/location/LocationService.kt`)
- Floating tool views → Debug toolkit: manages tool views (evidence: `lib/utildebug/src/main/java/com/blankj/utildebug/base/view/FloatViewManager.java`)
