JRebel for Android

Compatible with: IntelliJ IDEA Android Studio
78 103

JRebel for Android skips the build and install process. Develop your Android applications in real-time. Any updates to code or resources are applied to the running application. Works with real devices and emulators alike.

Download plugin

Recent change notes

2.2.40 (June 15, 2017)

  • Fixed IllegalStateException: Service with id xxxx does not exist
  • Fixed initial startup being really slow when the Firebase Performance Monitoring plugin was applied
  • Fixed a race condition where an apply changes right after project setup change could result in "No changes detected"
  • Fixed handling resource names with non-latin1 unicode characters (experimental)
  • Fixed erroneously allowing dimension resources that are missing a unit (experimental)

2.2.38 (June 14, 2017)

  • Added support for Gradle Android plugin 3.0.0-alpha3
  • Added support for certain host proxy settings
  • Fixed getting VerifiyError after reloading some constructors with Kotlin
  • Fixed starting application when the persistent debug flag was set
  • Fixed a rare NullPointerException when doing apply changes

2.2.36 (June 13, 2017)

  • Added support for the latest developer preview of Android O (API 26)
  • Added incremental compilation support for PocketKnife and Lifecycle (Android Architecture Components)
  • Fixed attaching the debugger to a long-running process
  • Fixed an issue where the JRebel for Android run buttons were disabled
  • Fixed a case where the build would get stuck on startup
  • Fixed generating sources for annotation processors on incremental builds with -proc:none
  • Fixed handling a case when attempting to apply invalid manifest changes
  • Fixed handling SecurityException when starting an activity
  • Fixed still showing splash screen after application has started in some cases

2.2.34 (June 5, 2017)

  • Added support for Android Studio 3.0 Canary 3

2.2.32 (June 5, 2017)

  • Added incremental compilation support for Esperandro and Ollie
  • Fixed a startup performance issue on Android O where a white screen would be shown too long
  • Fixed parsing format=integer value resources with trailing whitespace (experimental)

2.2.30 (May 31, 2017)

  • Added incremental Java compiler support for the new Android-specific annotations introduced in Dagger 2.11
  • Added support for AutoParcel annotation processor
  • Added support for Android Gradle plugin 2.4.0-alpha versions
  • Fixed ClassNotFoundException being thrown for Parcelable classes during startup
  • Fixed a case where WebView would not see methods annotated with @JavascriptInterface
  • Fixed Apply Changes failing while project sync in progress
  • Fixed dexer failing with EXCEPTION FROM SIMULATION surfaced by BlockCanaryEx library
  • Fixed build failure when class files are deleted from build directory
  • Fixed "Cannot Run with JRA: Could not detect a launch activity" when the main activity is referenced through an alias

2.2.28 (May 18, 2017)

  • Improved user experience with applying changes that require restarting the application
  • Fixed APK already in use by other process
  • Fixed an issue with Lineage OS devices
  • Fixed getting ANR on startup with certain applications
  • Fixed IDE progress bar indicating applying changes in certain cases after resource change has already been applied

2.2.26 (May 12, 2017)

  • Fixed a regression introduced in 2.2.24 with running JRebel for Android with debugger

2.2.24 (May 12, 2017)

  • Improved messaging when the host computer was running out of space
  • Improved handling corrupt data on the device due to unexpected process termination / power loss
  • Changing only versionCode or versionName in AndroidManifest.xml no longer triggers APK reinstallation
  • Fixed IDE not respecting the selected Build Variant in some cases
  • Fixed a case where Gradle builds would always fail after canceling a build during Java compilation
  • Fixed handling duplicate classpath resources
  • Fixed reporting dexer failures due to system (java. and javax.) packages
  • Fixed IllegalStateException: Service with id XYZ does not exist
  • Fixed TimeoutException: android.view.ThreadedRenderer.finalize() timed out after 10 seconds
  • Fixed handling non-@style parents for styles in the incremental resource compiler (experimental)
  • Fixed handling multiple configuration definitions for the same declare-styleable resource (experimental)

2.2.22 (May 5, 2017)

  • Fixed startup failure when Jacoco is configured for a library project
  • Fixed NoSuchMethodError: No virtual method __jr_get__
  • Fixed Failure [INSTALL_FAILED_INVALID_APK] due to having android:extractNativeLibs="false" in the manifest
  • Fixed incremental resource compiler not failing on stray single quotes in strings (experimental)
  • Fixed resource processing error messages pointing to the merged resource folder instead of the source folder (experimental)
  • Reduced incremental resource compiler error message verbosity (experimental)

2.2.20 (April 28, 2017)

  • Fixed breakpoints in inner classes not being hit before an Apply changes
  • Fixed JRebel for Android startup failing with "ZipException: invalid LOC header (bad signature)" in rare cases
  • Fixed "IllegalAccessError: implementing interface method is not public"
  • Fixed "IllegalStateException: Application has been uninstalled while we were starting it"

2.2.18 (April 27, 2017)

  • Added support for the new Java 8 Desugar transform in Android Gradle Plugin 2.4.0
  • Added fallback to Gradle wrapper if local Gradle path was misconfigured
  • Fixed breakpoints not being hit in reloaded constructors
  • Fixed Class ID not found for java/lang/Object
  • Fixed "Expected current transaction Id XYZ but there's no open transaction"
  • Fixed "Failed to find constructor entry" during startup

2.2.14 (April 25, 2017)

  • Minimum supported IDE version is now Android Studio 2.2/IntelliJ IDEA 2016.1
  • Fixed IllegalStateException: Could not kill the runtime agent
  • Fixed JRebel for Android crashing after upgrading in certain cases
  • Fixed IllegalStateException: Expected current transaction Id xx-xx-xx-xx but there's no open transaction
  • Fixed NoSuchFileException: .../res-classpath.zip

2.2.12 (April 20, 2017)

  • Fixed still using old code after certain changes
  • Fixed "IllegalArgumentException: Cannot reload after we have received Android resources for restart"
  • Fixed "UnsupportedLaunchException: LatestResourcesButOldClasses"
  • Fixed getting timeouts with ADB over TCP
  • Fixed crashing due to a broken file state on startup

