Как ускорить работу андроид студио
Ускоряем Gradle Build в Android Studio: 9 способов увеличить скорость сборки
В этой статье мы рассмотрим систему сборки Android проектов Gradle. Также узнаем почему она такая медленная и рассмотрим 9 способов ускорить сборку Gradle проекта в Android Studio.
Что такое Gradle?
Gradle — это система сборки проектов. Она является следующим шагом в эволюции инструментов сборки на основе виртуальной Java машины (JVM). Gradle вобрал в себя лучшие идеи существующих инструментов (Ant и Maven), а также добавил больше гибкости и свободы в конфигурации сборки.
Кроме преимуществ новый подход несет и новые проблемы: даже самый простой Gradle вызов происходит довольно медленно. На ноутбуке среднего класса запуск простой задачи с выводом списка доступных задач проекта занимает не меньше 10 секунд. Официальная IDE для разработки Android приложений — Android Studio и в ней используется Gradle.
Android проекты становятся все более сложными, набирает популярность модульный подход разработки, поэтому производительность в новых реалиях имеет решающее значение. Увеличение скорости сборки проекта всего на несколько секунд дает хороший прирост в производительности.
Как увеличить скорость сборки проекта
Ниже я собрал методы, которые использую при сборке Gradle проекта:
1. Убедитесь, что вы всегда используете последнюю версию Gradle.
Как правило, с каждым новым обновлением существует значительное улучшение производительности. Если вовремя ставить новые версии и обновления, которые Android Studio предлагает сразу после загрузки, то проблем с устаревшей версией Gradle быть не должно.
2. Постарайтесь свести к минимуму использование модулей
Иногда приходится форкнуть какую-то библиотеку, чтобы кое-что подправить или изменить под свои нужды. Избегайте таких ситуаций, так как сборка модуля занимает в
4 раза больше времени, чем любая jar или aar зависимость. Это происходит потому, что модуль каждый раз должен быть перестроен с нуля.
3. Включите автономную работу Gradle
Поставить галочку возле пункта автономной работы можно по пути: Preferences => Build, Execution, Deployment => Build Tools => Gradle . Это не позволит Gradle получить доступ к сети во время сборки и заставит его работать с зависимостями проекта в своем кэше.
Обратите внимание, что эта функция корректно работает только тогда, когда все зависимости уже успешно загружены и сохранены в кэше. Если вам нужно изменить или добавить новую зависимость в файлике build.gradle , то придется отключить опцию автономной работы — иначе «сборка завалится».
4. Используйте Gradle Daemon
Откройте файл gradle.properties в корне вашего проекта и добавьте следующую строчку кода:
Это позволяет сэкономить время, нужное для старта Gradle, так как он становится фоновым процессом. Следует отметить, что после добавление этой опции Gradle будет потреблять еще больше оперативной памяти при сборке проекта.
5. Используйте распараллеливание процесса сборки
Эта строчка позволяет выполнять компиляцию нескольких модулей одновременно. Обратите внимание, что это даст прирост производительности только в случае, если у вас сложный проект со множеством модулей.
6. Оптимизируйте конфигурацию проекта перед сборкой
Добавьте опцию org.gradle.configureondemand=true и Gradle сможет проверять изменения на уровне проекта и повторно использовать конфигурацию.
Gradle настраивает каждый проект перед выполнением задач независимо от того, действительно ли нужна она для конкретной сборки. Режим «Конфигурация по требованию» изменяет стандартное поведение. Как и в параллельном режиме, эта опция будет иметь наибольший эффект в проектах с множеством модулей.
7. Настройте параметры компиляции проекта
Замените стандартные настройки использования памяти на следующие:
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Это позволит Java-компилятору использовать до 2Гб (параметр -Xmx2048m) доступной оперативной памяти. Разумеется, делать это можно только в случае, если у вас есть объем доступной памяти больше, чем 2 Гб.
8. Избегайте динамических зависимостей
Пример: compile ‘com.android.support:design:+‘
Вот этот плюсик (+) в конце говорит нам о том, что используется динамическая зависимость.
Динамические зависимости замедляют сборку, так как поиск последней версии происходит при каждом билде. Для повышения эффективности нам необходимо четко зафиксировать версию.
9. Используйте только нужные зависимости
Всегда добавляйте в проект максимально точно определенную зависимость. Например, нам в проекте нужны только карты от Google. Вместо того, чтобы писать так:
compile ‘com.google.android.gms:play-services:10.0.1′
следует всегда писать так:
compile ‘com.google.android.gms:play-services-maps:10.0.1′ .
Надеюсь, эти способы оптимизации процесса сборки сэкономят вам парочку часов разработки 🙂
А какие способы ускорить Gradle используете вы в своих проектах?
Подписывайтесь на новые статьи по разработке под Android и программированию на Java!
Как ускорить работу андроид студио
Android Studio — IDE для разработки приложений для Андроид от Google на основе IntelliJ IDEA.
Установка:
Страница загрузок на официальном сайте.
Windows:
Необходимо установить JDK и прописать системную переменную JAVA_HOME
Чтобы использовать Android Studio с эмулятором на Windows XP SP3 необходимо скачать и установить старую версию Intel Hardware Accelerated Execution Manager (extra_intel_haxm-windows_r02.zip)extra_intel_haxm-windows_r02.zip ( 1,66 МБ )
OS X:
Установка Andoid Studio на OS X намного проще — необходимо проинсталировать JDK, а затем Android Studio.
Не запускается эмулятор
Запускается эмулятор, но появляется ошибка «pixel launcher isn’t responding»
При запуске эмулятора лаунчер сообщает: Pixel launcher isn’t responding. Ни какой реакции на нажатия.
Создание быстрого x86 эмулятора Android (AVD) на примере Android 5.0.1 (API 21)
Изменение места хранения AVD. Инструкция.
Проверено на Ubuntu 16.04, Android Studio 3.0, все компоненты обновлены до последней версии (на 19.11.2017)
- Если подчеркивает красным код, где используются ресурсы: R
- После внезапного выключения компьютера, после перезапуска может быть во всех проектах весь код красным
- Если Android Studio выдает приблизительно такую ошибку: Error:Execution failed for task ‘:app:dexDebug’
- В сообщении об ошибке упоминается heap — виртуальная память
- Android Studio пришет примерно такую ошибку: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to «83648b99316049d63656d7276cb19cc7e95d70a5»
- Иногда при подключении сторонних библиотек могут дублироваться некоторые файлы (обычно связанные с лицензированием). В сообщении будет что-то содержащее слова: duplicate files
- Если при запуске эмулятора сообщение Cannot set up guest memory ‘pc.ram’: Invalid argument — проверьте в настройках эмулятора объем памяти, например установите 512 Мб.
- Также быстро работает Android x86 в VirtualBox (Есть маркет в android-x86-4.2-20130228.iso)
- Используйте в названиях файлов и каталогов только символы латинского алфавита.
- Путь к файлу не должен превышать 256 символов.
- Не используйте заглавные буквы — «Error:Execution failed for task ‘:app:mergeDebugResources’. Unsupported node ‘item’ in file «powertoolappsrcmainresmenumenu.xml» — была из-за заглавной буквы в «Menu» «
Учебники по Android Studio:
- Небольшой мануал на предмет подключения в Android Studio существующего репозитория из BitBucket
Renamed Properties in BuildTypes
runProguard => minifyEnabled
zipAlign => zipAlignEnabled
jniDebugBuild => jniDebuggable
renderscriptDebug => renderscriptDebuggable
Renamed Properties in ProductFlavors
flavorGroups => flavorDimensions
packageName => applicationId
testPackageName => testApplicationId
renderscriptSupportMode => renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode => renderscriptNdkModeEnabled
Т.е. например в build.gradle вместо runProguard false необходимо написать minifyEnabled true
Просьба: если вы автор последнего сообщения — просто редактируйте его, а не добавляйте новое.
Добавляем систему контроля версий Mercurial
Разработчики используют систему Mercurial для администрирования исходного кода. У нее два основных назначения:
- Она хранит все предыдущие версии каждого файла
- Она может объединить разные версии вашего кода, то есть сотрудники могут независимо работать над кодом и затем объединять свои изменения
О инсталляции и работе с Mercurial хорошо написано здесь:
- Hg Init: Часть 2. Основы Mercurial
- Hg Init: Часть 3. Привыкаем работать в команде
Создам информационную тему по Android Studio.
Android Studio — IDE для разработки приложений для Андроид от Google на основе IntelliJ IDEA.
Во время демонстрации Android Studio на Google IO пытался сразу найти и скачать, но видимо выложили в доступ позже.
Ошибка Abnormal build process termination после обновления до 0.2.1. — не обновляйте 0.2.0 до 0.2.1
Ошибки:
1. «You are using an old, unsupported version of
Gradle. Please use version 1.Х or greater.
2. Project is using an old version of the Android
Gradle plug-in. The minimum supported
version is 0.Х.X.
Решение О Android Studio
Ошибка Gradle project sync failed error — Решение
В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Сообщение отредактировал derak1129 — 26.09.20, 17:13
Русские Блоги
Как увеличить скорость работы Android Studio
Теперь Android Studio была построена намного быстрее, чем раньше, но когда проект большой, вам все же нужно провести некоторую оптимизацию.Прежде чем оптимизировать, вам нужно проанализировать время, необходимое Gradle для выполнения каждого этапа жизненного цикла сборки и каждой задачи сборки.
Время построения анализа
1. Очистка сборки эквивалентна инициализации, что обеспечивает возможность анализа всего процесса сборки проекта.
2. Используйте следующую команду для выполнения сборки и создания трудоемкого отчета о процессе сборки.
–Профиль: указывает, что анализ включен
–Offline: запретить Gradle обновлять онлайн-зависимости
3. После завершения выполнения просмотрите отчет об анализе в каталоге проекта / build / reports / profile /.
4. Стиль отчета следующий:
резюме: указывает на каждый этап
Выполнение задачи: означает сборку
Оптимизация сборки
Держите инструмент в актуальном состоянии
Инструменты Android получают оптимизацию сборки и новые функции практически в каждом обновлении.
Настройте productFlavors для создания разных версий сборки
Избегайте компиляции ненужных ресурсов
Избегайте компиляции и упаковки ресурсов, которые вы не тестировали (таких как локализация других языков и ресурсы плотности экрана). Для этого вы можете указать языковой ресурс и плотность экрана только для варианта «разработка», как показано в следующем примере:
Закрыть Crashlytics
Если вам не нужно запускать отчет Crashlytics, выполните следующие действия, чтобы отключить плагин для ускорения отладочной сборки:
Используйте статические значения конфигурации сборки в сочетании с отладочными сборками
Файл манифеста всегда настроен на статические значения, потому что если значения в файле манифеста или ресурсах приложения необходимо обновлять при каждой сборке, Instant Run не сможет выполнять обмен кодами — он должен создавать и устанавливать новые APK.
Использовать версию статической зависимости
При объявлении зависимостей в файле build.gradle следует избегать использования номера версии со знаком плюс в конце, такого как «com.android.tools.build:gradle:2.+». Использование динамических номеров версий может привести к неожиданным обновлениям версий и затруднить разрешение различий в версиях, а также замедлить сборку из-за проверки Gradle на наличие обновлений. Вместо этого вы должны использовать статические / жестко закодированные номера версий.
Включить автономный режим
Если ваше сетевое соединение медленное, время сборки может увеличиться, когда Gradle попытается разрешить зависимости, используя сетевые ресурсы. Вы можете указать Gradle использовать только те артефакты, которые он кэшировал локально, чтобы избежать использования сетевых ресурсов.
Настройте dexOptions и включите предварительную индексацию библиотеки
- preDexLibraries: Укажите, нужно ли предварительно связывать зависимости библиотек, чтобы ускорить добавочную скорость сборки. Поскольку эта функция может замедлить вашу чистую сборку, вам может потребоваться отключить эту функцию для серверов непрерывной интеграции.
- maxProcessCount: задайте максимальное количество потоков, используемых при запуске dex-in-process. Значение по умолчанию 4.
- javaMaxHeapSize: установить максимальный размер кучи DEX-компилятора. Однако вам следует увеличить размер кучи Gradle (когда включена функция dex-in-process, она будет использоваться совместно с компилятором DEX) вместо установки этого свойства.
- Например
Увеличьте размер кучи Gradle и включите dex-in-process
Установите размер кучи Gradle равным 2048 МБ в файле gradle.properties:
Конвертировать изображения в WebP
Отключить обработку PNG
Если вы не можете (или не хотите) преобразовывать изображения PNG в WebP, вы все равно можете ускорить сборку, отключив автоматическое сжатие изображений при каждой сборке приложения. Чтобы отключить эту оптимизацию, добавьте следующий код в файл build.gradle:
Поскольку тип сборки или разновидность продукта не определяют это свойство, вам необходимо вручную установить для этого свойства значение true при создании версии выпуска приложения.
Оптимизация разработки под Android
На сегодняшний день, Android Studio является популярнейшей средой разработки под ОС Android. Поэтому узнав несколько трюков и инструментов для разработки, вы значительно увеличите вашу продуктивность.
Начну с банальных и баянистых советов, которые не знают разве что новички:
-Не используйте мелкий шрифт, ведь его трудно читать
-Поставьте себе тему Darcula, потому что темный фон снижает напряжение для глаз
-И используйте стандартный Code Style, например AOSP Codestyle
Когда с простыми советами покончено, можно переходить и к чему-то посложнее.
Шпаргалка с горячими клавишами для Android Studio пригодится вам, чтобы увеличить скорость вашего взаимодействия со средой разработки.
Использование Live Templates в Android Studio также ускорит вашу разработку:
- newInstance — создает статическую функцию newInstance внутри фрагмента
- Toast — создает Toast.makeText(context, «», Toast.LENGTH_SHORT).show();
- fbc — findViewById с кастом
- const – определение интовой константы
- logd — генерация Log.d(TAG, «»);
- logm — имя текущего метода и его аргументы в лог
- logt – статическая TAG-строка с именем класса для лога
- psf — public static final
- soutm — печатает текущие имена классов и методов в System.out
- soutp — выводит имена и значения метода в System.out
- visible — установить видимость (true/false)
- gone — Установите видимость View GONE
Теперь, поговорим об использовании плагинов для Android Studio. Их огромное множество, но здесь я расскажу о самых полезных из них.
Данный плагин позволяет изменять стиль текста (camelCase, kebab-lowercase, KEBAB-UPPERCASE и т.д.), кодировать / декодировать, увеличивать / уменьшать, сортировать, фильтровать и выравнивать.
Rainbow Brackets
Вместо того, чтобы часами искать скобки, которые вы забыли закрыть, просто раскрасьте их с помощью данного плагина. Сэкономленные нервные клетки и часы работы гарантируются.
Project Lombok
Это Java-библиотека, которая генерирует шаблонный код за вас, сохраняя ваш код лаконичным и читабельным. Поскольку Lombok является библиотекой времени компиляции, он не сделает ваше приложение более тяжеловесным.
Vector Drawable Thumbnails
Расширение позволит вам открыть ваши векторные рисунки по одному щелчку мыши, вместо того, чтобы открывать отдельное приложение для этого.
Android Input
Данный плагин позволит вам вводить текст прямо в ваше Android-устройство или эмулятор. Также запоминает последний введенный текст.
Если этого материала вам было мало, вот еще две записи на Английском, относящихся к теме моей статьи:
- Встроенный терминал в Android Studio
- Настройка Android Studio
Android Studio работает медленно (как ускорить)?
Недавно я обновился от Eclipse до Android Studio, и мне не очень нравится этот опыт. Я сравниваю их как с Windows 7 64-разрядной версией с 16 ГБ оперативной памяти, так и Intel i7 4770, работающей с NVidia Geforce 780 с новейшей версией NVidia драйверов, если это имеет значение, и я запускаю последнюю версию JDK и последнюю версию Android Studio.
Android Studio очень медленна в создании проекта, с которым я могу жить, но он также чрезвычайно ресурсоемкий, а иногда и замедляет работу ПК до обхода.
Всякий раз, когда я создаю или запускаю что-либо в AS, мой компьютер, кажется, становится очень вялым. Это также вызывает мерцание экрана и иногда гашение моего второго монитора, если я нажму на «Gradle build running» spinner, который я нахожу очень странным. Использование ОЗУ также увеличивается до
3 ГБ, что я считаю чрезмерным для того, чтобы ничего не делать (это когда он простаивает после нескольких сборок).
Кроме того, панели в нижней части AS продолжают прыгать вокруг, что является ужасным пользовательским интерфейсом (от Android до Messages до Version Control или что-либо еще на разовой основе в зависимости от того, что происходит, очень, очень раздражает).
То, что я хотел бы знать, в основном:
1) Как заставить Android Studio работать лучше? Я могу делать что-то неправильно или пропускать некоторые обновления, о которых я не знаю, и я уверен, что другие также заметили это поведение и нашли для него некоторые решения.
2) Как «прикрепить» нижние панели так, чтобы они не прыгали, а вместо этого, позвольте мне, пользователю, перейти к ним, когда я захочу, вместо того, чтобы автоматически их переключаться?
Большое спасибо и мои извинения снова, если это не правильное место для этих вопросов.
Изменить 1
Еще несколько комментариев:
- Я использую последнюю версию stable на сегодняшний день. Строка Android Studio 1.2.2 Build # AI-141.1980579, Build on June 3, 2015
Поведение происходит при использовании Java 7 или 8. Это, похоже, не связано с версией Java.
Я не использую режим презентации. Просто вид ванили.
Выполнение изменений в конфигурации сборки (спасибо @Blackbelt и его ответ), похоже, помогло с сборкой, но остались проблемы с медлительностью и общим пользовательским интерфейсом.
Я обнаружил еще одну причину — Thumbs.db, что плохо повлияло на производительность.
Перейдите к File > Settings > Editor > File Types и в поле Игнорировать файлы и папки добавьте это: Thumbs.db;
Теперь Android Studio работает как шарм.
1) в settings > compile AndroidStudio settings > compile включить включение settings > compile названием Compile independent modules in parallel .
2) Под Help> Edit Custom VM Options меня есть:
PS — Некоторые люди говорят, что Note, вместо параметров VM, лучше объединить, можно переопределить, объединив эти строки в одну строку одной команды в gradle.properties, например так:
org.gradle.jvmargs = -Xms1024m -Xmx 4096 м.
3) У меня есть старое двухъядерное ядро с 4 ГБ оперативной памяти, работающее под управлением Ubuntu. Опция командной строки Qs у меня есть только —offline (которая указывает, что сборка должна работать без доступа к сетевым ресурсам). Я также включил оставшиеся флажки, и теперь он работает нормально:
Сделать проект автоматически
Использование незавершенного строительства. Настройка по требованию.
Проверьте настройки AndroidStudio, в разделе » Compile independent modules in parallel установлен флажок » Compile independent modules in parallel .
Под Vmoptions у меня есть
У меня есть старое двухъядерное ядро с 4 ГБ оперативной памяти, работающее под управлением Ubuntu. Опция командной строки Qs у меня есть только —offline , которая указывает, что сборка должна работать без доступа к сетевым ресурсам. Я включил также остальные флажки:
Сделать проект автоматически Используйте незавершенное строительство
Настроить по требованию
и работает нормально
редактировать
Можно предоставить дополнительные параметры через studio.vmoptions расположенную по адресу (просто замените XX на версию):
Windows: перейдите в %USERPROFILE%.AndroidStudioX.Xstudio.exe.vmoptions (или studio64.exe.vmoptions )
Mac:
Linux:
/.AndroidStudioX.X/studio.vmoptions (и/или studio64.vmoptions )
Увеличение значения -Xmx должно сильно помочь. Например
назначит 4G в качестве максимальной кучи, с начальным значением 1G
В окнах настройки по умолчанию хранятся в C:Program FilesAndroidAndroid Studiobin*.vmoptions . Среда IDE позволяет настраивать эти значения с помощью Help->Edit Custom VM options (спасибо @Code-Read за указание на это).
Советы, чтобы сделать студию Android быстро:
Включить автономную работу:
- Выберите «Файл» → «Настройки». Найдите «gradle» и нажмите в поле Offline work .
Перейдите в Компилятор (в диалоговом окне настроек ниже Gradle ) и добавьте текстовое поле —offline в Command-line Options .
Улучшить Gradle Производительность
gradle также может быть оптимизирован. Легкий способ — изменить настройки в глобальном gradle.properties (создать его, если он не существует в следующих папках: Windows — C:usersyour_name.gradle ; Linux- /home/ /.gradle/ ; Mac- /Users/ /.gradle/ 😉 и в этом файле добавить эти две строки:
Добавление большего количества памяти помогло мне:
- Нажмите «Справка»
Изменить параметры виртуальной машины
Android Studio 2.1.2 Редактирование пользовательских параметров виртуальной машины:
как показано ниже:
Перезапустить Android Studio
- Я не могу начать без упоминания: если у вас есть шанс, потратить немного денег на лучший компьютер (процессор), это очень важно.. Некоторые люди говорят, что ОС (операционная система) может вызвать большую медлительность. Например, было упомянуто, что XP или LINUX (или другие) работают на 70% быстрее (не знаю почему..).
Отключите VCS через File > Settings > Plugins и отключите следующие вещи: CVS Integration ; Git Integration ; GitHub ; Google Cloud. вещи; Subversion Integration ; hg4idea ;
Редактор тоже есть ресурс (особенно на больших мониторах) и медленно работает. Сделайте это намного быстрее: нажмите » Help > Edit custom VM options и добавьте следующие строки:
-Dsun.java2d.d3d=false
-Dsun.java2d.opengl=true
сохраните его и перезапустите Android Studio.
Если Android Studio имеет настройку прокси-сервера и не может получить доступ к серверу, то для создания и ожидания тайм-аута требуется много времени. Удаление это очень помогает. File > Settings > Appearance & Behavior > System settings > HTTP Proxy .
Еще одна полезная цитата (из статьи):
Модули стоят дорого… В моем текущем проекте мне пришлось создавать некоторые библиотеки с нуля, и мне пришлось раскошелиться на некоторые, которые почти соответствовали моим потребностям, но не совсем! Если эти модули не изменяются постоянно, важно учитывать это: время, необходимое для их компиляции с нуля или даже для проверки того, обновлена ли предыдущая сборка отдельного модуля, может быть почти в 4 раза больше, чем просто загрузить эту зависимость в виде двоичного .jar/.aar .
Подсказка: запустите gradle build -profile для отчета в формате HTML, показывающего, куда уходит время относительно процесса сборки.
Примечание: сохраните эти «ненужные» модули в вашей системе управления версиями для возможности быстрого исправления/улучшения этой зависимости.
В вашем скрипте Gradle используйте только
определенный сервис Google, например: compile ‘com.google.android.gms:play-services-maps. ‘
Вместо полной библиотеки Google: compile ‘com.google.android.gms:play-services. ‘
(Время компиляции идет от 2 минут до 25 секунд).
Gradle настраивает каждый проект перед выполнением задач, независимо от того, действительно ли проект необходим для конкретной сборки. В глобальном добавлении gradle.properties это очень поможет: org.gradle.configureondemand=true
Удивительно, что некоторые люди говорят, что они решили проблему, уменьшив: 1) размер кучи до -Xmx256m (вместо более высоких значений); 2) Эмулятор Ram-size (из Edit AVD > Advanced Settings );
Ежедневные рекомендации:
- Не запускайте несколько проектов одновременно. Не закрывайте эмулятор после однократного использования (используйте один и тот же эмулятор для запуска приложения каждый раз; если вы тестируете большие приложения, лучше использовать реальный мобильный телефон вместо эмулятора). чистите ваш проект каждый раз после запуска приложения в эмуляторе — нажмите » Build > Clean Project (или » Rebuild ), вы можете использовать сочетание клавиш.