# ollide/intellij-java2smali architecture

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

- Interactive diagram: https://gitdiagram.com/ollide/intellij-java2smali
- Repository: https://github.com/ollide/intellij-java2smali

## Overview

java2smali is an IntelliJ IDEA/Android Studio plugin that turns a selected Java or Kotlin file into a .smali file and opens it in the editor. The documented workflow is represented by the action, IDE build, class-to-dex conversion, dex disassembly, and editor display stages. The sampled source supports these runtime links; README documents dx and baksmali, while plugin registration details were not sampled.

Main entry points: [`src/main/kotlin/org/ollide/java2smali/DexCompiler.kt`](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/DexCompiler.kt) (Dex compiler), [`src/main/kotlin/org/ollide/java2smali/Class2DexHelper.kt`](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/Class2DexHelper.kt) (Class-to-dex helper), [`src/main/kotlin/org/ollide/java2smali/Dex2SmaliHelper.kt`](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/Dex2SmaliHelper.kt) (Dex disassembler helper), [`src/main/kotlin/org/ollide/java2smali/GenerateAction.kt`](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/GenerateAction.kt) (Generate action)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ide["IDE workflow"]
  node_source["Java/Kotlin source"]
  node_action["Generate action<br/>[GenerateAction.kt]"]
  node_compiler["Dex compiler<br/>[DexCompiler.kt]"]
  node_taskcompat["Task API adapter"]
  node_idebuild["IDE project build"]
  node_classfiles["Compiled class files"]
  node_editor["IDE editor"]
end

subgraph group_convert["Conversion"]
  node_dexhelper["Class-to-dex helper<br/>[Class2DexHelper.kt]"]
  node_dx["Android dx"]
  node_dexfile["Dex file"]
  node_smalihelper["Dex disassembler helper<br/>[Dex2SmaliHelper.kt]"]
  node_baksmali["Baksmali library"]
  node_smalifile["Smali output"]
end

subgraph group_logging["Logging"]
  node_logstream["Log output stream<br/>[LogOutputStream.kt]"]
  node_ide_logger["IDE logger"]
end

node_user(("IDE user"))

node_user -->|"selects"| node_source
node_user -->|"invokes"| node_action
node_action -->|"starts"| node_compiler
node_compiler -->|"runs build via"| node_taskcompat
node_taskcompat -->|"dispatches"| node_idebuild
node_idebuild -->|"compiles"| node_classfiles
node_compiler -->|"locates"| node_classfiles
node_compiler -->|"converts via"| node_dexhelper
node_dexhelper -->|"invokes"| node_dx
node_dx -->|"writes"| node_dexfile
node_compiler -->|"disassembles via"| node_smalihelper
node_smalihelper -->|"reads"| node_dexfile
node_smalihelper -->|"invokes"| node_baksmali
node_baksmali -->|"writes"| node_smalifile
node_compiler -->|"opens output in"| node_editor
node_editor -->|"displays"| node_smalifile
node_dexhelper -->|"routes tool output"| node_logstream
node_logstream -->|"logs"| node_ide_logger

click node_action "https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/GenerateAction.kt"
click node_compiler "https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/DexCompiler.kt"
click node_taskcompat "https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/SupportProjectTaskManager.kt"
click node_dexhelper "https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/Class2DexHelper.kt"
click node_smalihelper "https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/Dex2SmaliHelper.kt"
click node_logstream "https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/log/LogOutputStream.kt"

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_source,node_action,node_compiler,node_taskcompat,node_idebuild,node_classfiles,node_editor,node_user toneBlue
class node_dexhelper,node_dx,node_dexfile,node_smalihelper,node_baksmali,node_smalifile toneAmber
class node_logstream,node_ide_logger toneMint
```

## Components

### IDE workflow

- **Java/Kotlin source**
- [Generate action](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/GenerateAction.kt): `src/main/kotlin/org/ollide/java2smali/GenerateAction.kt`
- [Dex compiler](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/DexCompiler.kt): `src/main/kotlin/org/ollide/java2smali/DexCompiler.kt`
- [Task API adapter](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/SupportProjectTaskManager.kt): `src/main/kotlin/org/ollide/java2smali/SupportProjectTaskManager.kt`
- **IDE project build**
- **Compiled class files**
- **IDE editor**

### Conversion

- [Class-to-dex helper](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/Class2DexHelper.kt): `src/main/kotlin/org/ollide/java2smali/Class2DexHelper.kt`
- **Android dx**
- **Dex file**
- [Dex disassembler helper](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/Dex2SmaliHelper.kt): `src/main/kotlin/org/ollide/java2smali/Dex2SmaliHelper.kt`
- **Baksmali library**
- **Smali output**

### Logging

- [Log output stream](https://github.com/ollide/intellij-java2smali/blob/develop/src/main/kotlin/org/ollide/java2smali/log/LogOutputStream.kt): `src/main/kotlin/org/ollide/java2smali/log/LogOutputStream.kt`
- **IDE logger**

### Other components

- **IDE user**

## Connections

- IDE user → Java/Kotlin source: selects
- IDE user → Generate action: invokes
- Generate action → Dex compiler: starts
- Dex compiler → Task API adapter: runs build via
- Task API adapter → IDE project build: dispatches
- IDE project build → Compiled class files: compiles
- Dex compiler → Compiled class files: locates
- Dex compiler → Class-to-dex helper: converts via
- Class-to-dex helper → Android dx: invokes
- Android dx → Dex file: writes
- Dex compiler → Dex disassembler helper: disassembles via
- Dex disassembler helper → Dex file: reads
- Dex disassembler helper → Baksmali library: invokes
- Baksmali library → Smali output: writes
- Dex compiler → IDE editor: opens output in
- IDE editor → Smali output: displays
- Class-to-dex helper → Log output stream: routes tool output
- Log output stream → IDE logger: logs