2.2.10 (April 18, 2017)

  • Fixed "NetworkTargetException: /start failed" for multiprocess apps
  • Fixed "IllegalStateException: Agent has no class path resources and we have nothing to send"
  • Fixed "UnsupportedLaunchException: ConcurrentTransaction"

2.2.8 (April 13, 2017)

  • Improved stability of launching application without being connected to the IDE
  • Fixed IllegalStateException: Classes should be trimmed first

2.2.6 (April 11, 2017)

  • Fixed Expected current transaction Id but got null

2.2.2 (April 11, 2017)

  • Improved activation and license related UI/UX
  • Fixed IllegalStateException: Another commit has been applied during this transaction

2.2.0 (April 4, 2017)

  • We've made changes to JRebel for Android licensing:
  • Merged Business and Individual licenses into a single JRebel for Android Enterprise license
  • All users are now eligible for a new 14-day JRebel for Android Enterprise trial
  • Introduced JRebel for Android Free
  • Read more about licensing changes here
  • Added support for ZeroTurnaround License Server 3.3 or later
  • Revamped activation and license related UI
  • Support launching application without being connected to the IDE

2.1.18 (March 28, 2017)

  • Fixed a file handle leak on Windows preventing IDE plugin upgrades from 2.1.16. Workaround: stop all Gradle daemons before upgrading.
  • Fixed handling annotations in named inner classes during incremental compilation
  • Fixed an issue with converting remote library module to in-tree module
  • Fixed an issue with "Another commit has been applied during this transaction"
  • Fixed a TransactionTooLargeException
  • Fixed starting up after system image upgrade on device/emulator
  • Fixed an issue in the incremental compiler where gradle build succeeded after removing a library while app code still referenced missing types
  • Fixed a stackoverflow after 'Apply changes' for some nested kotlin classes

2.1.16 (March 21, 2017)

  • Fixed cases where apply changes did not work for some named inner classes
  • Fixed StackOverflowError when changing Kotlin inner classes
  • Fixed an issue where the incremental compiler used stale generated ButterKnife sources

2.1.14 (March 15, 2017)

  • Added support for Android Gradle plugin 2.4.0-alpha1
  • Fixed resource changes not being visible in services
  • Fixed Java compile classpath order when using the incremental Java compiler
  • Fixed "No class bundles found or created yet."
  • Fixed "ZipException: error in opening zip file"
  • Fixed socket timeout errors when the machine was under heavy CPU contention

2.1.12 (March 13, 2017)

  • Support launching application without being connected to Studio (experimental flag)
  • Fixed using JRebel for Android plugin with Studio running on Java 6
  • Fixed re-adding previously removed fields
  • Fixed handling corrupt state after an emulator was killed
  • Fixed handling StackOverflowError
  • Fixed handling no space left on device

2.1.10 (March 7, 2017)

  • Fixed issue with compile-time constant changes not being picked after gradle build failures
  • Fixed JRebel for Android companion app being debuggable and showing up in IDE dialogs
  • Fixed issue where clearing companion app data results in a crash

2.1.8 (March 2, 2017)

  • Fixed class names and line numbers in log messages emitted by the Timber library
  • Fixed AgentNoSpaceLeftOnDeviceException when starting with a device low on storage space

2.1.6 (February 22, 2017)

  • DBFlow annotation processor is now supported by the incremental Java compiler
  • Improved startup times by using multiple dexer threads
  • Fixed cases where startup would fail with "ClassId not yet created"

2.1.4 (February 20, 2017)

  • Fixed an incremental compiler issue where Dagger 2 did not re-generate components correctly
  • Fixed lock verification failed for some classes causing classes to run in interpreted mode on API 24+
  • Fixed an issue with "Cannot merge bundle as we don't have installed APK yet."
  • Fixed "Timeout reached while waiting for the runtime agent startup to finish."
  • Fixed an IDE plugin crash when pressing cancel from the uninstall confirmation dialog
  • Fixed gradle builds failing when using kapt 1
  • StorIO and Requery annotation processors are now supported by the incremental compiler

2.1.2 (February 9, 2017)

  • Improved incremental compiler stability with Dagger 1 annotation processor
  • Improved the performance of JRebel for Android when switching between devices
  • Fixed JRebel for Android crashing when the manifest is invalid
  • Fixed IllegalStateException: Unexpected start type Unsupported (LatestResourcesButOldClasses)
  • Fixed JRebel for Android leaking files on device

2.1.0 (February 8, 2017)

  • LoganSquare annotation processor is now supported by the incremental compiler
  • Fixed a lambda class issue with Retrolambda
  • Fixed handling apply changes after project is cleaned
  • Fixed IllegalStateException: failed to find constructor entry
  • Fixed IllegalArgumentException: Missing error info
  • Fixed TimeoutException on startup if application was just being restarted

Notable changes since JRebel for Android 2.0.0:

  • Library dex files are now cached externally to the project. This improves startup times after cleaning project.
  • Improved JRebel for Android startup performance after clearing data
  • Improved user experience for cases where JRebel for Android needs to restart the app
  • Improved incremental compiler performance when using multiple annotation processors

2.0.44 (February 1, 2017)

  • Improved JRebel for Android startup performance after clearing data
  • Improved user experience for cases where JRebel for Android needs to restart the app
  • JRebel for Android now asks for confirmation if app uninstall is required
  • FragmentArgs, ActivityRouter, AutoFactory, MPermissions and RoboGuice annotation processors are now supported by the incremental compiler

2.0.42 (January 24, 2017)

  • Added support for the PermissionsDispatcher annotation processor in the incremental compiler
  • Added a workaround for a dex2oat issue on Xiaomi devices that resulted in JRebel for Android being unable to start
  • Fixed "No agent available" IllegalStateException when applying changes (experimental flag)
  • Fixed Gradle builds failing if Lombok was used in the project

2.0.40 (January 18, 2017)

  • Fixed IllegalStateException: No agent crashed yet (experimental flag)

2.0.38 (January 16, 2017)

  • Fixed Apply Changes failing for projects using AutoValue

2.0.36 (January 11, 2017)

  • Improved incremental compiler performance when using multiple annotation processors
  • Fixed a case where a failing Gradle build caused all subsequent builds to fail
  • Fixed handling getGenericParameterTypes() after reloading a class
  • Fixed NPE when accessing new elements via DataBinding

