Створення та запуск програми через Gradle та Android Studio відбувається повільніше, ніж через Eclipse


461

У мене є багатопроектний проект (~ 10 модулів), будівництво якого займає приблизно 20-30 секунд кожного разу. Коли я натискаю Run у Android Studio, мені доводиться чекати кожного разу, щоб оновити додаток, що відбувається надзвичайно повільно.

Чи можливо автоматизувати процес побудови в Android Studio? Або у вас є поради, як зробити цей процес швидшим?

У програмі Eclipse, завдяки автоматичній побудові, виконання того ж проекту на емуляторі займає приблизно 3-5 секунд.

Це мій файл build.gradle (модуль програми):

buildscript {
    repositories {
        maven { url 'http://repo1.maven.org/maven2' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.4'
    }
}
apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':libraries:SharedLibs')
    compile project(':libraries:actionbarsherlock')
    compile project(':libraries:FacebookSDK')
    compile project(':libraries:GooglePlayServices')
    compile project(':libraries:HorizontalGridView')
    compile project(':libraries:ImageViewTouch')
    compile project(':libraries:SlidingMenu')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}

23
Зауважте, що наразі ні система побудови на базі Gradle, ні Android Studio наразі не є виробничими.
CommonsWare

11
Час, проведений тут, швидше за все, знаходиться у фазі DEXing. На жаль, здається, що андроїд-студія робить кожен раз чистий, викликаючи видалення раніше dex'd-файлів. Будемо сподіватися, що незабаром ми побачимо додаткове виправлення збірки.
Річард Дж. Росс III

3
Тим часом чи існує простий спосіб сказати про зміну задач Gradle за замовчуванням таким чином, що вони не завжди виконують чистоту?
sigmabeta

10
@CommonsУважно, виправдання зараз немає, ми знаходимося на версії 1.02, але це все ще є головним питанням. У студії Android під управлінням мого чотирьохядерного ноутбука 4 Гб використовується близько 3,75 ГБ оперативної пам’яті, що містить лише один екземпляр привітного світового проекту. Це також є дуже млявим. Для мене це вказує на серйозний і постійний недолік дизайну. Я сподіваюся, що справи скоро вирішаться.
Ендрю S

7
@AndrewS Мені шкода, що нам потрібно змінити нашу операційну систему просто для того, щоб градація працювала з розумною швидкістю порівняно з попередніми інструментами.
Річард Ле Месюр'є

Відповіді:


441

Обладнання

Вибачте, але модернізація станції розробки до SSD і тонни барана має, мабуть, більший вплив, ніж точки нижче, ніж разом.

Версії інструментів

Підвищення продуктивності збірки є головним пріоритетом для команд розробників, тому переконайтеся, що ви використовуєте останні версії Gradle та Android Gradle Plugin .

Файл конфігурації

Створіть файл, названий gradle.propertiesу будь-якому каталозі:

  • /home/<username>/.gradle/ (Linux)
  • /Users/<username>/.gradle/ (Мак)
  • C:\Users\<username>\.gradle (Windows)

Додайте:

# IDE (e.g. Android Studio) users:
# Settings specified in this file will override any Gradle settings
# configured through the IDE.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
# TODO: disable daemon on CI, since builds should be clean and reliable on servers
org.gradle.daemon=true

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# https://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e#.krd1mm27v
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true

# Enables new incubating mode that makes Gradle selective when configuring projects. 
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

# Set to true or false to enable or disable the build cache. 
# If this parameter is not set, the build cache is disabled by default.
# http://tools.android.com/tech-docs/build-cache
android.enableBuildCache=true

Властивості Gradle працюють локально, якщо ви розміщуєте їх у projectRoot\gradle.propertiesвсьому світі та якщо розміщуєте їх user_home\.gradle\gradle.properties. Властивості, застосовані, якщо ви виконуєте завдання gradle з консолі або безпосередньо з ідеї:

Налаштування IDE

