When I make some changes in source code, Android Studio (actually gradle) needs to rebuild the project. It’s obvious.
Why the second build takes almost the same amount of time like the first build, even if I haven’t made any changes in the project?
When I look into GradleConsole it waits on “assembleDubug” task. I think gradle should be aware there’re no changes and shouldn’t waste so much time on it.
Finally, I found the solution: turn on Offline work for gradle.
or using CLI:
./gradlew --offline assembleDebugOrWhatever
Does the gradle console say
:app:assemeble UP-TO-DATE ?
If you take a look at the run configuration, you might notice at the very bottom
Before Launch: Gradle-aware Make
This is just telling it to recompile(if necessary) before running, but that detection is delegated to Gradle. Gradle will only actually recompile if it detects that it needs to, but the
assemble task must still attempt to run to detect UP-TO-DATEness. So it says it’s running it, but its not actually doing anything. When I run it two times in a row, the first time it takes a while to do everything, BUT the second time it just runs through the task list pretty quickly (with a bunch of UP-TO-DATEs) and deploys to phone/emulator.
To avoid rebuild EACH TIME, i’m going to my module project settings -> Dependencies and up or down one of my library item -> Apply -> Ok -> Make regenerating R.java.
You could also try unchecking “Use external build” in compiler settings:
File -> Settings (Ctrl+Alt+S) -> Compiler -> Uncheck “Use external build”
This isn’t a problem per se. And it has nothing to do with
Android Studio since
Gradle is just an Android Plugin that helps you build your projects. You need to fully understand what
gradle does to know why Android Studio uses it whenever you run your apps. Take a look at this nice SO question on gradle and the android developer website‘s article on it. Finally, from my personal experience,when it comes to dealing with Android Studio and Eclipse for Android development, you need to be a little patient. Hope this helps in some way.