2.0.34 (January 9, 2017)

  • Fixed build failures with Dagger 2 when adding new @Inject constructor arguments
  • Fixed Databinding build failures when using matching Android Studio and Android Gradle plugin versions
  • Fixed "beforeNewApplication() was already called"
  • Fixed "Cannot run program wmic"

2.0.32 (December 30, 2016)

  • Added runtime support for making changes to Moshi POJOs
  • Fixed applying changes to classpath resources from subprojects
  • Fixed a crash with Intent.createChooser on API 19 or older
  • Fixed handling generic return type changes in Retrofit interfaces

2.0.30 (December 21, 2016)

  • JRebel for Android now stores internal files on the device under a separate companion app. This improves startup performance after clearing data (experimental flag only)
  • Library dex files are now cached externally to the project. This improves startup times after cleaning project (experimental flag only)
  • Added support for Android Annotations processor in the incremental compiler
  • Fixed a Gradle build failure if the project had dangling semicolons after import statements
  • Fixed Gradle builds failing with "No dex files to merge" if one Android app module depended on building another Android app module
  • Fixed a crash during startup if the launch activity had the NoDisplay theme

2.0.28 (December 15, 2016)

  • Added support for Android Gradle plugin 2.3.0-alpha3
  • Added incremental compilation support for projects using AutoService

2.0.26 (December 13, 2016)

  • Hotfix: Fixed NoSuchMethodError when starting up with JRebel for Android (introduced in 2.0.24)

2.0.24 (December 13, 2016)

  • Added support for Android Studio 2.3 Canary 3
  • Improved incremental compilation stability for Dagger 2
  • Fixed an issue where installing a huge app timeouts
  • Fixed Gradle build failure: "Cannot set property 'jrebelVersion' on null object"

2.0.22 (December 6, 2016)

  • Improved support for Realm 2 in the incremental Java compiler
  • Improved handling of Data Binding in the incremental compiler for multi-module projects
  • Fixed a case where making changes to sources containing Butter Knife annotations could lead to wrong compilation results
  • Fixed an issue with new @Inject fields not being picked up by Dagger 2
  • Fixed handling low space on the device
  • Fixed a NoClassDefFoundError being thrown when calling getDeclaredField on a class that references unknown types

2.0.20 (December 1, 2016)

  • Fixed JRebel for Android crashing with ArrayIndexOutOfBounds on startup

2.0.18 (November 30, 2016)

  • Improved the handling of out of memory on the host machine
  • Improved the handling of "could not start AVD"
  • Fixed a NPE during Apply Changes
  • Fixed a NPE in the incremental compiler
  • Fixed an exception during startup where an absolute path was expected
  • Fixed a conflict on the gradle class path with okio library
  • Fixed an incremental compiler issue where dependent classes of changed protected API was not being correctly recompiled
  • Fixed a few corner-case issues where changing kotlin lambda classes caused "Apply Changes" to fail
  • Treat all Vivo devices as unsupported

2.0.16 (November 24, 2016)

  • Fixed connecting to device in case of ADB version mismatch (Genymotion)
  • Fixed Java parsing issues with certain lambda expressions and comments
  • Fixed an IllegalStateException: could not find class info for reloaded class with some anonymous inner classes
  • Fixed a NullPointerException if serialVersionUID field was not static final

2.0.14 (November 23, 2016)

  • Added support for Android Studio 2.3 Canary 2
  • Improved incremental compiler precision with Butter Knife
  • Fixed dexer failing with EXCEPTION FROM SIMULATION surfaced by some libraries
  • Fixed reactivating using a license file
  • Fixed JRebel for Android crash when running while Android Device monitor is open
  • Fixed corrupt metadata preventing to start up

2.0.12 (November 15, 2016)

  • Added support for Android Studio 2.3 preview 1
  • Added support for Android Gradle plugin 2.3.0
  • Added incremental compilation support for projects using Databinding
  • Fixed verification issue on API 21 and 22 with certain methods returning arrays
  • Fixed warnings in logcat for API 24 and later

2.0.10 (November 11, 2016)

  • Fixed a critical verification issue with Jackson on API 22

2.0.8 (November 10, 2016)

  • Fixed a case where removing Dagger 2 annotations would result in a build failure
  • Fixed startup failing for projects which had resource shrinking enabled
  • Fixed a rare case where starting with JRebel for Android would throw an UnsatisfiedLinkError

2.0.6 (November 4, 2016)

  • Fixed an issue where reverted resource changes were not properly propagated to the device (switching branches)
  • Fixed an issue with inflating fragment inside fragtment
  • Fixed ConcurrentModificationException when applying changes
  • Fixed IllegalStateException: No load bundles received.
  • Decreased heap space requirements for applying a large set of changes (switching branches)

2.0.4 (October 26, 2016)

  • Fixed dex verification issue when app had an invoke method with a certain signature
  • Fixed a ClassCastException when serialVersionUID is not of type 'long'
  • Fixed applying changes to resources when applyOverrideConfiguration is used
  • Fixed a case where Butter Knife does not pick up first annotation in a class
  • Fixed a timeout crash when apply changes if pressed while paused behind a breakpoint

2.0.2 (October 19, 2016)

  • Fixed an issue with creating temp directory on device
  • Fixed an issue with FileNotFoundException for the APK
  • Fixed a ClassIdNotFoundException during apply changes
  • Fixed a case where uncaught exceptions thrown from new code would result in a weird VM state
  • Fixed a case where changing a view type in a nested fragment resulted in a ClassCastException

2.0.0 (October 13, 2016)

  • All users are now eligible for a new 21-day trial
  • Individual license holders can now:
  • Use the Debugger with JRebel for Android

  • Use JRebel for Android with multidex apps
  • Use JRebel for Android with apps having JNI libraries
  • Improved activation flow for upgrading the license

Notable changes since JRebel for Android 1.0:

  • JRebel for Android now comes with a incremental Java compiler with annotation processor support
  • JRebel for Android no longer needs any changes to build.gradle files
  • Reduced memory usage overhead on the device, especially for large apps

1.3.26 (October 6, 2016)

  • Reduced JRebel for Android IDE plugin distribution size by 54%
  • Fixed incremental compiler inconsistencies caused by external builds between apply changes
  • Fixed reloading Android asset files with Android Gradle plugin 2.2.0-alpha1 and later