Можна налаштувати інтеграцію Gradle-IntelliJ з графічного інтерфейсу налаштувань IDE. Увімкнення "роботи в автономному режимі" (перевірте відповідь на yava нижче) призведе до відключення реальних запитів мережі на кожен "файл синхронізації gradle".

Налаштування IDE

Рідний мультидекс

Один з найбільш повільних кроків збирання apk - це перетворення байт-коду Java в єдиний файл dex. Увімкнення нативної мультидекса (minSdk 21 лише для налагодження налагодження) допоможе інструменту зменшити кількість роботи (відповідь Акселя Вілгерта перевірте нижче).

Залежності

Віддайте перевагу @aarзалежностей від бібліотечних підпроектів.

Шукайте пакет aar в mavenCentral , jCenter або використовуйте jitpack.io для створення будь-якої бібліотеки з github. Якщо ви не редагуєте джерела бібліотеки залежностей, ви не повинні створювати її щоразу разом із джерелами свого проекту.

Антивірус

Розгляньте можливість виключення файлів проектів і кешу з антивірусного сканування. Це, очевидно, угода з охороною (не намагайтеся цього вдома!). Але якщо ви переходите між гілками дуже сильно, то антивірус буде переглядати файли, перш ніж дозволити процес Gradle використовувати його, що уповільнює час збирання (зокрема, проект синхронізації AndroidStudio з файлами gradle та завданнями індексації). Виміряйте час складання та обробляйте процесор із включеним антивірусом і без нього, щоб перевірити, чи це пов’язано.

Профілювання збірки

Gradle має вбудовану підтримку для профілювання проектів . Різні проекти використовують різну комбінацію плагінів та користувацьких сценаріїв. Використання --profileдопоможе знайти вузькі місця.


1
про @aar залежностей: використання, наприклад dependencies {compile 'com.android.support:support-v4:21.0.+'}, повільне рішення? не впевнений, що розумієш
younes0

1
Зображуючи, ви додали бібліотеку на зразок цієї: github.com/novak/numberpicker . Він має значення, надаючи рішення коду для проблеми, але автор не публікує його ніде, як maven або jCenter. Тепер ви або вносите цю бібліотеку як джерела у свій проект, і будуєте її кожного разу, коли основний проект будується, або збираєте його одноразово і здійснюєте лише @aar у своєму сховищі проектів. Тож це дійсно вибір джерела / бінарної залежності. Якщо ви не редагуєте джерело, вам слід поставити свою залежність як попередньо складений двійковий файл. Для звичайних бібліотек Java, тобто .jar, для андроїд-бібліотек, тобто .aar
Сергій Печенізький

1
Це налаштування проекту> gradle. Дивіться знімок екрана нижче: i.stack.imgur.com/wrwgo.png
Сергій Печенізький

2
Я налаштував усі оптимізації, як описано, проте в Android Studio для запуску програми потрібно 3–4 хвилини, тоді як у Eclipse це було близько 30 секунд. Лайно. Всього 12 проектів, один додаток для запуску! Android Dev став настільки громіздким зараз, і це вже більше року.
3c71

1
Я застосував усі оптимізації, і для збирання apk HelloWorld потрібно ще 20 секунд, порівняно з 2-3 секунди в Eclipse.
Pawel

148

Ви можете ігнорувати чеки оновлення оновлення gradle.

введіть тут опис зображення

Для Windows під управлінням Android Studio 1.5: Перейдіть на сторінку File -> Settings -> Build, Execution, Deployment -> Build tools -> Gradle -> Check Offline work (as shown in image)

вниз від ~ 30 + сек до ~ 3 сек


24
Це досить круто. Це швидше багато. Але що це ламає?
Джон Баллінгер

2
Найкраще рішення. Чи можу я знати побічні ефекти цього рішення
Кавін Варнан,

26
@JohnBallinger Офлайн-робота - використовуйте цей прапорець для роботи з Gradle в офлайн-режимі. У цьому випадку Gradle використовуватиме залежності від кешу. Gradle не намагатиметься отримати доступ до мережі для вирішення залежності. Якщо потрібних залежностей немає в кеші залежностей, виконання збірки буде невдалим. (Джерело: jetbrains.com/idea/help/gradle-2.html )
cprcrack

