I keep hearing instant run discussed as if it's in a great shape, however my team and I regularly experience significant issues with the feature, and a degraded coding experience because of it.
Before instant run, our clean builds were ~1min 30sec, and after that we'd get builds that were ~25sec or the occasional 40sec. While instant run does indeed seem to decrease builds sometimes to 6-12 seconds, other times, it's caused us to get into crazy long builds that we've seen take as long as 13 minutes, largely offsetting any gains from the incremental compile.
It also seems that a majority of the time, small changes are still taking 40 seconds. Sometimes it's 6 seconds, but that's pretty rare.
It feels a lot like instant run has degraded our ability to work consistently and efficiently. Here are some of our app specific configurations:
Android Studio 2.1.1, Android Plugin 2.1
multiDexEnabled true
dexOptions {
preDexLibraries true
javaMaxHeapSize "4g"
maxProcessCount 4
incremental true
dexInProcess true
}
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx6g -XX:MaxPermSize=512m
Are we doing something wrong, or has anyone found a work around?
EDIT: Several devs seem to be encountering this. I'm tracking a bug here. Feel free to star it and add to the discussion.
We're getting much better performance out of instant run now. Here are the changes we made:
Application
to be reloaded. Instead we started using the cold swap feature. Cold swap is triggered by the "Rerun" button, which is 4 buttons to the right of the play / start button in Android Studio. It's the stop button with the arrow coming out the left hand side and going up. Cold swapping the code in instant run we found more reliable, and it also performs a full application restart, essentially acting like a normal build, except faster.Overall it's still not perfect. I still have to endure strange build issues, and do build cleans occasionally. Still feels like a beta.