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.
Builds take about 1.30 min.
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:
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).
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.
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
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()
}
}
(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'
http://tools.android.com/recent/androidstudio223isnowavailable
Update to the latest version of Android Studio and then increase the memory profile in (studio.vmoptions) based on your system memory
-Xms256m
-Xmx1280m
-XX:MaxPermSize=350m
Enable Instant Run
Limitations of Instant Run.
Deploying to multiple devices, Multidexing your app, Using third-party plugins, Pushing changes to multi-process apps, Launching your app in a Work profile.
If you use multidex support (multiDexEnabled true) for your app, minSdkVersion must be 21 or higher. Otherwise, android studio disables Instant Run.
Android plugin for gradle version must be 2.1.0 or higher
Enable Offline Work android studio to speed up:
Go to file >> settings or simply press ctrl + alt + s
file >> settings >> Gradle. please check Offline work under Global Gradle setting
Improve Gradle Performance
After opening android studio, open gradle.properties file from right side of android studio and add the following two lines.
org.gradle.jvmargs=-Xmx1536m
org.gradle.daemon=true
org.gradle.parallel=true
Configure Build Variants of debug in buildTypes
debug {
minifyEnabled false
applicationIdSuffix ".debug"
}
After changes, you should restart your Android Studio.
Note: Build time depend on your processor and RAM. I noticed in (i7-3610qm with 8gb ram) when you compile 4 android studio project at same time then slow respond on window. after build process finish pc works normal.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With