10
Чи за замовчуванням спочатку використовувати кешовані залежності, перш ніж перейти по мережі? Я не уявляю, як перевіряє оновлення залежностей кожен раз, коли gradleзапускається. Це химерно.
Ехтеш Чудхурі

1
@EhteshChoudhury це ДУЖЕ химерно. Все середовище розробників Gradle / Android Studio настільки slooooooow. Більшість людей думає, що це повільно через Java. Я працюю на Java-сервісі Java Dev на IDEA, і все працює дуже гладко.
степанець

34

Ми всюди шукали це і, нарешті, знайшли рішення, яке працює для нас. Увімкнення паралельних збірок (на OSX:) preferences -> compiler -> gradle -> "Compile independent modules in parallel"та включення "зробити проект автоматично" зменшило його з ~ 1 хв до ~ 20 сек. Завдяки / u / Covalence.

http://www.reddit.com/r/androiddev/comments/1k3nb3/gradle_and_android_studio_way_slower_to_build/


56
20 секунд все ще жахливо повільно.
Йоханнес Бродволл

6
Пам'ятайте, що це, мабуть, допомагає лише у випадку, коли у вас є кілька незалежних модулів / проектів. Я перевірив це на одному додатку модуля, і це не мало значення.
Сем

У мене досить великий проект, і він займає 2–3 хвилини на MacBook Pro 2012 Core i7, 8 ГБ оперативної пам’яті. Це нормально?
Sermilion

25

Нещодавно я придбав новий SSD і перейшов з Windows на Linux. Мої часи збірки зараз на порядок швидше і більше не дратують.

Хоча це не відповідає безпосередньо на ваше запитання, чому це повільніше, ніж затемнення, воно показує, що процес обмежений диском, і оновлення SSD може бути (дещо дорогим) рішенням. Я здогадуюсь, що тут знайдуться люди, які гуляють проблемою, і закінчуються, і вони можуть оцінити мій досвід.


11
У моєї команди розробники мають швидкі SSD-диски в швидких машинах з великою кількістю пам'яті. Для нетривіального додатка повторне розгортання після незначної зміни коду все ще займає приблизно 45 секунд, порівняно з майже миттєвим повторним розгортанням в Eclipse. Навіть запускаючи звичайний, не-Android JUnit надзвичайно повільно. "Оновлення" до Android Studio і Gradle поки що було значною мірою. : - /
spaaarky21

@Lionleaf наскільки швидше переходити з Windows на Linux?
younes0

@ younes0 я не знаю. Я перейшов на Linux в той же час, коли я перейшов на SSD. Я не кажу, що це має позитивний ефект, я просто змінив ці дві змінні для прискорення.
Андреас Льове Селвік

4
У моєму випадку перехід з Windows на Linux призвів до 40% швидшого нарощування Android ... так що це, безумовно, варто
kosiara - Bartosz Kosarzycki

Я другий, що сказав @Bartosz Kosarzycki. В кінцевому підсумку я працюю на Ubuntu vm з virtualbox на своїй машині розробки. ~ 54-секундна збірка на Windows, ~ 7сек для тієї ж збірки всередині віртуальної машини на тому ж апаратному забезпеченні. Божевільне прискорення, перейшовши на Linux.
Ерік Корнелсон

20

Прискорити збірку Gradle в Android Studio 3.2.1

Ви коли-небудь відчуваєте, що чекаєте завершення версій у Android Studio? Я також. І це дуже дратує. На щастя, є кілька способів, які можна використати для покращення цього. Android використовує Gradle для побудови. Остання версія 4.6 має величезне підвищення продуктивності порівняно з попередніми версіями (детальніше див. Примітки до випуску).

Крок 1: Оновлення версії Gradle Найпростіший спосіб досягти цього - перейти до: Відкрийте Налаштування модуля (ваш проект)> Структура проекту

введіть тут опис зображення

ОНОВЛЕННЯ

