Documentation
Public documentation for the on-device Android/Java IDE framework. Start with the architecture overview
and follow the links into each subsystem.
- architecture.md — the project model, the two-level graph, the build-system
abstraction, the concurrency model, and how extension points fit together.
- modules.md — the module map: every module, its package(s), and its responsibility,
with the acyclic dependency direction.
- writing-plugins.md — the step-by-step guide to writing a plugin: the
Plugin
SPI, extension points, scoped services, events and logging, settings pages, actions, Compose UI
contributions (tool windows, screens, overlays), shipping a plugin as its own installable app, and the
Git and AI-agent plugins as worked examples.
- plugin-facet-communication.md: how a plugin’s engine facet and its UI
facet talk to each other. The four channels and when each is right, where shared state goes and what a
static holder commits you to, which way state flows, threading, teardown, why a built-in’s channel has to
be different, and the anti-patterns.
- custom-project-templates.md — the step-by-step guide to adding an entry
to the Create-Project gallery: declaring a template’s inputs so the screen renders itself, authoring the
project model, configuring a facet whose class is out of reach, writing generated files, and declaring the
dependencies the host resolves afterwards.
- plugin-spi-3.0-migration.md — the upgrade path for a plugin built
against SPI
2.10.0: 42 members whose bytecode changed while the source did not, what model-api is,
and why PLUGIN_API_VERSION 4 refuses the old build rather than letting it fail mid-session.
- plugin-spi-2.0-migration.md — the upgrade path for a plugin written
against SPI
1.x: what the opened project-model vocabularies break (an exhaustive when), where the
model registries moved, and what Module.dir replaces.
- plugin-system.md — the delivered plugin model itself: the substrate, the manifest +
entry-point contract, the loader, how the IDE’s own built-ins run through it, and how a plugin the user
installs as a separate app is discovered and loaded.
- extension-points.md — the extension-point registry and every published
extension point (module types, build systems, language backends, indexing, analysis, icons,
templates, block mappings), plus the language-backend SPI.
- language-support.md — the backend-neutral DOM, code completion, the Java/XML/
Kotlin backends, indexing, analysis/diagnostics/quick-fixes, and block editing.
- custom-language-support.md — the step-by-step guide to adding a language:
file types, the
LanguageBackend and the error-tolerant DOM, resolution, completion contributors,
indexing, diagnostics and quick-fixes, synthetic classes, build tasks, module types, and templates.
- kotlin-completion.md — how on-device Kotlin completion works: parse-only PSI,
the framework’s own symbols/inference, and classpath metadata decoding.
- editor-color-schemes.md — the editor’s user-editable color schemes: the
attribute registry and its fallback chain, how the lexical and semantic layers map onto it, the file
format, where schemes are stored, and how a language adds colors of its own.
- block-editing.md — how the projectional (block) editor projects the shared DOM and
round-trips block edits back to byte-for-byte source.
- build-system.md — the
BuildSystem SPI, the incremental task engine, the native
Java and Android pipelines, and the Gradle compatibility layer.
- github-action.md — building CodeAssist projects in CI: the
codeassist headless
launcher and the codeassist-build GitHub Action over it.
- custom-build-plugins.md: the step-by-step guide to extending the build.
Writing a task, contributing it to an existing pipeline, generating source, Kotlin compiler plugins,
Run-picker rows, and bringing your own build system and project model.
- version-control.md — Git on device: the provider-neutral model, what it takes to
run JGit on ART, GitHub sign-in and the account store, and the UI surfaces.