It’s been some time now that Instant Run is not working anymore, that is, it’s slower than standard builds.
There’s some material in the AOSP bug tracker, but I could not work this out. I’m sure some of you will help.
Without Instant Run
Builds take about 1.30 min.
With Instant Run
I run the app for the first time, then apply some minor change. For example, change int a = 1
to int a = 2
inside a method, or alter a string.
Then click run again. What happens:
- A seemingly full build takes place (calling
assembleDebug
on all my modules). Takes about 1.30 min. A second round goes on, calling just
app:assembleDebug
. It takes about another minute:16:27:10 Executing tasks: [:app:assembleDebug] 16:28:16 Gradle build finished in 1m 5s 264ms 16:28:22 Instant Run applied code changes and restarted the app.
During the first round, no output whatsoever to Event Log or Gradle Console. During second round, the Gradle Console outputs lots of stuff and ends with
BUILD SUCCESSFUL
Total time: 51.385 secs
PREDEX CACHE HITS: 0
PREDEX CACHE MISSES: 45
Stopped 0 compiler daemon(s).
What can I do?
I have these in my grade.properties
file:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.daemon=true
Nothing dex related in build.gradle
files. Not using Jack. Android Studio 2.2.3.
gradle.properties file
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.daemon=true
ANDROID_BUILD_MIN_SDK_VERSION=15
ANDROID_BUILD_TARGET_SDK_VERSION=25
ANDROID_BUILD_SDK_VERSION=25
ANDROID_BUILD_TOOLS_VERSION=25.0.2
Project level build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
}
}
Main module build.gradle
(I have other two ‘library’ modules also)
apply plugin: 'com.android.application'
Properties signProp = new Properties()
signProp.load(new FileInputStream(file(project.property("SIGN_PROPS"))))
Properties authProp = new Properties()
authProp.load(new FileInputStream(file(project.property("AUTH_KEYS_PROPS"))))
def PARSE_APPLICATION_ID = '"' + authProp['parseApplicationId'] + '"';
def PARSE_CLIENT_KEY = '"' + authProp['parseClientKey'] + '"'
def PARSE_SERVER_URL = '"' + authProp['parseServerURL'] + '"'
def GOOGLE_PLAY_API_KEY = '"' + authProp['googlePlayApiKey'] + '"'
android {
signingConfigs {
release_config {
keyAlias signProp['keyAlias']
keyPassword signProp['keyPassword']
storeFile file(signProp['storeFilePath'])
storePassword signProp['storePassword']
}
}
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
versionCode 21
versionName "1.3.3"
buildConfigField 'String', 'PARSE_APPLICATION_ID', PARSE_APPLICATION_ID
buildConfigField 'String', 'PARSE_CLIENT_KEY', PARSE_CLIENT_KEY
buildConfigField 'String', 'PARSE_SERVER_URL', PARSE_SERVER_URL
buildConfigField 'String', 'GOOGLE_PLAY_API_KEY', GOOGLE_PLAY_API_KEY
signingConfig signingConfigs.release_config
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
}
debug {
minifyEnabled false
shrinkResources false
}
}
productFlavors {
}
}
dependencies {
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:cardview-v7:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
compile 'com.android.support:preference-v14:24.2.1'
compile 'com.google.maps.android:android-maps-utils:0.4.3'
compile 'com.google.android.gms:play-services-maps:9.2.1'
compile 'com.google.android.gms:play-services-appinvite:9.2.1'
compile 'com.google.android.gms:play-services-location:9.2.1'
compile 'com.google.android.gms:play-services-appindexing:9.2.1'
compile ('com.facebook.android:facebook-android-sdk:4.16.1') {
exclude module: 'bolts-tasks'
}
compile 'com.parse.bolts:bolts-tasks:1.4.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.parse:parse-android:1.13.1'
compile ('com.parse:parseui-widget-android:0.0.1') {
exclude module: 'parse-android'
}
compile project(':dateTimePicker')
compile project(':commons')
}
apply plugin: 'com.google.gms.google-services'
Maintain bulit versions and target version as same