1.3.24 (October 4, 2016)

  • Improved Java compilation times for clean builds
  • Fixed a case where cleaning a project wouldn't work on Windows because of .jar file locking issues
  • Fixed Gradle build failing with VerifyErrors during Java compilation
  • Fixed "failed to find constructor entry" error after converting an anonymous class to a lambda
  • Fixed an ArrayStoreException when using retrofit with certain method signatures

1.3.22 (September 30, 2016)

  • Fixed an issue with "Could not detect SDK version"
  • Fixed a FileSystemException "The process cannot access the file because it is being used by another process"
  • Fixed a StackOverflow in ClassNode.getSuperTypes()
  • JRebel for Android now minimizes the messages view when applying changes

1.3.20 (September 23, 2016)

  • Fixed issues with 'Expected baseVersionId'
  • Fixed a serialization issue with ACRA
  • Fixed an issue with Dagger 2 and incremental compilation

1.3.18 (September 19, 2016)

  • Fixed a ButterKnife build failure when a classname contains an underscore
  • Fixed a case where IDE messages tab does not show Gradle build failure reason
  • Fixed a Gradle build failure due to symbols not being found after switching branches

1.3.16 (September 13, 2016)

  • Improved handling of projects with multiple application modules
  • Fixed an incremental Java compiler issue with Icepick, Parceler, Dagger 1 and Dagger 2
  • Fixed a case where JRebel for Android stops with a SocketTimeoutException

1.3.14 (September 6, 2016)

  • Added Dart and Henson support to the incremental compiler
  • Fixed "FileNotFoundException: Input not found" if two libraries had same file name but different case
  • Fixed removing Android resources and classpath resources

1.3.12 (Aug 30, 2016)

  • Improved handling for cleaning the project build directory
  • Improved support for Parceler annotation processor
  • Improved handling for "Method code too large!"
  • Fixed a case where Gradle build did not fail while removed resource is referenced from code
  • Fixed debugger variable pane not showing correct toString() results
  • Fixed "EACCES (Permission denied)" during startup

1.3.10 (Aug 24, 2016)

  • Improved support for AutoValue extensions
  • Fixed Gradle builds failing due to stale generated files if a class had both Icepick and Butterknife annotations
  • Fixed Gradle builds always failing with some Kotlin projects
  • Fixed invalid characters in Gradle output if the OS encoding was not UTF-8
  • Fixed a case where resources changes could've been dropped after install due to a hash collision
  • Fixed code not applying in a case involving deep class hierarchies
  • Fixed JRebel for Android erroneously showing a "Project build directory has been cleaned" notification after a clean and a re-run
  • Fixed "Application data directory on device was cleaned." errors for multiprocess apps

1.3.8 (Aug 17, 2016)

  • Added AutoValue Moshi extension support to the incremental compiler
  • Fixed a NPE during Gradle build when applying changes for some Kotlin projects
  • Fixed ADB error handling
  • Fixed "Cannot remove missing resource" error with lambdas
  • Fixed an issue if resources were changed both before and after an application crash
  • Fixed showing JRebel for Android stopped messages in IDE

1.3.6 (Aug 9, 2016)

  • Fixed running JRebel for Android with Java 6 and Java 7

1.3.4 (Aug 9, 2016)

  • Fixed picking up new overriding methods in certain cases

1.3.2 (Aug 5, 2016)

  • Improved performance and stability of incremental Java compilation
  • Added Dagger 1 support into the incremental Java compiler
  • Disabled incremental Java compilation for projects with KAPT (Annotation Processing Tool for Kotlin) due to incompatibility
  • Added support for adding delegate properties to Kotlin classes
  • Fixed IllegalStateException: expected class info
  • Fixed detecting changes when classes were removed with no other changes
  • Fixed seeing old classes after application crash
  • Fixed Gradle builds always failing if the project had missing classpath entries
  • Fixed ADB integration when ADB_TRACE was turned on
  • Fixed handling PackageManager errors
  • Improved handling of clearing the application data directory

1.3.0 (July 28, 2016)

  • IntelliJ IDEA is now supported if the project uses the Android Gradle plugin
  • Added incremental compilation support to projects with Kotlin and Java
  • Added JRebel for Android events to IDE event log
  • Improved performance and stability of incremental Java compilation
  • Improved handling when the device has run out of free internal storage space
  • Improved handling for applying changes to lambdas
  • Improved handling for inner class removal
  • Fixed showing local variables in debugger
  • Fixed NullPointerException in methods called from constructors
  • Fixed FileAlreadyExistsException for .DS_Store

1.2.30 (July 21, 2016)

  • Improved performance and stability of incremental Java compilation
  • Removed support for Gradle 2.14. Please use Gradle 2.13 and earlier or Gradle 2.14.1 and later to use JRebel for Android
  • Fixed a Resources$NotFoundException occurring after clearing app data
  • Fixed Gradle build failures indicating a LibraryPlugin class loaders mismatch
  • Fixed Java compilation emitting warnings when running with JRebel for Android

1.2.28 (July 14, 2016)

  • Fixed a NullPointerException with Resources.getAssets()
  • Improved performance and stability of incremental Java compilation
  • Improved performance of loading resources on startup
  • Improved handling file system race condition on startup
  • Improved handling of clearing the application data directory

1.2.26 (July 12, 2016)

  • Enabled incremental compilation with Dagger 2 annotation processor for all users
  • Improved handling of obsolete generated sources from annotation processors
  • Fixed an issue where package-private methods would run old code
  • Fixed an issue surfaced by Otto where getDeclaredMethods would fail for abstract methods
  • Fixed build failure caused by 'Empty import declarations have no name'
  • Fixed 'Apply Changes' build failure caused by failing to process anonymous inner classes incl. $$Lambda generated classes

1.2.24 (July 1, 2016)

  • Added support for gradle-3.0-milestone-2
  • Improved runtime reflection speed (large impact on deserialization performance when using Gson or Jackson)
  • Improved Retrofit support

