Мгновенный запуск занимает больше времени, чем стандартные сборки
Прошло некоторое время, когда Instant Run больше не работает, то есть медленнее, чем стандартные сборки.
Вот некоторые материалы в трекерах AOSP, но я не мог это решить. Я уверен, что некоторые из вас помогут.
Без мгновенного запуска
Время сборки составляет около 1,30 мин.
С Instant Run
Я запускаю приложение в первый раз, а затем применяю некоторые незначительные изменения. Например, измените int a = 1
на int a = 2
внутри метода или измените строку.
Затем снова запустите прогон. Что происходит:
- По-видимому, полная сборка выполняется (вызов
assembleDebug
для всех моих модулей). Занимает около 1,30 мин.
-
Второй раунд продолжается, называя только app:assembleDebug
. Это займет еще одну минуту:
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.
В течение первого раунда не выводится никаких данных в журнал событий или Gradle Консоль. Во время второго раунда консоль Gradle выводит множество материалов и заканчивается на
BUILD SUCCESSFUL
Total time: 51.385 secs
PREDEX CACHE HITS: 0
PREDEX CACHE MISSES: 45
Stopped 0 compiler daemon(s).
Что мне делать?
У меня есть это в моем файле grade.properties
:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.daemon=true
Ничего не связано с dex в файлах build.gradle
. Не использовать Джек. 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
Уровень проекта 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()
}
}
Основной модуль build.gradle
(у меня есть и другие два модуля библиотеки)
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'
Ответы
Ответ 1
http://tools.android.com/recent/androidstudio223isnowavailable
Обновите последнюю версию Android Studio, а затем увеличьте профиль памяти в (studio.vmoptions) на основе вашей системной памяти
-Xms256m
-Xmx1280m
-XX:MaxPermSize=350m
Ответ 2
Если вы пользуетесь сервисами Google Play, убедитесь, что вы не используете это в своей конструкции Gradle build script:
compile 'com.google.android.gms:play-services:8.3.0'
Используйте только те API Google, которые действительно используют ваше приложение. Если вы используете Google Карты, вы должны использовать это:
com.google.android.gms:play-services-maps:8.3.0
Когда я это сделал, время компиляции прошло от 2 минут до 25 секунд. Список списка Google, который вы можете выборочно компилировать, см.:
https://developers.google.com/android/guides/setup
Ответ 3
Включить мгновенный запуск
- Откройте диалоговое окно "Настройки" или "Настройки".
- Перейдите к сборке, выполнению, развертыванию > Instant Run.
- установите флажок Включить мгновенный запуск.
Ограничения Instant Run.
Развертывание на нескольких устройствах,
Мультидексирование вашего приложения,
Используя сторонние плагины,
Нажатие изменений в многопроцессорных приложениях,
Запуск приложения в профиле работы.
Если вы используете поддержку multidex (multiDexEnabled true) для вашего приложения, minSdkVersion должен быть 21 или выше. В противном случае студия Android отключит Instant Run.
Плагин Android для версии gradle должен быть 2.1.0 или выше
Включить автономную рабочую студию Android для ускорения:
Перейдите в настройки файла → или просто нажмите ctrl + alt + s
файл → настройки → Gradle. проверьте автономную работу в разделе Глобальная настройка gradle
Улучшить gradle Производительность
После открытия студии Android откройте файл gradle.properties с правой стороны студии android и добавьте следующие две строки.
org.gradle.jvmargs=-Xmx1536m
org.gradle.daemon=true
org.gradle.parallel=true
Конфигурировать варианты сборки отладки в buildTypes
debug {
minifyEnabled false
applicationIdSuffix ".debug"
}
После изменений вы должны перезапустить Android Studio.
Примечание. Время сборки зависит от вашего процессора и оперативной памяти. Я заметил в (i7-3610qm с 8gb ram), когда вы компилируете 4 проекта студии Android в то же время, а затем медленно реагируете на окно. после завершения процесса сборки pc работает нормально.
Ответ 4
Поддерживать версии bulit и целевую версию как таковые