Перейдіть на версію Gradle: 4.6 та перейдіть на версію плагіна Android: 3.2.1

введіть тут опис зображення

Завантажте дистрибутив Gradle Release з https://services.gradle.org/distributions/gradle-4.6-all.zip та скопіюйте його у папку Gradle:

введіть тут опис зображення

Останній крок - додати свою розмову в Налаштуваннях> Gradle

введіть тут опис зображення

Не забудьте натиснути Застосувати, щоб зберегти зміни.

Крок 2: Увімкніть режим офлайн, демон Gradle та паралельне складання для автономного режиму проекту повідомляє Gradle ігнорувати перевірки оновлення до дати. Gradle щоразу запитує про залежність, а наявність цієї опції змушує просто використовувати те, що вже є на апараті для залежностей. Перейдіть до Gradle з програми «Студія Android» та натисніть на «Роботу офлайн».

введіть тут опис зображення

  1. Перейдіть до програми "Компілятор" із програми "Студія Android" та додайте "- офлайн" у поле командного рядка та паралельно натисніть "Компілювати незалежні модулі".

введіть тут опис зображення

Наступним кроком є ​​включення демона Gradle та паралельної побудови для вашого проекту. Паралельне складання призведе до того, що ваші проекти з декількома модулями (багатопроектні збірки в Gradle) будуватимуться паралельно, що повинно робити великі або модульні проекти швидшими.

введіть тут опис зображення

Ці параметри можна ввімкнути, змінивши файл з назвою gradle.properties в каталозі скриптів Gradle (тобто ~ / .gradle / gradle.properties). Деякі з цих параметрів (наприклад, паралельно модулі Complie) доступні в Android Studio, а також їх включено за замовчуванням, але якщо розмістити їх у файлі gradle.properties, це дозволить їм під час створення з терміналу, а також переконатися, що ваші колеги будуть використовувати ті самі налаштування. Але якщо ви працюєте над командою, іноді ви не можете зробити це.

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit org.gradle.parallel=true
# When set to true the Gradle daemon is used to run the build. For local developer builds this is our favorite property.
# The developer environment is optimized for speed and feedback so we nearly always run Gradle jobs with the daemon.
 org.gradle.daemon=true

Використання демона зробить ваш запуск збірки швидшим, оскільки не доведеться кожного разу запускати всю програму Gradle. Демон Gradle не включений за замовчуванням, але рекомендується завжди вмикати його на машинах розробників (але залишати його вимкненим для серверів безперервної інтеграції). Поширені запитання щодо цього режиму можна знайти тут https://docs.gradle.org/current/userguide/gradle_daemon.html . Налаштування паралельних побудов може бути небезпечним для деяких проектів. Вимога полягає в тому, що всі ваші модулі повинні бути роз'єднані, або ваша збірка може вийти з ладу (детальніше див. Http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects ).

Крок 3: Увімкніть параметри інкрементального налаштування та налаштування пам’яті. Ви можете прискорити складання, включивши поступовий дексінг. У файлі збірки модуля:

введіть тут опис зображення

Додайте цю опцію до свого блоку Android:

dexOptions {
    incremental true
}

У цьому блоці dexOptions ви можете також вказати розмір купи для процесу dex, наприклад:

dexOptions {
    incremental true
    javaMaxHeapSize "12g"
}

Де "12g" - 12 Гб пам'яті. Додаткову інформацію про це можна знайти тут google.github.io/android-gradle-dsl/current/ Ви також можете налаштувати параметри Gradle у файлі налаштувань, наприклад збільшити максимальний розмір купи у випадку, якщо у вас є великий проект:

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Дивіться весь список параметрів тут: https://docs.gradle.org/current/userguide/userguide_single.html#sec:gradle_configuration_properties для детальної інформації.