1.2.22 (June 29, 2016)

  • Enabled incremental Java compilation for all users
  • Fixed SecurityException during startup on some multi-user devices
  • Fixed a rare case where resources would be out of date after a rerun
  • Fixed a NullPointerException occurring when ADB was unresponsive
  • Fixed a case where all Gradle builds failed due to file encoding issues with aapt

1.2.20 (June 22, 2016)

  • Fixed 'Project contains classes compiled for Java 8 or newer' for compileSdkVersion 24
  • Fixed handling of clearing the application data directory

1.2.18 (June 20, 2016)

  • Improved performance and stability of incremental Java compilation
  • Fixed "Remote debugger is not attached yet" failure with Individual license
  • Fixed AdbBrokenPipeException

1.2.16 (June 16, 2016)

  • Improved Butterknife support in the incremental Java compiler
  • Improved attaching debugger on startup
  • Improved handling timeout on apply changes
  • Fixed throwing AbstractMethodError instead of IllegalArgumentException in Method.invoke()
  • Fixed Method.invoke() not always calling static initializers
  • Fixed handling application installation failures

1.2.14 (June 8, 2016)

  • Improved performance and stability of incremental Java compilation
  • Improved handling when the device has run out of free internal storage space
  • Fixed "No files to commit" crashes during startup
  • Fixed a crash when closing the emulator while JRebel for Android is starting

1.2.12 (May 31, 2016)

  • Improved performance and stability of incremental Java compilation
  • Disable Incremental Java compilation when project uses Error Prone due to incompatibilities
  • Changes are now applied after the top-most activity is destroyed and before it's recreated
  • Fixed "Could not connect to the agent"
  • Fixed TimeOutException on startup
  • Fixed IllegalStateException: Missing optimized DEX file surfaced by ADB flakiness
  • Fixed apply changes with some custom views
  • Fixed IllegalStateException: class loader is not a PathClassLoader

1.2.10 (May 24, 2016)

  • Fixed starting JRebel for Android with emulators on Android Studio 2.2 preview 1
  • Fixed incremental compilation not kicking in when generated sources were changed
  • Fixed occasional "zip file closed" error when modifying classes in library projects
  • Fixed an UnsatisfiedLinkError surfaced by React Native
  • Fixed starting up on Kitkat devices with ART enabled

1.2.8 (May 20, 2016)

  • Added support for Android Studio 2.2 preview 1
  • Added support for Android Gradle plugin 2.2.0-alpha1
  • Fixed handling duplicate classpath resources

1.2.6 (May 18, 2016)

  • Added support for transforms (like Retrolambda) in Android library projects
  • Fixed Gradle build instability after making AndroidManifest.xml changes
  • Fixed a case where the app keeps crashing with "Out of order map item" dex2oat error
  • Fixed a "Failed to accept socket" concurrency issue on app startup

1.2.4 (May 16, 2016)

  • Incremental Java compilation now supports the Icepick library
  • Disable incremental Java compilation when the project uses Error-prone due to incompatibilities
  • Fixed switching from ART to Dalvik device with no changes
  • Fixed "simulation exception"
  • Fixed "commit failed"
  • Fixed MissingBackpressureException
  • Fixed serialVersionUID on Android N

1.2.2 (May 10, 2016)

  • Enabled custom incremental java compiler for more users
  • Improved SugarORM support
  • Fixed hitting breakpoints in static initializers and constructors of Application subclasses

1.2.0 (May 9, 2016)

  • JRebel for Android now includes a custom incremental Java compiler supporting Butter Knife and Dagger (both 1 and 2)
  • Added support for configuring Gradle though IDE settings
  • Added support for SugarORM library
  • Improved apply changes speed
  • Improved anonymous inner class handling
  • Improved stability on Android N
  • Fixed loading native libraries on Android N
  • Fixed applying changes to Android resources with APK splits
  • Fixed "Missing optimized DEX file"
  • Fixed including native libraries from non-standard locations
  • Fixed RuntimeException when debugger could not be attached due to a failing emulator

1.1.14 (April 27, 2016)

  • Improved incremental javac performance (experimental flag)
  • Added initial support for Android N preview
  • Fixed handling projects where apk path changes with each build
  • Fixed occasional aapt "Error parsing XML: no element found"
  • Fixed "The specified installation directory does not exist" Gradle error on startup
  • Fixed a possible ConcurrentModificationException when some classes were removed
  • Fixed UnsatisfiedLinkError for arm applications on devices with libhoudini
  • Fixed handling disconnecting the device from the host computer

1.1.12 (April 21, 2016)

  • Improved incremental javac support for ButterKnife (experimental flag)
  • Fixed handling library changes with .so files
  • Fixed RuntimeException: Method code too large!

1.1.10 (April 14, 2016)

  • Initial Dagger 1 annotation processor support for incremental javac (experimental flag)
  • Improved applying changes to Kotlin and Retrolambda anonymous inner classes
  • Improved handling for no space left on device
  • Fixed starting a non-existant activity declared in the manifest
  • Fixed "End Of Central Directory signature not found"
  • Fixed an issue with UnsubscribedException
  • Fixed "Could not process" for AutoValue generated class
  • Fixed activity task handling when resuming application from launcher
  • Fixed a case where dependent classes were not recompiled when a constant was removed (experimental flag)
  • Fixed incorrect "Execution of removed code detected" events restarting the app even though no code was removed

1.1.8 (April 5, 2016)

  • Improved connection handling stability with experimental flag enabled
  • Fixed file locking issues with experimental flag enabled
  • Fixed an IllegalArgumentException in IDE
  • Fixed layout inflation issues when an imeActionId attribute referenced an ID
  • Fixed multiple issues with removing methods
  • Fixed disk space leak on the host computer
  • Fixed showing previous application crash on startup
  • Fixed installing application twice on startup
  • Fixed IllegalStateException: anon inner class cannot have changed super class
  • Fixed dex SimExceptions when testCoverageEnabled was true

