# CodeAssist
**A lightweight, on-device IDE that edits *and builds* Android & Java projects β no laptop, no Gradle daemon.**
[](https://github.com/tyron12233/CodeAssist/actions)
[](https://github.com/tyron12233/CodeAssist/actions)
[](#benchmarks)
[](https://github.com/tyron12233/CodeAssist/releases)
[](LICENSE)
[](https://github.com/tyron12233/CodeAssist/stargazers)
[](https://github.com/tyron12233/CodeAssist/network/members)
[](https://discord.gg/y2gycT6pDW)
## What is CodeAssist?
CodeAssist is an extensible IDE framework that runs **entirely on device** (Android/ART) and edits and
builds Android/Java projects **without hosting Gradle**. A full Gradle runtime is too heavy for a phone,
so CodeAssist models projects itself, mimics Gradle's incremental task engine without the Gradle daemon,
and drives the Android toolchain (aapt2, D8/R8, apksigner) directly.
It is designed to be **lightweight**:
- **No Gradle daemon.** Projects are a declarative model compiled into an incremental task DAG with
fingerprint up-to-date checks and a persistent cache β Gradle's good ideas, none of its weight.
- **Flat-memory indexing.** Library/SDK symbol indices are disk-backed immutable segments queried in
place through a bounded block cache, so heap stays flat regardless of index size.
- **Fast, incremental everything.** Editing one file re-runs only the affected build tasks; completion
and analysis reuse a cached compilation environment instead of rebuilding it per keystroke.
- **On-device toolchain.** Pure-Java tools (Eclipse JDT/ecj, D8/R8, apksigner) run in process; native
aapt2 is invoked as a subprocess.
It ships with a Compose Multiplatform UI and both desktop and Android launchers.
### Highlights
- β **Java code intelligence** β error-tolerant parsing, ranked completion, diagnostics, and quick-fixes
powered by Eclipse JDT.
- πͺ **Kotlin completion (beta)** β full Kotlin code completion on device, tuned to the same ranked
experience as Java. [How it works β](docs/kotlin-completion.md)
- π§© **Block editing** β project any Java file into a Scratch-style block tree and edit it there; changes
write back to the source byte-for-byte. [How it works β](docs/block-editing.md)
- π **Android XML assist** β tag, attribute, and resource completion for layouts/manifests with live
validation.
- π¦ **Real APK builds on device** β resolve, compile, dex, package, sign, and install β no laptop.
- π **Extensible everywhere** β module types, build systems, language backends, analyzers, quick-fixes,
and more all plug in through extension points.
## Screenshots
| | |
|---|---|
|