Крок 4: Вимкнення антивірусу Розгляньте можливість виключення файлів проектів та кешу з антивірусного сканування. Це, очевидно, компроміс із забезпеченням. Але якщо ви перемикаєтесь між гілками дуже багато, то антивірус буде переглядати файли, перш ніж дозволити процес Gradle використовувати його, що уповільнює час збирання (зокрема, проект синхронізації Android Studio з файлами gradle та завданнями індексації). Виміряйте час складання та обробляйте процесор із включеним антивірусом і без нього, щоб перевірити, чи це пов’язано. Я сподіваюся, що це допомагає. Залиште коментар, якщо у вас є питання або якісь інші поради щодо підвищення продуктивності збірки.

корисне посилання


19

Якщо ви користуєтеся послугами google play, залежно від потрібних лише бібліотек, а не від цілого блоку, можна зробити все швидше.

Якщо вам потрібна лише карта, використовуйте:

compile 'com.google.android.gms:play-services-maps:6.5.+'

замість:

compile 'com.google.android.gms:play-services:6.5.+'

Останній приносить в клас класу 20k методів (див. Блог) , що може підбити загальну кількість методів понад 64k.

Це змусить використовувати proguard або multidex навіть для налагодження версій . Для одного з моїх проектів у мене були такі строки збирання

  • збірка мультидекса (з підтримкою бібліотеки) ~ 40 сек
  • Proguard build ~ 20 сек
  • побудувати, коли межа методу <64k ~ 5сек

Якщо розвиватись на sdk 21+, можна було б оптимізувати багатозмінні збірки, як зазначено в документації на android

android {
    productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 14
        }
    }
    ...
}

2
Замість компіляції всіх play-serviceбібліотек, я склав тільки mapsі locations й відключений multidex. Я відчуваю велику різницю. Дякую +1
Самі Елтамаві

16

