A high-performance Android code editor built with Jetpack Compose and a desktop-grade editor engine, designed for mobile developers who want a VS Code-like workflow on Android.
Crest-Editor brings the feel of a desktop IDE to Android devices. It combines a touch-optimized Monaco editor, a Linux-based development environment, and a native Compose interface to provide a fast, flexible, and familiar coding experience for mobile development.
This project aims to make coding on Android feel less like a compromise and more like a proper workspace: multi-tab editing, terminal access, filesystem tools, settings management, and developer workflows that work well on smaller screens.
- Monaco editor with VS Code-style editing behavior
- Touch-aware selection and interaction model for mobile screens
- Floating actions for copy, paste, select all, and editing shortcuts
- Keyboard-friendly workflow with support for common developer actions
- PRoot-based sandbox for running Linux tooling on Android
- Built-in terminal for shell workflows and project tasks
- Support for common developer runtimes and command-line tools
- Workspace access for local files and project folders
- Jetpack Compose UI designed for mobile workflows
- Multi-tab workspace layout
- Settings screen inspired by VS Code preferences
- Auto-save and dirty state tracking for editing reliability
- JSON-based settings management
- Reactive configuration updates
- A familiar editor experience for users coming from desktop IDEs
CrestEditor Android Shell
|
+-- Jetpack Compose UI
| +-- Tabs and workspace explorer
| +-- Settings and preferences
| +-- Terminal and developer tools
|
+-- Monaco Editor Core
| +-- Syntax highlighting and editing
| +-- Mobile-focused interactions
|
+-- Runtime and Sandbox Layer
+-- Linux environment via PRoot
+-- Terminal session management
+-- File system and project access
+-- Core Management Layer
+-- Settings manager
+-- Workspace manager
+-- Process and terminal bridge
Crest-Editor/
├── app/
│ ├── src/main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ ├── java/com/cresteditor/
│ │ ├── core/
│ │ ├── editor/
│ │ ├── runtime/
│ │ ├── settings/
│ │ ├── ui/
│ │ └── workspace/
│ └── build.gradle.kts
├── editor-core/
│ ├── src/
│ ├── vite.config.js
│ └── package.json
├── README.md
├── LICENSE
└── gradle.properties
The project uses a settings.json-style configuration layer for editor behavior and runtime preferences.
| Setting key | Type | Default | Description |
|---|---|---|---|
files.autoSave |
string |
afterDelay |
Save mode for dirty files |
files.autoSaveDelay |
number |
1000 |
Delay before auto-save in milliseconds |
files.showHiddenFiles |
boolean |
false |
Show dotfiles in workspace view |
editor.fontSize |
number |
14 |
Editor font size |
editor.tabSize |
number |
4 |
Number of spaces per tab |
editor.wordWrap |
string |
on |
Word wrap mode |
editor.minimap.enabled |
boolean |
false |
Toggle minimap |
editor.theme |
string |
vs-dark |
Editor color theme |
terminal.integrated.fontSize |
number |
13 |
Terminal font size |
- Android SDK with compile support for SDK 34
- Minimum Android SDK: 26
- JDK 17 or newer
- Node.js 18+ for editor-core build steps
- Arm64 target support for native runtime components
cd editor-core
npm install
node ./node_modules/vite/bin/vite.js buildThis generates the editor assets used by the Android app.
./gradlew assembleDebugThe produced APK is typically located under:
app/build/outputs/apk/debug/app-debug.apk
This project is licensed under the MIT License. See the LICENSE file for more information.
Contributions are welcome. If you want to improve the editor, fix bugs, or add features, open an issue or submit a pull request with a clear description of the change.
For project updates and discussions, use the GitHub repository and issue tracker.