1.1.6 (March 29, 2016)

  • Improved connection handling with the device (experimental flag)
  • Added source navigation support to incremental Java compiler errors (experimental flag)
  • Added support for changing assets referenced from WebView
  • Reduced Gradle overhead when applying changes
  • Improved the reporting of application crashes in the JRebel for Android IDE tool window
  • Fixed a case where only removing classes and then applying changes could lead to a broken state
  • Fixed occasional Jansi warnings on Windows when using the incremental Java compiler (experimental flag)
  • Fixed JRebel for Android sometimes not starting with 32-bit JVMs
  • Fixed incompatibilities with Android Gradle plugin 1.4.0-beta versions
  • Fixed a bug where upgrading JRebel for Android IDE plugin could lead to a broken JRebel for Android installation on Windows
  • Fixed an occasional ObjectCollectedException when using the debugger with a Kotlin project

1.1.4 (March 21, 2016)

  • Improved support for RoboGuice and Guice libraries
  • Improved handling of removed classes and methods
  • Improved connection handling with the device (experimental flag)
  • Improved startup speed for projects using ProGuard for debug builds
  • Decreased IO overhead during apply changes
  • Fixed a bug with Retrolambda where classes were not transformed
  • Fixed resource ID inconsistencies surfaced by projects with APK splits
  • Fixed UnsatisfiedLinkError for projects having only armeabi native libraries
  • Fixed "null is not a valid development app key" startup error with Urban Airship library
  • Fixed startup error when IDE is running with 64-bit VM and project is configured to use 32-bit VM

1.1.2 (March 14, 2016)

  • Enabled Dagger 2 support with incremental compiler (experimental flag)
  • Fixed bugs with incremental compiler (experimental flag)
  • Fixed library project changes not being picked up for certain projects

1.1.0 (March 8, 2016)

  • Improved startup times
  • Reduced memory usage overhead on the device, especially for large apps
  • Fixed a NullPointerException when restarting the app after it had crashed

1.0.28 (March 2, 2016)

  • Improved handling agent crashes
  • Fixed IllegalStateException: classId not yet created
  • Fixed issues with ClassNotFoundException
  • Fixed causing INSTALL_PARSE_FAILED_MANIFEST_MALFORMED when running without JRebel for Android

1.0.26 (February 23, 2016)

  • Added back incremental javac with support for ButterKnife (experimental flag)

1.0.24 (February 17, 2016)

  • JRebel for Android no longer needs changes to build.gradle files. Existing configuration is removed automatically.
  • Added indeterminate progress bar for startups and applying changes
  • Improved handling for applying changes to Kotlin lambdas
  • Fixed IllegalAccessException for private static methods turned into non-private
  • Fixed stack underflow when dexing

1.0.22 (February 10, 2016)

  • Improved handling of removed classes
  • Fixed NoSuchFieldErrors surfaced by Butterknife
  • Fixed a few issues with experimental features (experimental flag)

1.0.20 (February 5, 2016)

  • Fixed "No project layout set." IllegalStateException introduced in 1.0.18

1.0.18 (February 3, 2016)

  • Improved handling of AndroidManifest.xml changes (experimental flag)
  • Improved handling of project structure changes (like changing dependencies)
  • Fixed the small (re-)launch button in the JRebel for Android console
  • Fixed a few bugs in the "Send Feedback" dialog
  • Fixed displaying an application crash when the stacktrace was large (1+ MB)
  • Fixed a NullPointerException when preparing the application
  • Fixed Otto subscriptions with final methods

1.0.16 (January 27, 2016)

  • Improved reloading speed (experimental flag)
  • Improved initial and incremental install speed for projects having JNI libraries (experimental flag)
  • Fixed class path resources missing when minify enabled
  • Fixed edge case IllegalAccessError when accessing public fields through reflection

1.0.14 (January 18, 2016)

  • Added support for Android Studio Preview 5
  • Added support for Android Gradle plugin 2.0.0-alpha5
  • Reverted native library optimization due to instabilities

1.0.12 (January 14, 2016)

  • Improved startup times for apps with native libraries
  • Fixed a runaway allocation causing large performance problems on the device

1.0.10 (January 8, 2016)

  • Improved startup time when proguard is enabled
  • Fixed IllegalStateException: A class file was deleted during processing
  • Fixed Illegal class access error with Kotlin
  • Fixed switch branching when new values were added to enums
  • Fixed IllegalStateException: No files to commit
  • Fixed NullPointerException with ClassLoader
  • Fixed issues with NoClassDefFoundError

1.0.8 (December 30, 2015)

  • Fixed "GC overhead limit exceeded" for larger apps
  • Fixed an issue with ActiveAndroid
  • Fixed an issue with anonymous inner classes
  • Improved support for APK splits

1.0.2 (December 22, 2015)

  • Improved startup performance
  • Fixed a StackOverflowError surfaced by butterknife
  • Fixed calling public methods in private classes via reflection
  • Fixed IllegalStateException: JRebel was not configured for the project

1.0.0 (December 15, 2015)

  • All users are now eligible for a new 21-day trial
  • Added support for Android Studio 2.0 Preview 3b
  • Improved debugger integration
  • Really fixed "Invalid Gradle Timings found" error
  • Fixed StackOverflowError surfaced by certain class hierarchies

0.9.46 (December 9, 2015)

  • Significantly improved startup times, especially for large projects
  • Fixed a regression introduced in 0.9.40 with resource handling in library projects
  • Fixed a debugger issue with displaying local variables

0.9.44 (December 7, 2015)

  • Improved compatibility with Android Studio 2.0
  • Improved error messaging in the JRebel for Android tab
  • Fixed an abstract method issue with Devices running 4.4 or older
  • Fixed a font issue in the "Send feedback" dialog
  • Fixed "Invalid Gradle timings found" error
  • Fixed a case where terminating the app from the IDE would restart the app

0.9.42 (December 2, 2015)

  • Decreased startup time by about 1 second
  • Fixed DexException: no classfiles specified

0.9.40 (December 1, 2015)

  • Fixed resources instances not getting new configuration
  • Fixed issue with debugger integration

0.9.38 (November 27, 2015)

  • Added support for the Retrolambda 3.3.x-beta Gradle plugin
  • Fixed NoClassDefFoundError with some Retrolambda reloads
  • Fixed IllegalStateException: Could not read error report: Permission denied
  • Fixed ManifestParseException for manifests with duplicate string entries in the string pool
  • Fixed a regression with loading JNI libraries when using Android Gradle plugin 1.5.0 or later

0.9.36 (November 24, 2015)

  • Improved reload performance for build variants with minifyEnabled
  • Added support for Android Gradle plugin 2.0.0-alpha1
  • Added support for Android Studio 2.0 Preview