Відповідь прийнята для старих версій андроїд-студії, і більшість з них працює дотепер. Оновлення андроїд-студії зробило це трохи швидше. Не намагайтеся вказувати розмір купи, оскільки вона автоматично збільшуватиметься із збільшенням Xms та Xmx. Ось деякі зміни з VMoptions

  1. У папці bin є файл studio.vmoptions для встановлення конфігурації середовища. У моєму випадку це studio64.vmoptions Додайте наступні рядки, якщо вони вже не додані, і збережіть файл. У моєму випадку я 8 Гб оперативної пам’яті.

    -Xms4096m
    -Xmx4096m
    -XX:MaxPermSize=2048m
    -XX:+CMSClassUnloadingEnabled
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError
    -Dfile.encoding=utf-8`
  2. Запустіть андроїд-студію. Перейдіть у меню Файл-> Установки-> Збірка, виконання, розгортання-> Компілятор

    • Паралельно перевіряйте компіляцію незалежних модулів
    • У параметах командного рядка напишіть: - Offline
    • Поставте прапорець Зробити проект автоматично
    • Перевірте налаштування на вимогу

У випадку використання mac, спочатку я не міг знайти зміни. У будь-якому випадку, ось приємна стаття про те, як ми можемо змінити зміни в MAC OSX . Цитуючи цю статтю тут.

Відкрийте свій термінал і введіть цю команду, щоб відкрити vmoptions в MAC OSX:

open -e /Applications/Android\ Studio.app/Contents/bin/studio.vmoptions

1
станом на AS 2.3.2 ви можете змінити параметри vim за допомогою довідки-> Редагувати власні параметри Vm
Сем

15

Просто створіть файл з назвою gradle.properties в наступній директорії:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

Додайте цей файл у файл:

org.gradle.daemon=true

Для мене швидкість зараз дорівнює Eclipse.

Джерело: https://www.timroes.de/2013/09/12/speed-up-gradle/


Я не в змозі побачити папку .gradle в mac. Як її відкрити?
Дхармік

@Dharmik: Можливо, ви встановили Android Studio під іншим іменем користувача. В іншому випадку, це неправильно встановлено.
Yster

1
Ні, це інше питання .. папка «.gradle» система була захована .. Так що я йду в Go => Перехід до папки і чим я знайшов .gradle папки .. Спасибі за швидку відповідь ..
Dharmik

14

Ви можете зробити процес швидше, якщо будете використовувати gradle з командного рядка. Існує велика кількість оптимізацій для розробників IDE. Але це лише рання версія.

Для отримання додаткової інформації читайте цю дискусію на g + з деякими розробниками.


3
Це здається правдою навіть зараз у 2016 році
Лео підтримує Моніку Селліо

11

Якщо хтось працює над проектом, який синхронізується за допомогою Subversion, і це все ще відбувається, я думаю, це може уповільнити процес робочого процесу в Android Studio. Наприклад, якщо вона працює дуже повільно: прокрутка по класу, xml тощо, поки моя програма все ще працює на моєму пристрої.

  • Перейдіть до "Контроль версій" у налаштуваннях та встановіть з "Підрив" на "Нічого".введіть тут опис зображення

1
Ви заощаджуєте мій день: 2/4 хв -> 15 сек (я відключив Черепаху HG для проекту).
кафтанати

3
Якщо хтось все ще використовує Subversion, він повинен перейти на Git або Mercurial
Лео підтримує Моніку Cellio

8

Оновлення після Android Studio 2.3

Усі відповіді чудові, і я закликаю використовувати ці методи для цього, щоб підвищити швидкість збирання.

Після виходу Android 2.2 вересня 2016 року Android випустила експериментальну функцію кешу збірки для прискорення gradleпродуктивності збірки, яка зараз є офіційною в Android Studio 2.3 Canary. (Офіційна примітка до випуску)

Він вводить нову функцію кешу збірки, яка включена за замовчуванням, може пришвидшити час збирання (включаючи повні збірки, інкрементальні збірки та миттєвий запуск) шляхом зберігання та повторного використання файлів / каталогів, створених у попередніх збірках того ж або іншого Android проект.

Як користуватись:

Додайте у свій gradle.propertiesфайл наступний рядок

android.enableBuildCache = true
# Set to true or false to enable or disable the build cache. If this parameter is not set, the build cache is enable by default.

Очистіть кеш:

  • Існує нове завдання Gradle, яке закликає cleanBuildCacheвас легше очистити кеш збірки. Ви можете використовувати його, ввівши в терміналі наступне:

    ./gradlew cleanBuildCache

  • АБО Ви можете очистити кеш-пам'ять для Android studio 2.2, видаливши всі файли, що зберігаються в місці

    C:\Users\<username>\.android\build-cache


7

Після зміни цих параметрів тривалість моєї компіляції 10 хвилин змінилася на ~ 10 сек.

Крок 1:

Налаштування (ctrl + Alt + S) ->

Збірка, виконання, розгортання ->

Компілятор ->

введіть " --offline" у поле Параметри командного рядка.

Крок 2:

поставте прапорець "Складати паралельно незалежні модулі".

& натисніть Застосувати -> ОК

введіть тут опис зображення

Довідка - https://www.sundoginteractive.com/blog/speed-up-gradle-in-android-studio

Недолік:

Ви не зможете знищити останні версії залежностей, визначених у вашому файлі build.gradle. Вона працює швидше, оскільки використовує кешований знімок імпортованих бібліотек.

Важлива примітка . Коли ви розгортаєте програму, видаліть ці налаштування та складіть з останніми версіями залежностей.


6

Вирішено шахту с

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Offline work

Будівництво Gradle пішло від 8 хвилин до 3 секунд.


4

Ось що допомогло цьому початківцю програмісту Android (колишній професійний програміст років тому) у прискоренні Android Studio 2.2. Я знаю, що це переоцінка, але, просто підводячи підсумки в одному місці.

Початкові збірки все ще можуть бути жорстоко повільними, але перезавантаження запущених програм зараз зазвичай дуже терпимі. Я використовую неоптимальний ПК: процесор AMD Quad-Core A8-7410, 8 Мб оперативної пам’яті, не-SSD HD, Win 10. (І це моя перша публікація Stack Overflow ....;)

НАСТРОЙКИ -> ГРАД:

так для "Робота в режимі офлайн" (це, мабуть, найбільш імпортне налаштування).

В НАСТРОЙКІ -> КОМПЛІКАТОР:

так для "Паралельно компілюйте незалежні модулі" (не впевнений, чи справді це допомагає використовувати багатоядерні процесори).

В ГРАДОВИХ СКРИПТАХ , "build.gradle (Модуль: додаток)":

defaultConfig {
    ...
   // keep min high so that restarted apps can be hotswapped...obviously, this is hugely faster.
   minSdkVersion 14
   ...
    // enabling multidex support...does make big difference for me.
    multiDexEnabled true

ТАКОЖ У СКРИПАХ ГРАНІ , "gradle.properties (властивості проекту)":

org.gradle.jvmargs = -Xmx3048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

org.gradle.parallel = справжній org.gradle.daemon = правда

Крім того , для мене добре працює тестування на фізичному пристрої замість емулятора; невеликий планшет, який встає - це зручно.


4

Ще одна порада щодо імпорту продуктивності:

Android Studio 3.0 включає новий компілятор DEX під назвою D8.

"Компілятор dex здебільшого працює під капотом у вашій щоденній розробці додатків, але це безпосередньо впливає на час створення програми, розмір файлу .dex та продуктивність роботи."

"І при порівнянні нового компілятора D8 з поточним компілятором DX, D8 збирається швидше і виводить менші .dex файли, маючи при цьому однакову або кращу продуктивність роботи програми."

D8 необов’язковий - використовуйте його, який ми маємо поставити до gradle.properties проекту

android.enableD8=true

Більше інформації: https://android-developers.googleblog.com/2017/08/next-generation-dex-compiler-now-in.html

PS. Це покращує час мого виготовлення приблизно на 30%.


1

Ця настройка для мене працює дуже швидко (приблизно 2 секунди збірки)

build.gradle

android {

    dexOptions {
        incremental true
        preDexLibraries = false
        jumboMode = false
        maxProcessCount 4
        javaMaxHeapSize "6g"
    }
}

gradle.properties

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx8192M

мій ПК:

  • Процесор Intel (R) Pentium (R) CPU G2030 при 3,00 ГГц, 3000 МГц, 2 процесорних принципи, 2 процесори lógicos
  • x64
  • Microsoft Windows 7 Professional
  • (ОЗУ) 16,0 ГБ

Файли проектів
- Усі розміщені в локальному HD


1

Будь ласка, виконайте наступні кроки.

  1. Увімкнути режим офлайн: Перевірте екран друку нижче.

    https://i.stack.imgur.com/RF9uG.png

  2. Увімкнути миттєвий запуск: Будь ласка, перевірте під екраном друку.

    https://i.stack.imgur.com/mvHKJ.png

    Якщо ви хочете дізнатися більше про миттєвий запуск, відвідайте сайт розробників Android.


1

Ви можете спробувати відкрити меню gradle в правій частині студії та зібрати лише змінені модулі та запустити команду install. При натисканні запуску він збирає все, незалежно від змін, які ви могли внести до коду, який він збирає


0

Я далеко не фахівець з Gradle, але в моєму оточенні був такий рядок у .gradle / init.gradle

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenRepo name: 'libs-repo', url: 'http://guest-vm/artifactory/repo'
        }
    }
}

І все-таки я не маю поняття, чому ця лінія там була, але я намагаюся змінити

gradle.projectsLoaded {
    rootProject.allprojects {
        repositories {
            mavenCentral()
        }
    }
} 

і тепер я, нарешті, можу працювати, не посягаючи на програму Android Studio & Gradle buildind.


артефактор у вашому випадку, ймовірно, використовувався як бібліотечний кеш. Ви звертаєтесь до артефакторного сервера, який виглядає, чи є у нього бібліотека. Якщо так, то поверніть його вам інакше, він піде і витягне його з головного центру, а потім повернеться до вас.
Фабіо Марколіні

0

У нашому конкретному випадку проблема полягала в тому, що плагін retrolambda , який змушував усі проекти та підпроекти перекомпілювати кожного разу, коли ми намагалися запустити нашу програму, навіть якщо жоден код не був змінений у наших основних модулях.

Видалення ретроламби зафіксувало це за нами. Сподіваюся, це комусь допоможе.


0

Спробуйте це спочатку. Це мій особистий досвід.

У мене була така ж проблема. Що я зробив, це просто назавжди вимкнути антивірус («Моя була Avast Security 2015»). Щойно після відключення антивірусу справа пішла добре. градле успішно закінчилося. Відтепер за лічені секунди градус закінчується (лише 5-10 секунд).


0

Привіт, я знаю, що це дуже пізня відповідь, але, можливо, допомогти комусь
у моєму випадку, який я використовував

compile 'com.android.support:support-v4:23.1.1'

в моїй програмі залежність від Gradle,
але в одній з моїх бібліотек це було

 compile 'com.android.support:support-v4:23.0.1'

після зміни всіх на останню версію мою проблему вирішено.


0

Виконуючи дії, це зробить це в 10 разів швидше і скоротить час збірки на 90%

Спершу створіть файл з назвою gradle.properties у наступному каталозі:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

Додайте цей файл у файл:

org.gradle.daemon=true
org.gradle.parallel=true

І перевірте ці параметри в Android Studio

введіть тут опис зображення



0

Тривіальне зміна (в resoruce XML) ще взяв 10 хвилин . Як говорить @rivare у своїй відповіді, складання командного рядка відбувається швидшим зчепленням (зайняв це до 15 секунд ).
Ось кілька кроків, щоб принаймні зробити тривіальну швидку збірку з командного рядка для Windows.

  1. Перейдіть до кореня ваших проектів (де gradlew.bat):

    cd c: \ android \ MaskActivity

  2. виконати збірку :

    gradlew assembleDebug

  3. видаліть apk безпосередньо з телефону (перетягніть його, щоб видалити).

  4. Коли збірка закінчена, вбийте процес BIG java за допомогою диспетчера завдань Windows.

АБО якщо на комп'ютері Windows у вас є інструменти unix:

ps

Показано "pid":

kill -9 <pid>
  1. Тепер встановіть apk:

    adb -d встановити C: \ Android \ MaskActivity \ app \ build \ outputs \ apk \ app-debug.apk



0

Запустити програму Android на комп'ютері з низькою конфігурацією.

  1. Закрийте нецензурні веб-вкладки у веб-переглядачі
  2. Для користувачів антивірусу виключайте папку збірки, яка автоматично генерується
  3. Студія Android має 1,2 Гбіт за замовчуванням, купа може зменшитися до 512 Мб Довідка> Редагувати власні параметри VM studio.vmoptions -Xmx512 м

  4. Для Gradle - один з основних компонентів Android-студії Mkae, впевнений, що зараз 3.0beta - найновіший

Нижче підказки можуть вплинути на якість коду, тому будь ласка, використовуйте з обережністю:

  1. Студія містить безпечний режим живлення, якщо увімкнено, вона закриє фонові операції, які ворсуються, доповнюють код тощо.

  2. Ви можете запустити вручну відмітку в разі необхідності ./gradlew lint

  3. Більшість користувачів використовують емулятори Android в середньому, вони споживають 2 Гб оперативної пам’яті, тому, якщо можливо, використовувати фактичний пристрій Android, це зменшить завантаження ресурсів на вашому комп’ютері. Крім того, ви можете зменшити оперативну пам'ять емулятора, і це автоматично зменшить споживання віртуальної пам'яті на вашому комп’ютері. ви можете знайти це в налаштуваннях віртуального пристрою та налаштуваннях попереднього доступу.

  4. Автономний режим Gradle - це можливість обмеженою пропускною здатністю користувачів відключити завантаження залежностей від збірки. Це зменшить фонову операцію, що допоможе збільшити продуктивність студії Android.

  5. Android студія пропонує оптимізацію для збирання декількох модулів паралельно. На машинах з низькою оперативною пам'яттю ця функція, ймовірно, негативно вплине на продуктивність. Ви можете відключити його в діалоговому вікні налаштування компілятора.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.