Подтвердить что ты не робот

Мгновенный запуск занимает больше времени, чем стандартные сборки

Прошло некоторое время, когда 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'
4b9b3361

Ответ 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 и целевую версию как таковые