Change Log
3.0.35 (2026.07.23)
- [feature] Supports Jugg CLI skills, allows AI coding agents to independently bridge the gap between development and validation in a rapid closed loop
- [feature] Supports Android test incremental compilation
- [feature] Supports debug button to debug break point
- [feature] Supports incremental compilation on release APK with R8 minify and AabResGuard
- [feature] Supports KSP(only available for kuikly @Page for now)
- [feature] Supports const reference effect detect
- [feature] Windows & Linux supports target API 35 in resource compilation
- [feature] Supports Gradle 9.2.1
- [feature] Auto repair incomplete Gradle Wrapper launch files when gradle-wrapper.properties already exists
- [optimize] Fixes could cause the IDE to stuck for some time, during initialization after downgrade completion
- [optimize] avoid restart App 1-2 times when deploy state not matched; speed up deployment on App restart
- [optimize] Introduce automatic dex merge during the deployment stage to fix OOM scenarios triggered when deploying a large number of classes (>1000)
- [optimize] Improve databinding compile compatibility
- [optimize] Remove windows log file lock
- [bugfix] Fix some device occurs WebView crash with compatible issues
- [bugfix] Fix deploy may fail in sometime on projects with res size > 15000
- [bugfix] Fix AbstractMethodException:When compiling Kotlin `internal` methods within a multi-module Gradle project, a probabilistic inconsistency occurs between the module name and the base APK.
- [bugfix] Fix untracked file rollbacks on first time compile
- [bugfix] Fix Kotlin compile may be failed when multiple projects opened with different Kotlin version
- [bugfix] Fix compile failed when using ./gradlew clean assembleDebug due to clean removing artifacts required by Jugg
- [bugfix] Fix incomplete overlay may remain after split full resource deploy failure and cause app startup resource crash
- [bugfix] Fix remote compilation might not actually stop after clicking "Stop."
- [bugfix] Fix default method desugar flag being misdetected in multi-APK projects, which could cause AbstractMethodError after incremental compilation
- [bugfix] Fix Run/Debug configuration remote compile fields being stretched after adding additional exclude patterns
- [bugfix] Improve Additional exclude patterns hint and parsing to use semicolon-separated rsync patterns while keeping old comma-separated values compatible
- [bugfix] Fix NoSuchFieldError after adding declare-styleable when main R.styleable dex was omitted from incremental deployment
- [bugfix] Fix project info init script compilation on Gradle 6.8
- [bugfix] Hide recoverable DataBinding compilation failures from user-visible warnings while preserving debug logs
- [bugfix] Respect the selected devices on Android Studio Quail instead of deploying to all connected devices
- [bugfix] Fix incremental compilation losing the application R.jar when composite builds contain duplicate app module names
2.6.32 (2026.06.26)
- [feature] supports Android Studio Quail 1
- [feature] supports Android Studio Panda 4
- [feature] supports Android Studio Otter 2 Feature Drop
- [feature] supports export incremental APK
- [feature] supports clean and reinstall app
- [feature] supports embed to APK on run to let Android RemoteViews work
- [feature] supports running on CI
- [feature] supports side effect checking with dynamic feature modules(AAB)
- [feature] supports AppComponentFactory in compat mode / embed mode
- [feature] compat with configuration cache
- [feature] supports environment variables for remote compilation
- [feature] Default don't fallback to gradle when deploy failed
- [optimize] optimize reading info from gradle
- [optimize] improve compatibility with android.enableJetifier=false, avoid compilation failed by dependencies missing
- [optimize] compat with "classes compiled by an unstable version of the Kotlin compiler"
- [optimize] scroll content when content too much in remote compile application
- [optimize] Retry report issue upload across configured servers
- [bugfix] fix dependency may be missing if ide name is like 'example.lib_common.lib2.main~1'
- [bugfix] fix report issues failed sometimes
- [bugfix] fix compat issue with Kotlin 1.3 and Gradle 6.1
- [bugfix] fix variant is wrong and incremental compilation failed, after switch build variants in IDE panel
- [bugfix] fix boot crash if android:appComponentFactory is invalid
- [bugfix] fix remote compilation failed with rsync if ssh key in .ssh too much
- [bugfix] fix gradle compilation failed when using command like "subDir/gradlew"
- [bugfix] Compat with some module use compileSdk = 36
- [bugfix] fix Windows stuck when configuration UI switch to SyncMode.iFT / SyncMode.RSYNC; fix some ssh stuck when using remote compile
- [bugfix] fix remote compile may stop unexpected with NumberFormatException when PTY echoes exit code template
- [bugfix] fix report issue upload failure after server fallback marks the upload server as forbidden
2.5.0 (2025.11.11)
- [feature] supports view binding/data binding
- [feature] supports dynamic feature modules(AAB)
- [feature] supports Kotlin 2.2
- [feature] supports coreLibraryDesugaringEnabled
- [feature] supports target api 35, e.g. android:windowOptOutEdgeToEdgeEnforcement
- [optimize] optimize compilation commands to identify whether compatibility mode can be enabled.
- [bugfix] fix "Parent job is Cancelling" when installing
2.4.0 (2025.10.23)
- [feature] supports Android Studio Narwhal 4 Feature Drop
- [feature] supports RPC invocation
- [feature] supports KMM compose (Kuikly compose)
- [feature] fallback button supports fallback without selecting jugg run configuration
- [optimize] limit logger size to 100MB
- [optimize] compat with Kotlin plugin that requires options, and we haven't provided, which will cause compilation error
- [optimize] default close "Enable Backup Classpath" for better speed when clean project
- [optimize] avoid big GC by actively calling (no idea whether it helps)
- [optimize] optimize gradle includeBuild compatibility
- [bugfix] fix styleable compile failed when having dynamic feature modules
- [bugfix] fix Narwhal Feature Drop cannot create run configuration
- [bugfix] "Parent job is Cancelling" when installing APK
- [bugfix] fix install plugin failed below Android Studio Electric Eel
- [bugfix] fix gradle compilation failed by java.io.FileNotFoundException: (Operation not supported on socket)
- [bugfix] fix some compose file cannot compile
- [bugfix] compat with "cannot inline bytecode built with JVM target 21 into bytecode that is being built with JVM target 1.8. Specify proper '-jvm-target' option."
- [bugfix] fix cannot sync project classpath outside project root
- [bugfix] fix get compose plugin failed by parent gradle module not found
- [bugfix] fix server report failed
- [bugfix] fix jugg may choose armeabi-v7a.apk and cause unexpect result, priority use arm64-v8a -> universal -> first
2.3.0 (2025.08.03)
- [feature] supports Android Studio Narwhal Feature Drop
- [feature] supports Java 21
- [feature] supports remote server application
- [feature] fix rsync not work properly, use embedded rsync(version 3.4.1)
- [optimize] don't filter won't compile modules for better robust
- [optimize] show fetch classpath progress
- [bugfix] fix declaration not found after gradle compilation without IDE sync
- [bugfix] fix "com.android.tools.r8.CompilationFailedException" after installing APK
- [bugfix] fix dependencies not found for kmm module in some projects
- [bugfix] fix "Compile files too much(xxx files), will fallback to gradle compile for better performance."
- [bugfix] fix remote compile failed on macOS with intel chip
- [bugfix] fix R.styleable reference not found when using namespace or nonTransitiveRClass is enabled
2.2.0 (2025.05.21)
- [feature] supports Kotlin compose
- [feature] supports Kotlin @Parcelize annotation
- [feature] supports using project Kotlin compiler
- [feature] supports Android Studio Meerkat / Narwhal
- [feature] supports Intellij Idea 2024 / 2025
- [feature] supports "Clean and Reset Jugg",use it when Jugg unable to fallback
- [optimize] optimize the recover strategy of library dependency missing after cleaned by gradle
- [optimize] optimize auto downgrade condition, avoiding Android App stuck when deploying over 1000 classes
- [optimize] reinstall APK at the third time deployment timout, fallback at the fourth time
- [optimize] restart ADB when ADB is not responding
- [bugfix] fix cannot found resource when loading standalone apk by PackageManager.getResourcesForApplication
- [bugfix] fix NullPointException on Android 8.0 when startup
- [bugfix] fix Android 15 cannot use hot reload under Android Studio Meerkat
- [bugfix] fix no changes found in library incremental compilation when updates jar on Windows
- [bugfix] fix library incremental compilation failed when detects kotlin changed sometimes
- [bugfix] fix findViewById null after macOS upgrade to 15.4 on some devices. Add rsync compatible check
- [bugfix] fix R.styleable not found error after resource incremental compilation on projects that has split R logic
- [bugfix] fix Java compilation failed when Idea using JVM that not supports 1.7
- [bugfix] fix "XXX is compiled by a pre-release version" with Kotlin 1.3 in some situations
2.1.0 (2025.02.23)
- [feature] supports hot update from server
- [feature] resource incremental compile supports mac aarch64 without rosetta
- [feature] supports customize compiler for different projects
- [bugfix] fix device selector not selectable on project opened at first time
- [bugfix] fix "Deploy Changes failed" sometimes when last time compile failed
- [bugfix] fix local.properties not excluded when sync multiple projects in remote build
2.0.1 (2024.01.15)
- [feature] supports native library updates
- [feature] compat with Android Studio Bumblebee
- [feature] compat with Kotlin 1.4
- [feature] supports fetch build file match rules from server
- [optimize] stop compilation directly when part of files failed to compile
- [optimize] auto copy generated source to local after gradle compilation
- [optimize] optimize some UX
- [optimize] better collecting error logs for kotlin compiler errors
- [optimize] fallback directly when last gradle build failed, which is more make sense for user
- [optimize] optimize memory usage on "Init Incremental Compile"
- [bugfix] fix compatible issues with AGP 3.4.2 / 3.5.4
- [bugfix] fix AbstractMethodError when implement lambda by an interface which contains default implementation
- [bugfix] fix dead loop by input waiting when ks-key-alias has password
- [bugfix] fix compile failed after change case of a new file
- [bugfix] fix missing change file after remove its directory and restore in file explorer
- [bugfix] fix deployment easy to timeout when res files is over 40,000
- [bugfix] fix resource change not effected on Android 15 after hot reload
- [bugfix] fix library incremental compilation incorrect when aar has multiple jars
- [bugfix] fix AbstractMethodError in library incremental compilation, when adding a default method in interface
- [bugfix] fix "Sync file from local to remote failed, please check your sync client is opened." sometimes
- [bugfix] fix fetching APK failed when using rsync with ssh key
- [bugfix] fix Jugg not work properly after coping a compiled project
- [bugfix] fix crash after triggering RJavaFixer on pages using kotlinx.android.synthetic in git submodule
- [bugfix] fix "unresolved reference" for R.id.xxx if first compiling res with new ID then using it in source files
- [bugfix] fix compile failed after convert Java to Kotlin and method is changed
- [bugfix] fix remote compilation failed with rsync + password on Mac aarch64
2.0.0 (2024.10.14)
- [feature] supports device below Android 11!
- [feature] supports library incremental compilation!
- [feature] supports AndroidManifest.xml incremental compilation!
- [feature] supports copy generated source to local
- [feature] compatible with gradle 8.x
- [feature] ignore modules that won't compile with APK
- [feature] add a button to fallback directly
- [optimize] avoid recompile files after device connected
- [optimize] showing more compile progress on IDE
- [bugfix] fix file changes may miss when git checkout or git pull, until project reopened
- [bugfix] fix "unresolved declaration" by dependency missing after IDE sync sometimes
- [bugfix] fix SQLite exception: [SQLITE_TOOBIG] String or BLOB exceeds size limit (statement too long) when deploy too much classes
- [bugfix] fix new project won't remember last compiled sync mode
- [bugfix] fix Huawei HarmonyOS 4.2 HOT-FIX deploy has no effects
- [bugfix] fix Xiaomi HyperOS meets MISS_AGENT_RESPONSE deploy error
- [bugfix] fix can not stop gradle compile when Jugg is syncing files
- [bugfix] fix Windows will rollback files when trigger file rollback check
1.2.3 (2024.07.12)
- [feature] supports Git worktree
- [feature] supports Git submodule
- [optimize] try to fix "No R.jar found in project, compile may fail." on first time init
- [bugfix] fix fallback by "AndroidManifest.xml changed" when using local build in some situation
- [bugfix] fix missing changed files on project opened, if file rollbacks to no change in Git
1.2.2 (2024.06.26)
- [feature] supports Kotlin 1.9
- [optimize] fix "Jugg compile not init"(low probability occurrence), which was caused by occasional failures in initializing project information
- [bugfix] fix aapt2 process leak after full build
- [bugfix] fix Jugg run config not generated on first time new created project opened
- [bugfix] fix NoSuchFieldError when invoking R.styleable.* after adding a new declare-styleable
- [bugfix] fix NoSuchFieldError when invoking R.id.* after adding a new id and using kotlinx.android.synthetic (KAE)
- [bugfix] fix Windows local build failed
- [bugfix] fix deploy failed when got hot reload error: "JVMTI_ERROR_INTERNAL"
- [bugfix] fix AVD starting up sometimes after project opening when no physical device
- [bugfix] fix AbstractMethodError when adding default implementation/params for Kotlin interface
1.2.1 (2024.04.24)
- [feature] one-click access optimize: auto-detect compile command and output apk path
- [feature] dump logcat while report issues
- [feature] install directly if install failed last time and no file changes
- [optimize] init project info after project opened instead of sync finished or sync skipped
- [optimize] fix warning log "WARN: getInputStream() should be called before connect()""
- [optimize] default config has different name to avoid overriding the normal config on next time scan
- [bugfix] fix NoSuchMethodError when add an optional argument to a top level function, and compile declaration file and invoke file together
- [bugfix] fix NoSuchMethodError for expand compilation not work properly
- [bugfix] fix auto-detect compile command and output apk path failed on Hedgehog and above
- [bugfix] fix remote login failed when too many ssh keys exists
- [bugfix] fix changes of gradle files in project root missing, after reopen project and sync
- [bugfix] fix jugg released when other plugin updates
- [bugfix] fix AbstractMethodError caused by desugar default interface failure, when the default interface is the parent interface of the modified class
1.2.0 (2024.02.04)
- [feature] supports detect file rollback
- [feature] supports custom server url and build file detection
- [feature] supports pull notification from server
- [feature] add mock events in "More options" for tests
- [feature] supports rsync with remote compile
- [feature] supports login with SSH key
- [optimize] optimize OOM by VM for too much dex files by enabling Java 8 desugar, remove redex logic
- [optimize] copy local classpath to jugg dir to avoid broken by gradle
- [optimize] retry with recreating compiler once when no error or error too much
- [optimize] improve speed of searching apk on local mode
- [bugfix] fix changed file during gradle compilation is missing after reopen project
- [bugfix] fix dex error "com.android.tools.r8.CompilationFailedException: Compilation failed to complete"
- [bugfix] fix RunConfiguration may reset after reopen project
- [bugfix] fix sourceFileManager deleted rollback files
- [bugfix] fix d8 "Compilation failed to complete: java.lang.NoSuchMethodError: 'com.android.tools.r8.jetbrains.kotlinx.metadata.jvm.KotlinClassMetadata"
- [bugfix] fix "error: unresolved reference" for newly added R id after source compilation
- [bugfix] fix run configuration is overridden after old version upgraded
- [bugfix] fix deadlock when "Waiting Jugg initializing finish" before "Warm Up Compile"
- [bugfix] fix Chipmunk 'java.lang.IllegalArgumentException' on dexing class file
- [bugfix] fix database unable to reinit after full compilation if broken
- [bugfix] fix custom changed build file is gone after sync project
1.1.13 (2024.01.13)
- [optimize] recreate JavaCompiler once when JavaTask call failed with no error
- [bugfix] fix run configuration not created after Hedgehog
- [bugfix] fix local gradle compile failed by env not correctly set
- [bugfix] fix AbstractMethodError when add codes of invocation interface static method
- [bugfix] fix interface default implementation not update if changing
- [bugfix] fix org.sqlite.SQLiteException: [tr] String or BLOB exceeds size limit (statement too long)
- [bugfix] fix redex error: Compilation failed to complete, Caused by: XXXX is defined multiple times
- [bugfix] fix "unresolved reference" when compile strings.xml in two different modules
- [bugfix] fix run configuration reset after reopen IDE
- [bugfix] fix remote compilation error "must be the parent of project path" when ift sync path equals project path
- [bugfix] fix "Run configuration is invalid" when using Windows with "/" and "\\" mixed
- [bugfix] fix Android Studio Dolphin can not listen sync event
- [bugfix] fix NullPointerException when adding a new static object field
- [bugfix] fix "AbstractMethodError" when delete a method which override the default function of interface with no redex triggered
- [bugfix] fix "AbstractMethodError" when A trigger B redex, and B implements C which has default method
1.1.12 (2023.12.22)
- [feature] run configuration supports select template
- [feature] show confirm dialog when "No file changes"
- [optimize] increase "Too many changes" limit for gigantic project
- [optimize] no longer needs an android run configuration to run Jugg
- [optimize] waiting Jugg initializing finish before start a new compilation
- [optimize] UX: add more indicator state
- [bugfix] fix local gradle build failed by JAVA_HOME not correct
- [bugfix] fix NoSuchMethodError by effected class not found, after inner static class method / companion class method changed
- [bugfix] fix AbstractMethodError when new classes implement interface with default methods
1.1.11 (2023.12.13)
- [feature] add "Restart App" button to MainToolbar
- [feature] supports multiple device deployment by choosing in device select box
- [feature] local.properties and gradle.properties changes also fallback to gradle compilation
- [feature] supports multiple project sync
- [feature] isolate remote run configuration
- [optimize] improve deploy speed by creating JuggDeploymentService to replace DeploymentService for better performance
- [optimize] avoid all res compilation failed after inclink failed once
- [optimize] add maxCompileSourceFiles limit to fallback to gradle
- [optimize] add run time in indicator
- [optimize] reopen KotlinCompiler warmUp to increase speed of "logging: configuring the compilation environment"
- [bugfix] fix compile android.jar API error for compileSdkVersion not match. Use module compileSdkVersion first
- [bugfix] fix isNeedReloadProjectInfo is always true on new IDE
- [bugfix] fix Init Project Info failed by exception when reparse gradle
- [bugfix] fix kotlin language version not match the build.gradle, which makes error "and is not allowed on a nullable receiver"
- [bugfix] fix fetch remote classpath failed if remoteSyncPath ends with '/'
1.1.10 (2023.12.08)
- [feature] supports Android Studio Iguana
- [optimize] auto reload table after kill aapt2 process
- [optimize] supports recover feature on projects that git root directory is project's parent file
- [optimize] remove redundant ref records (reduce 50% rows)
- [bugfix] fix NoSuchMethodError when invoke static interface method
- [bugfix] fix Android Studio Chipmunk Dolphin won't init project infos
- [bugfix] fix aapt2-inclink process leak
- [bugfix] fix kotlin-android-extensions error "error: unresolved reference. None of the following candidates is applicable because of receiver type mismatch"
- [bugfix] fix dead loop when files are effected files for each other
- [bugfix] fix "Find module compile order failed"
- [bugfix] fix compilation error "can not find symbol" with jars in project dir
- [bugfix] fix android_* attrs in styleable not loaded after last bugfix commit
1.1.9 (2023.11.22)
- [feature] well supports Windows!
- [optimize] do not recreate K2JVMCompilerIsolate for better compilation speed
- [optimize] supports cancel during compilation
- [optimize] speed up initialization: remove KotlinCompiler warmup because it doesn't help much
- [optimize] effected source files won't save to DeployFileManager to avoid recompilation
- [bugfix] fix styleable attr index not correct after compile styleables
- [bugfix] fix Kotlin error: "type mismatch", "cannot access class" when compiling with data binding. add generated source into -Xjava-source-roots
- [bugfix] fix error: Exception: [SQLITE_ERROR] SQL error or missing database (Expression tree is too large (maximum depth 1000))
- [bugfix] fix AbstractMethodError when file once compiled successfully, and invoked function was changed later
- [bugfix] fix error: "org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_PRIMARYKEY] A PRIMARY KEY constraint failed (UNIQUE constraint failed: file_infos.path)"
- [bugfix] fix compiling a deleted file sometimes
1.1.8 (2023.11.15)
- [feature] support specific remote sync path (optional)
- [feature] remote compilation supports empty password, and show enter dialog when clicking run
- [optimize] add fallback strategy: if compile times going to > 10, then fallback to gradle compile
- [optimize] fallback all to hot fix if there is any hot fix files for better performance
- [optimize] improve robustness of getting compile sdk version
- [optimize] hide password in dialog
- [optimize] read compile sdk version from ModuleJdkOrderEntry to improve robust
- [bugfix] fix running failed with remote compilation on Windows
- [bugfix] supports build variant, fix fetch classpath missing files when variant is not "debug"
- [bugfix] compat with Java 11 with Android Studio Dolphin
- [bugfix] fix can not see local variable after Deploying Java files. Add "-g" for javac to keep local variable name
- [bugfix] remote compilation sync failed when remote directory not exist
1.1.7 (2023.11.3)
- [optimize] improve tips of deploying result
- [optimize] optimize logic of getting platform and build-tools
- [bugfix] fix compatibility for Flamingo and below versions after supporting Giraffe
- [bugfix] passed unit test on Windows, fix failure of starting up and compiling resource
- [bugfix] fix getting the wrong Android Home
1.1.6 (2023.10.30)
- [feature] resource compilation supports Linux and Windows
- [optimize] retry with delay 5s when agent no response
- [optimize] decrease waiting time for deployable from 5s to 3s
- [optimize] update incremental update database condition for better performance
- [bugfix] fix compilation failed after full build then gradle sync on remote mode. Try to guess base dir and resolve the missing classpath
- [bugfix] fix references missing after incremental update database, because of over-ranged deletion
- [bugfix] fix missing new files on reopening project
1.1.5 (2023.10.25)
- [feature] supports get effect source files when adding new abstract methods
- [optimize] won't deploy R.dex because R fields has been inlined, to improve deploy speed and compatibility
- [optimize] make Kotlin compilation error clickable in IDE by replacing relative path to absolute path
- [bugfix] fix compilation failed after gradle sync, for dependencies not updated
1.1.4 (2023.10.18)
- [feature] add report issue function, add button to the run configuration window
- [feature] supports subdirectory for remote compile, add field for local to remote sync path
- [feature] collect and show gradle error output when compilation failed
- [optimize] improve progress indicator UX
- [optimize] optimize fallback reason
- [bugfix] fix deployed files not added on commit
- [bugfix] fix compile error in local compile, by using Java SDK of project instead of JAVA_HOME in env, to match the gradle JDK version
- [bugfix] fix compiled failed when Jugg directory has .DS_Store
- [bugfix] fix changes of layout XML not taken effect because aapt2 generates a 'layout-v22' XML
- [bugfix] fix error "file not found" when compile a new layout xml at the second time
1.1.3 (2023.10.09)
- [bugfix] fix R.styleable not generated. Let aapt2 supports import R.styleable.
- [bugfix] fix gradle compiler error "Type xxx.R${'\$'}anim is defined multiple times" after R compilation
- [bugfix] fix Run stop unexpected by catching error "org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (Expression tree is too large (maximum depth 1000))"
1.1.2 (2023.10.07)
- [bugfix] deploy state incorrect when using device running on different projects but same package name
- [bugfix] deploy state incorrect when using different devices running on one project
1.1.1 (2023.10.06)
- [bugfix] fix Jugg reloading the latest resource table after reopen project
- [bugfix] fix aapt2 daemon process not exit after project closed
- [bugfix] workaround for error "R+ Device should have FULL debugger swap support"
- [optimize] mark modified files during gradle compilation as uncompiled
1.1.0 (2023.10.06)
- [feature] resource compilation supports adding IDs
1.0.0 (2023.9.15)
- First release version