0.9.34 (November 23, 2015)

  • Fixed issues related to Retrolambda
  • Fixed mismatched stack depths exception
  • Fixed erroneously showing previous crash stacktrace after restarting

0.9.32 (November 16, 2015)

  • Added support for Android Studio 1.5 RC1
  • Added support for Android Gradle plugin 1.5.0

0.9.30 (November 11, 2015)

  • Fixed ClassNotFoundException on startup
  • Fixed ClassNotFoundException when unmarshalling
  • Fixed NoSuchMethodError: No virtual method jr_super_selector

0.9.28 (November 3, 2015)

  • Fixed IllegalStateException: no 'this' pointer within static method
  • Fixed NullPointerException in ReflectionAnnotationHelper
  • Fixed MissingBackpressureException
  • Fixed ClassCastException with ClassLoader

0.9.26 (October 29, 2015)

  • Fixed a restart loop
  • Fixed NoSuchMethodError
  • Fixed FileNotFoundException: Bundle does not exist
  • Fixed IllegalStateException: Could not find info
  • Fixed MissingBackpressureException

0.9.24 (October 26, 2015)

  • Improved initial startup time (ca 20% on 4-core CPU)
  • Fixed No reloads expected
  • Fixed FileNotFoundException on startup
  • Fixed Resource entry is already defined

0.9.22 (October 16, 2015)

  • Fixed issues with Android Studio 1.5 Preview 1
  • Fixed a reflection issue with dynamic proxies

0.9.20 (October 14, 2015)

  • Fixed signing APK without keypass
  • Fixed invalid local when dexing Groovy code
  • Fixed an issue for Kotlin M14

0.9.18 (October 7, 2015)

  • Improved application startup performance
  • Improved showing application crash dialog
  • Fixed clean build failures when both multidexEnabled and minifyEnabled were set
  • Fixed NullPointerException when processing classes
  • Fixed IllegalStateException: ClassId not yet created
  • Fixed IllegalStateException: Expected BEGIN_OBJECT
  • Fixed DexException with Groovy

0.9.16 (October 5, 2015)

  • Make project and make module do not trigger reload anymore - use the dedicated "Apply changes" button
  • Fixed StrictMode violations caused by JRebel for Android
  • Fixed NPE in Lookuputil
  • Fixed using 100% CPU when offline
  • Improved application startup performance

0.9.14 (September 24, 2015)

  • Added the option to restart an app from the crash dialog
  • Implemented support for referencing new methods from android:onClick attribute
  • Fixed compatibility issues with Android Gradle 1.4.0-beta2 plugin
  • Fixed a few issues with reloading lambdas processed by Retrolambda
  • Fixed handling Scala lambdas

0.9.12 (September 21, 2015)

  • Added a new "Apply changes with JRebel for Android" button for applying changes just like "Make Project"
  • Improved PID detection on application startup
  • Fixed a reflection bug surfaced by Otto and EventBus on Android M
  • Fixed handling constructors referencing new static variables
  • Fixed displaying method parameters in the debugger

0.9.10 (September 17, 2015)

  • Implemented automatic app restart on class hierarchy changes
  • Implemented initial support for reloading lambda classes
  • Improved subsequent startup speed
  • Fixed a ClassNotFoundException during initial launch

0.9.8 (September 15, 2015)

  • Implemented support for adding new GreenRobot EventBus subscribers
  • Fixed a bug with debugger where the values of some variables were not available
  • Fixed a bug related to renaming the application id
  • Fixed a crash when reloading apps with TabActivities
  • Fixed a bug with dotted enum names in attr definitions
  • Fixed a bug with overlapping application ids
  • Improved handling in case of crashes caused by OOM

0.9.6 (September 10, 2015)

  • Fixed an issue with Android Studio 1.4 Beta 3
  • Fixed attaching remote debugger
  • Fixed TimeoutException: Could not find PID
  • Fixed RuntimeException: Should never happen with Groovy
  • Fixed NullPointerException in PlainSocketImpl
  • Fixed NullPointerException in StackTraceUtil
  • Fixed IllegalStateException: Could not process class
  • Fixed IOException: Unable to delete file on startup
  • Fixed TimeoutException with Dexing

0.9.4 (September 7, 2015)

  • Fixed a building issue with styleable attribute flags
  • Fixed a Dexer simulation error with Kotlin
  • Fixed an issue related to nested anonymous classes
  • Fixed an issue related to installing the application
  • Fixed an issue related to device reconnection
  • Fixed an issue related to class hierarchy changes
  • Fixed an issue with sending feedback
  • Increased dexer heap size if at least 8GB of RAM

0.9.2 (September 3, 2015)

  • Minor plugin metadata changes for publishing

