Instantly update code and resources

Incremental compiler with annotation processor support

JRebel for Android comes with a unique incremental Java compiler that fully supports annotation processors. This further reduces time spent on applying changes. As the libraries using annotation processors differ, they have to be integrated one at a time.

Supported libraries

Fully supported:

  • Butter Knife
  • Dagger
  • Dagger 2
  • Databinding
  • Parceler
  • Icepick
  • Deeplink
  • AutoValue
  • Greenrobot EventBus
  • Epoxy
  • Dart
  • Henson
  • Realm Mobile Database
  • AndroidAnnotations

Partially supported*:

  • Lombok
  • kapt

*JRebel for Android disables incremental compilation if any of these libraries are present

Instant code and resource updates

JRebel for Android picks up application changes and skips building a new APK for each edit. Code and resource changes are transferred in incremental packages. You can see the effect immediately.

Maintains application state

Changes are transferred to the device using incremental packages, so no APK reinstall is needed. JRebel for Android can maintain the application state for more than 12 change types. Meaning your top-most activity is restarted, but the activity stack stays unchanged — like you would flip your device from portrait to landscape. Only changing the class hierarchy or AndroidManifest will require an app restart.


JRebel for Android allows you to debug your application in Android Studio and IntelliJ IDEA. Use “Debug with JRebel for Android” to install the application or to attach it to a running process. You can continue updating the code and resources when debugger is attached to get instant insight into the application. Escape the madness of reinstalling your app while debugging.

Zero configuration

To get started, get the JRebel for Android plugin from JetBrains repositories. All Android Gradle projects are supported and can be run in Android Studio and IntelliJ IDEA. No project source code modification needed.

More than Java

JRebel for Android works on a bytecode level. This way we can support all JVM languages while keeping ART and Dalvik compatibility. Write your apps with Gradle integration in any language: Kotlin, Scala, Groovy or Java.

language logos

Multidex and JNI linking

JRebel for Android supports applications with multidex configured to prevent hitting the magical 65536 method count. You can use JRebel for Android with projects that use JNI linking for native code. When you want to update the native code, an application reinstall is still required.

JRebel for Android vs. Instant Run

JRebel for Android and Instant Run are quite similar in their end objectives.

Preserving app state

JRebel for Android header

Instant Run

Modify method body

yes yes

Add and remove method


Modify method definition


Adding and removing fields


Adding and removing classes


Adding and removing inner classes


Adding and removing annotations


Adding, removing and modifying static fields value


Adding and removing enum values


Modifying interfaces


Adding, removing and modifying XML resource

yes yes

Adding new resource with ID


Adding and removing implemented interfaces

Replacing superclasses

Android versions – API level

15 and later

15 and later*

Incremental Java compiler

Incremental compiler with annotation processing support

Gradle’s incubating incremental

Supported languages

Java, Kotlin, Scala, Groovy


*Structural changes before API Level 21 are always handled with a full APK reinstall.


How do I get JRebel for Android?

  1. Double-press ⇧ Shift in IntelliJ or Android Studio and search for Plugins
  2. Press Plugins and then Browse Repositories
  3. Search for JRebel for Android and press Install plugin