AI summary
Android IDE for building apps on-device with Kotlin and Jetpack Compose. Features live Compose previews, code completion, Gradle import, and a native build engine. Version 3.9.3 improves preview rendering for more composables, fixes resolution of fully-qualified calls and nested classes, adds double-tap selection expansion, and caps runaway indexing to protect battery.
Generated by AI. May contain inaccuracies.
Screenshots
About this app
🚀 CodeAssist 3.9.3 COMPOSE PREVIEW & KOTLIN RESOLUTION
More previews render. A batch of interpreter gaps surfaced by real apps (Jetsnack, 2048) are fixed, so more @Preview composables render instead of showing an error. Collection functions the preview could not run before now work: find/findLast, flatMapIndexed, maxOfOrNull/minOfOrNull, maxOfWith, map getOrElse/getOrPut, and the comparator builders compareBy/compareByDescending/thenBy/thenByDescending. Iterating a String (forEach/find), the same functions on arrays, null.toString(), and constructing HashMap()/ArrayList() all work too. Fully-qualified calls resolve. A call written by its package path, like kotlin.math.abs(x) or kotlinx.coroutines.delay(200), no longer fails as "unresolved name kotlin" or "unresolved name kotlinx". This benefits the editor as well as the preview. Nested classes and type aliases resolve. A member or return typed as a private nested class referenced by its simple name (private var pending: Plan? inside its enclosing class) is no longer flagged "Unresolved reference", and a value typed through a collection typealias (typealias Board = List<Tile>) resolves its members, in both the preview and the editor. Navigation previews render the start screen. A NavHost that uses string routes or nested navigation { } graphs now shows its start destination instead of crashing. Coroutine calls resolve during indexing. A delay(...) (and the other coroutine helpers) resolves from its import even before the coroutines library has finished indexing, so a LaunchedEffect { delay(...) } preview does not fail while the classpath is still warming. Canvas and drawWithCache are robust. A Canvas/drawBehind block that computes from size or Offset now renders instead of drawing nothing, and a drawWithCache block that throws while building its draw no longer takes down the whole IDE. Better argument handling. A @Composable called with fewer arguments than it declares now picks the correct defaulted overload, and the implicit it of a single-parameter receiver lambda resolves, so more real components render. A required parameter is an error, not a crash. A @Preview of a composable that needs a parameter now shows a clear "needs a parameter" message instead of crashing the preview. Previews are isolated by default. Each preview renders in its own isolated pass and sizes to wrap its content, so one misbehaving preview can no longer disturb the others. Device and showSystemUi sizing. A @Preview with showSystemUi = true or a device spec now renders at the phone's size with correct touch routing, instead of a mis-sized surface. Locatable preview errors. When a preview still cannot render, the error now points at the exact File.kt:line:column of the construct it could not handle, instead of a bare message. EDITOR & COMPLETION
Double tap to Expand selection. Growing the selection now walks up the code's syntax tree, so pressing it repeatedly expands from the word to the enclosing expression, statement, and block. when (val x = …) colors correctly. A variable declared in a when subject and its uses in the branches now highlight as a local variable, like any other val, instead of being mis-colored. ViewBinding completes before a build. Generated binding classes (for example ActivityMainBinding) now resolve and complete in the editor without needing a build first. Cleaner auto-import. A file-private top-level declaration in another file is no longer offered as an auto-import candidate, so completion stops suggesting something you cannot actually import. Steadier typing on some keyboards. Fixed SwiftKey (and similar) inserting stale word suggestions in the editor, and implemented the Android 14 replaceText input path so text replacement from the keyboard lands correctly. STABILITY (from crash analytics)
Copying a large selection no longer crashes. Putting a multi-megabyte selection on the clipboard (Copy/Cut in the editor, or the Logcat/Run console) exceeded Android's transfer limit and crashed; the copied text is now capped to a safe size, keeping the end. Reopening a project is crash-safe. Syncing open tabs when a file changed on disk could hit an index-out-of-bounds if a tab was opened or closed at the same moment; it now re-checks each tab safely. Legacy projects open again. A module.toml that carries a Java language level this build does not recognize now falls back to a sensible default instead of failing the whole project open. Fewer preview crashes. When interpreted preview code hands an object back to the framework (for example a Compose CarouselPagerState) and that code throws, the preview now degrades gracefully instead of crashing the IDE. Editor decorations never crash. A one-frame-stale offset in a selection, occurrence, or template-field highlight is now caught and simply skipped for that frame, rather than throwing. Runaway indexing is capped. An index build that gets stuck (seen in the wild running for hours) is now stopped after a hard time limit, so it cannot keep burning battery and CPU; the index stays usable. Sharper native-crash reports (opt-in). The rare native crash on the editor engine now records exactly which engine activity was running and whether indexing was in flight, so we can keep narrowing it down. BUILD & PERFORMANCE
Steadier on-device builds under memory pressure. In-process dexing now bounds its heap and releases shared dex caches when the system is low on memory, reducing out-of-memory failures while building on smaller devices. GRADLE IMPORT
Richer Gradle import, plus Convert. Importing a Gradle project reads more of its build, and a new Convert action makes CodeAssist's own module.toml the source of truth for a project (moving the Gradle files aside to a backup) so it builds on the native, no-Gradle engine. LOGCAT
Full crash traces. A FATAL EXCEPTION used to show only its first line in the Logcat tab. The whole stack trace now shows. Full-screen Logcat. A new full-screen button opens the live Logcat filling the window, keeping the same level filter and search; the collapse button (or back) returns to the docked view. UI
Status-bar icons follow the theme. In light mode the status-bar and navigation-bar icons were staying light (hard to read); they now match the theme, so they are dark in light mode and light in dark mode, and update when you toggle the theme. LOCALIZATION
Completed the remaining Chinese translations, so the Chinese UI is at full parity. Full changelog: https://github.com/tyron12233/CodeAssist/releases/tag/v3.9.3
About this version
- Version
- 3.9.3 (76)
- Size
- 147.6 MB
- Requires Android
- 8.0
- Target SDK
- 26
- Architecture
- x86, x86_64, arm64-v8a, armeabi-v7a
- Downloads
- 37
- Updated
- Aug 7, 2026
- Package
- com.tyron.code
Similar apps
Ratings & reviews
- 52
- 40
- 30
- 20
- 10
Write a review
Recent reviews
Showing 2 of 2- mkcdg2d ago
Android Studio3d agoExcellent & One of the most popular AIDE tools for creating Android apps