Instantly update code and resources
Frequently asked questions
What does JRebel for Android do?
JRebel for Android allows you to see updates without having to install a new APK each time to apply your changes. Instead, delta packages are sent over to the device and the application is updated. Here is also a blog post explaining the internals of JRebel for Android.
How can I get JRebel for Android?
JRebel for Android is available from Android Studio > Preferences > Plugins > Browse Repositories when you search for JRebel for Android. You can also refer to the Quick Start guide on how to get started.
Which projects does JRebel for Android support?
JRebel for Android works with all Android projects that are built with Gradle in Android Studio.
What do I need to change in my application in order to use JRebel for Android?
JRebel for Android does not require any changes to your project files. Our Android Studio plugin will take care of everything that is needed to start your application with JRebel for Android.
How does JRebel for Android change my development flow?
JRebel for Android doesn’t really change your development flow. Instead of using Run, you should use Apply changes when you want to see your code running in the application. If the application was not installed with JRebel for Android previously, it will be done so once clicking Apply changes.
Can I use the debugger with JRebel for Android?
Yes. Use Debug with JRebel for Android to start a new debugger session. Attaching the debugger to Android processes is also supported if you want to debug an already running application. You can also use the Apply changes button while the debugger is attached. New code will also be hit in the debugger session.
Do I need an internet connection to use JRebel for Android?
JRebel for Android does not require internet connection to be used. However, you will need internet access to install the plugin from the JetBrains repository, activate it, as well as for getting updates.
Can I use JRebel for Android via a command line interface?
No. JRebel for Android is tightly integrated into Android Studio and does not work with invoking the Gradle build commands from a command line.
What is the experimental flag in JRebel for Android?
Experimental flag enables features that are not fully finalized or stable yet. If you do want to experience the bleeding edge with JRebel for Android, add this flag to your to your studio.vmoptions file:
-Djrebel.android.experimental=trueYou can verify that the experimental flag has been enabled by checking JRebel for Android console output for:
Experimental flag has been enabled!
What is the difference between the Individual and the Business license?
The Individual license is restricted to a single person or companies with no more than one employee. As of JRebel for Android 2.0, Individual license owners are entitled to use multidex, JNI linking and the Debugger. Incremental Java compiler with annotation processors support is available only for Business license users.
Can annotation processors be used with an Individual license?
Yes. You will have to wait longer for compilation though.
What if I want to use a library like Fresco or Realm.IO with my Individual license?
Simply install JRebel for Android 2.0. The plugin is available from Android Studio > Preferences > Plugins > Browse Repositories when you search for JRebel for Android. You can also refer to the Quick Start guide on how to get started.
What kind of features can I use during the 14-day trial?
All product features are available throughout the trial period.
How can I measure the impact of the incremental Java compiler?
Disable JRebel for Android’s incremental Java compiler to find out. Create the file
jrebel.propertiesin your project root. Add the following content to the file:
Does JRebel for Android work with all devices and emulators?
Yes, provided the device has Android 4.0.3 (API 15) or newer. JRebel for Android uses ADB. This means that any handheld device or emulator that works for normal development works with JRebel for Android. Android Auto, Android TV and Android Wearable lines are not supported at the moment (but they still might work!).
Which build systems does JRebel for Android support?
JRebel for Android supports the Gradle build system.
Which JVM languages does JRebel for Android support?
JRebel for Android works at the bytecode level. This means that all languages that produce bytecode compatible with ART, Dalvik, and are integrated to Gradle are supported. For example – Kotlin, Scala, Groovy, Java.
Does JRebel for Android support ART?
Yes. JRebel for Android works with both Dalvik and ART.
Does JRebel for Android support multidex?
Does JRebel for Android support native code (JNI linking)?
Yes. JRebel for Android can run applications that contain native code. However if you update native code you need to run the application again using the “Run with JRebel for Android” button.
Does JRebel for Android support multi-process applications?
No. JRebel for Android does not support applications with multi-process. The application will be installed, but undefined behavior is to be expected.
I updated Android Studio and the JRebel for Android plugin is missing, what should I do?
If you did not select to import your previous Android Studio version settings, your existing plugins will not be available in the new version. If you did opt to import the settings and JRebel for Android still does not show up, navigate to Preferences > Plugins > Browse repositories and search for ”JRebel for Android”. If the plugin is installed and missing, you should see a button labelled “Restart Android Studio” or “Install”.
What Gradle version should I use?
It’s recommended to use the latest available Gradle version in your project. Each Gradle version brings improvements to performance which also benefits JRebel for Android! JRebel for Android supports all versions starting from Gradle 2.2.1.
Does JRebel for Android support Kotlin?
Yes. JRebel for Android works with Kotlin and any other JVM compatible language that is integrated into Gradle. However, using Kotlin will likely have performance impacts due to using the Kotlin compiler. Wherever possible, use Kotlin 1.0.2 or newer and specify this in the
kotlin.incremental = true
What versions of Android Gradle plugin are supported?
JRebel for Android works with Android Gradle plugin 1.0 and newer.
How do I apply changes?
JRebel for Android comes bundled as an Android Studio plugin. This plugin adds 3 buttons to the main toolbar:
- Run with JRebel for Android – always builds a new APK and installs the application to the selected device.
- Debug with JRebel for Android – installs an APK to the device and attaches the debugger.
- Apply change with JRebel for Android – installs an APK to the device if it’s missing and updates the already running application.
Is there a shortcut to apply changes?
Yes. Use Command+F10 to apply changes (Ctrl+F10 on Windows).
What if I want to update the app icon or the application name?
For now, you need to use Run with JRebel for Android button. This will create a new APK and include the desired changes.
Why does the screen flicker when I apply changes?
To update the application, JRebel for Android always calls Activity.recreate to the topmost activity. This follows the same callbacks you would have with a configuration change — for example rotating from portrait to landscape.
Why does the application sometimes restart after applying changes?
If a class hierarchy change needs to be applied, JRebel for Android must perform an incremental install. In this case, the application will be restarted. For a list of complete changeset behaviors, check here.
My application crashes every time I press Apply changes?
Make sure your activity is properly handling
onSaveInstanceState. If you can’t detect a bug there, please report it to us using Android Studio > Tools > JRebel for Android > Send feedback.
I’m seeing Could not connect to the agent: Android Debug Bridge (ADB) is unresponsive. Please try reconnecting the device?
This error is shown when ADB connection is lost or becomes unstable. If you are using a physical device, make sure your USB connection is solid. Restarting ADB using command line is an option to try as well:
adb kill-serverfollowed by