0.9.0 (September 3, 2015)

  • Initial early access release (August 31, 2015)

  • Fixed issues related to device reconnection (August 28, 2015)

  • Improved automatic Gradle configuration
  • Improved adb error handling
  • Increased dexer heap size when on a 64-bit JVM (August 24, 2015)

  • Fixed IDE plugin crash on Android Studio 1.4 Preview 3
  • Fixed thrown exception type when calling Enum.valueOf with non-existant value (August 21, 2015)

  • Fixed VerifyError with abstract methods
  • Fixed startup bug with ActiveAndroid
  • Fixed NullPointerException with processing classes
  • Fixed NullPointerException with splash screen
  • Decreased memory usage on machines with smaller RAM (August 18, 2015)

  • Fixed bugs related to nested anonymous classes (August 14, 2015)

  • Fixed IDE plugin for Android Studio 1.4 preview
  • Fixed several bugs related to nested anonymous inner classes
  • Fixed reloading for Kotlin lambda classes and synthetic classes
  • Fixed startup on 32bit Windows
  • Fixed StackOverflowError for field annotations retrieval (August 13, 2015)

  • Fixed several bugs related to nested anonymous classes
  • Fixed VerifyError for private static native methods
  • Fixed ClassNotFound on only library changes
  • Fixed launch for users with overwritten user.home property
  • Fixed Class.newInstance for classes with protected constructors only
  • Fixed startup bug for applications listening on TCP ports (August 11, 2015)

  • Fixed building project with resource ids containing dots
  • Fixed IllegalAccessException with some reflective calls
  • Fixed IllegalStateException on reload
  • Fixed NullPointerException from Throwable.getStackTrace
  • Improved error handling (August 7, 2015)

  • Improved connection stability between the device and JRebel for Android
  • Fixed a regression in startup time for single-module projects
  • Fixed a NPE surfaced by reflective getConstructor call
  • Fixed an issue where Fragment.onViewCreated() callbacks were dropped
  • Fixed a crash during "Make Project" if the project had empty gradle modules
  • Fixed a case where dex2oat would fail during startup
  • Fixed IDE crash when Gradle build failed while JRebel for Android was running (August 5, 2015)

  • Fixed a regression in startup performance for single-module projects
  • Fixed an issue with Make project icon
  • Fixed a bug related to cleaning the project while JRebel for Android was running (August 4, 2015)

  • Fixed a bug surfaced by upgrading butterknife
  • Fixed an app crash when a view type for a given id was changed in layout
  • Fixed a startup failure caused by having an android:backupAgent in manifest
  • Fixed an issue when a library was using Thread.getContextClassLoader()
  • Fixed running projects which did not have gradle direct invocation enabled
  • Fixed a startup issue on Samsung 4.1 and 4.2 devices (July 28, 2015)

  • Improved consecutive startup speed
  • Fixed class loading issue
  • Fixed showing 'make project' dialog when not applicable
  • Improved messaging when attempting to launch JRebel with non-debuggable build variant (July 24, 2015)

  • Improved anonymous inner class reloading
  • Fixed issue causing startup crash
  • Fixed invoking private native methods
  • Fixed an issue causing reloads to fail (July 16, 2015)

  • Strongly advising the usage of 'make project' instead of 'make module' to trigger reloads
  • Fixed picking up library changes at startup
  • Skip compilation of tests if JRebel is running
  • Fixed getting AbstractMethodError and IllegalAccessException with reflection
  • Fixed resource changes not being picked up after restart due to unsupported class change
  • Fix critical startup crash when using JDK 7+ constructors in subclasses (July 8, 2015)

  • Re-enabled startup performance optimizations (instabilities resolved)
  • Fixed a bug impacting first reload time
  • Fixed a NullPointerException with Gson
  • Fixed Gradle configuration issues with in-tree App Engine modules (July 6, 2015)

  • Disabled startup performance optimization due to instability
  • Fixed an issue with Kotlin on Dalvik (July 3, 2015)

  • Improved startup performance
  • Improved reloading .proto changes with the Wire library
  • Fixed an issue with invoking constructors via reflection
  • Fixed an issue with starting application on the device
  • Fixed reloading constructors with try-catch blocks (June 26, 2015)

  • Added launch with debugger support
  • Improved anonymous inner class reloading
  • Fixed a bug surfaced by Jodatime-android
  • Fixed a dexing issue surfaced by the Wire library
  • Fixed invoking package-private methods declared within a reloaded superclass
  • Fixed printing app crash stacktrace in IDE logcat view (June 17, 2015)

  • Fixed a possible IDE hang on startup (June 15, 2015)

  • Improved startup times
  • Fixed printing crash stacktraces on device
  • Fixed an issue with handling anonymous inner class constructors
  • Fixed an occasional IDE hang when switching or closing projects (June 9, 2015)

  • Fixed a StrictMode violation when reloading
  • Fixed a NoMethodFound error when using Otto
  • Add support for buildtools 23-rc1 and 23-rc2 (June 5, 2015)

  • Fixed app crash dialog not showing up when running with JRebel
  • Fixed a case where reloads were dropped after a class had been reloaded more than 9 times
  • Improved startup times (June 2, 2015)

  • Fixed a crash with parcelables when reloading
  • Reduced the heap space on device used by JRebel (May 29, 2015)

  • Added support for custom keystore types
  • Fixed issue regarding certain changes to resources causing compilation to fail
  • Fixed an issue with loading custom fonts from assets
  • Reduced heap space usage on the device
  • Added a menu item to Android Studio enabling easy sending of feedback and log files (May 26, 2015)

  • Significantly improved resource reload times
  • Fixed malformed manifest bug on initial install
  • Improved support for using annotation processors in various project configurations
  • Increased initial install timeouts for really large apps
  • Fixed a class processing issue if Kotlin and Butterknife were used in the same project (May 20, 2015)

  • Improved start-up times, especially with large multidex apps
  • Fixed an issue with main dex list being too large for some multidex apps
  • Fixed an activity leak caused by JRebel
  • Fixed app startup on ICS devices (May 18, 2015)

  • Fixed a crash due to a closed AssetManager
  • Fixed reloads not triggering in single-module projects
  • Fixed failing PID detection for apps with numbers in the application id (May 15, 2015)

  • JRebel is now quicker at reacting to changes
  • Improved resource reloading speed
  • Reloading anonymous inner classes is now more robust
  • Fixed a ClassNotFoundException surfaced by annotation processing
  • Fixed a buffer overflow at startup
  • Fixed support for Retrolambda gradle plugin 3.1.0
  • Better support for really large multidex apps
  • Fixed a reload crash if the app uses custom view IDs (May 12, 2015)

  • Fixed an issue with 9-patch drawables not being processed correctly (May 11, 2015)

  • Improved the performance of reloads
  • Improved support for multi-dex applications
  • Fixed a BufferOverflowException on startup
  • Fixed an issue with the Retrolambda library (May 5, 2015)

  • Fixed an issue with stopwatch
  • Fixed duplicate R classes on startup
  • Fixed NullPointerException on startup
  • Improved startup performance on ART (April 30, 2015)

  • Fixed TCP port collision on device
  • Added support for starting JRebel with specific activity in the run configuration
  • Fixed handling custom source generators in Gradle (April 29, 2015)

  • Fixed file watching issues
  • Reloading resources is now triggered by make module, just like code changes
  • Log file location has been moved out of the build dir to $USER/.jrebel-android/logs
  • Improved printing stacktraces (April 27, 2015)

  • Fixed disk space leak on the device
  • Improved automatic configuration of build.gradle files
  • Fixed automatic restarting of the app (April 23, 2015)

  • Fixed loading JNI libraries