- Электрический блогнот
- мои заметки на полях
- Как ускорить Android Studio на ноутбуке
- Gradle
- Gradle Daemon
- Gradle Plugin
- Gradle Cache
- Gradle Offline
- Instant Run
- Gradle параллельная сборка
- Incremental Dex
- Java Memory
- Virtual Device Memory
- File Tabs
- Antivirus Software
- Заключение
- Как разогнать эмулятор Android
- Системные требования
- Поддерживаемые ОС
- Установка
- Установка вручную
- Установка с помощью Android SDK Manager
- Установка Intel HAXM
- Установка эмулятора Android x86
- Создание виртуального устройства
- Как ускорить эмулятор Android на 400%
- Эмуляция против симуляции
- Android_x86
- Настройка Android_x86 внутри VirtualBox
- Соединение виртуальной машины Android, AVD и Eclipse
- Добавляем SD карту
- Используем файл в качестве SD карты
- Используем отдельный раздел
- Впечатления от использования Android_x86 в качестве окружения для тестирования
- Использование
- Скорость
Электрический блогнот
мои заметки на полях
Как ускорить Android Studio на ноутбуке
Android Studio стал стандартом de facto при разработке приложений для Android. Если раньше, все было на Eclipse (а кто-то пробовал и NetBeans), то сейчас многие уходят на Android Studio. Прекрасная и удобная среда разработки. В инете много информации по ней. Если есть вопросы, как работать в Android Studio, то, где-нибудь на stackoverflow.com есть уже ответ.
Но не все так прекрасно с Android Studio. Есть одно «но» — потребляет много ресурсов. И с каждой версией требования к памяти и процессору все выше и выше. Старенький ноутбук уже не тянет (а когда-то тянул и очень хорошо тянул). Студия грузится долго, проект собирается тоже долго. Если запустить emulator Android, то ноутбук чуть ли не в swap падает (хотя раньше все нормально было).
В сети очень много советов о том, как ускорить Android Studio. Но зачастую они касаются рабочих станций, где нет проблем с оперативной памятью, быстрый жесткий диск и современный процессор. Что же делать владельцам ноутбуков? В этой статье я постараюсь собрать все рецепты, которые сделают работу в Android Studio комфортнее на слабых компьютерах, коими в большинстве своем являются ноутбуки.
Gradle
Проверьте, что установлена самая свежая версия сборщика проектов Gradle. Если давно не проверяли, то go на сайт и качайте последнюю версию: https://gradle.org/releases/.
Разработчики Gradle постоянно, что-то улучшают и в свежих версиях потребление памяти и скорость могут быть улучшены.
После того, как gradle скачан и установлен, нужно сказать Android Studio, где находится gradle. Делается — это в 2 этапа:
1) сначала говорим Android Studio, чтобы не пользовалась своим встроенным gradle wrapper’ом (галочку снимаем);
2) говорим, где находится свежескачанный gradle (галочку ставим).
Как это делается, можно посмотреть на следующей картинке:
Gradle wrapper в Android Studio тоже хорошая вещица. В процессе сборки проекта он сам выкачивает нужную версию gradle, а потом просто ее использует. Но мы не ищем легких путей, мы сами все делаем. Хотим, чтобы все было под контролем.
Gradle Daemon
Итак, в предыдущем пункте мы выкачали gradle с официального сайта и установили самую свежую версию, попутно указав Android Studio использовать эту версию gradle. Теперь идем дальше. Чтобы ускорить начало сборки можно держать gradle в памяти.
Для этого в файл
/.gradle/gradle.properties добавляем такую строку:
После этого gradle будет оставаться в памяти и быстро подхватывать ваши проекты. Следует заметить, что настройки в файле
/.gradle/gradle.properties будут действовать на все проекты использующие gradle. Если вы захотите держать gradle daemon запущенным только для определенных проектов, то следует редактировать gradle.properties в корневой папке вашего проекта (в этом случае gradle.properties будет воздействоать только на текущий проект):
Непонятно только, как делать на ноутбуке. Если памяти много, то можно держать Gradle Daemon. Если каждый килобайт памяти на вес золота, то лучше убрать.
Gradle Plugin
С помощью Gradle Plugin’а Andorid Studio добавляет несколько фишек в gradle по сборке приложения под телефон на Android. Ибо сама gradle не может собрать Android app. Android Studio сама напоминает, когда обновить Gradle Plugin. Но если по каким-то причинам сборка проекта ведется из командной строки, а не из IDE, то за актуальностью Gradle Plugin нужно следить самому. Для этого в файле build.gradle (в топовом build.gradle, который расположен в корне проекта), находим строки:
и исправляем 3.0.1 на ту версию, какую вам нужно. Посмотреть самую свежую версию Gradle Plugin можно на официальном сайте разработчиков Android https://developer.android.com/studio/releases/gradle-plugin.html.
Если вы привыкли делать все из студии, то нужный файл и нужная строка представлены на следующей картинке:
Gradle Cache
Для ускорения процесса сборки проетка Gradle может использовать результаты предыдущих сборок. Чтобы активировать эту опцию вставляем в gradle.properties следующуя строку:
Gradle Offline
При сборке Gradle смотрит в сети не появились ли новые версии библиотек, задествоанных в проекте. При медленной сети это занимает достаточно долго времемни. Поэтому отключим эту возможность. Переводим gradle в offline режим. Открываем настройки Ctrl+Alt+S, далее Build, Execution, Deployment/Gradle:
Но это не все. Открываем Compilers и добавляем ключ —offline.
Instant Run
Про него слагаются легенды. Подставляя скомпилированный код находу, он позволяет отлаживать приложения на Android без глобальной персборки проекта. Это оправдано, когда проект большой в 10-ки, а то и 100-и классов. Но когда работа идет на ноутбуке над небольшим приложением, то проще пересобрать проект. А почему? А потому что Instant Run требует много памяти, а на ноуте ее нет. Поэтому отключаем:
снова идем в настройки Ctrl+Alt+S и снимаем галку с «Enable Instant Run»
правда может оказаться так, что галка на Enable Instant Run серая и не дает себя снять, для этого проверьте нет ли внизу активных gradle процессов:
дождитесь когда закончатся и попробуйте снова выключить Instant Run.
Gradle параллельная сборка
Вот здесь с осторожностью. Может, как и ускорить сборку, а может и навредить (ноутбук в swap уйдет). Поэтому проверяйте.
В настройках Ctrl+Alt+S стави галочку «Compile Independent Modules in Parallel«:
Incremental Dex
С одной стороны полезная вещица, позволяет ускорить сборку. С другой стороны для эффективной работы требует немало памяти. Попробуйте с ней поиграться. Находится она вот здесь в настройках проекта (F4):
Java Memory
Выделяем доступную память для виртуальной машины Java. По уомлчанию там стоит достаточно много, можно и убавить. Для этого через «Help/Edit Custom VM Options» открываем конфигурационный файл и правим Xms и Xmx.
Это означает, что для JVM мы выделяем 256Mb на старте и ограничиваем максимальное потребеление памяти 512-ю Mb.
Virtual Device Memory
Если вы работаете на ноутбуке, то для отладки приложения используйте настоящее (в смысле не виртуальное) Android устройство подсоединенное к ноутбуку через USB. Если такой возможности нет и нужно использовать виртуалку, но настройте ее на минимальное использование памяти:
RAM =5 12Mb в самый раз
Можно снять галку с «Multi-Core CPU»
File Tabs
Постарайтесь не открывать одновременно много файлов:
Antivirus Software
Добавьте папку с проектами Android Studio (чаще всего StudioProjects) в список исключений антивируса или Windows Defender.
Заключение
В этой статье мы попытались ответить на вопрос, как ускорить Android Studio на ноутбуке. Приведен ряд советов, позволяющих существенно снизить потребление памяти, которая на дешевых ноутбуках является самым ценным ресурсом. Следует отметить, что эти рекомендации не явяляются прямым руководством к действи. В зависимости от конфинурации ноутбука пользователь сам должен выбрать оптимальное решение.
Источник
Как разогнать эмулятор Android
Каждый, кто хоть раз работал с эмулятором для разработки приложений под Android, знает, что даже на современном железе эмулятор тормозит так, что для его использования нужно нечеловеческое терпение. То есть, наверное, надо самому стать андроидом-киборгом.
Но есть и еще один метод – попроще.
Intel Hardware Accelerated Execution Manager (Intel HAXM) — это решение, использующее аппаратные возможности виртуализации (Intel VT) и позволяющее значительно ускорить работу эмулятора Android.
Данное решение работает в паре с эмулятором Android для х86 устройств. При этом, эмулятор будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
В случае разработки приложения, использующего только Dalvik разработчику не придется ничего менять, т.к. приложение не заметит разницы. В случае с NDK приложением необходимо будет добавить поддержку x86 архитектуры к списку собираемых библиотек. Сделать это несложно, нужно просто добавить поддержку x86 в make файл.
Системные требования
Поддерживаемые ОС
Установка
Intel HAXM можно установить как вручную, так и используя Android SDK Manager.
Установка вручную
Зайдите на сайт software.intel.com/ru-ru/android и скачайте установочный пакет для вашей платформы. Далее запустите установку и следуйте подсказкам мастера установки.
Установка с помощью Android SDK Manager
- Запустите Android SDK Manager
- В разделе Extras выберите «Intel Hardware Accelerated Execution Manager»
- Отметьте его галочкой и нажмите «Install package…»
- Далее подтвердите соглашение с лицензией и нажмите кнопку «Install»
- SDK Manager скачает и распакует пакет в каталог extras, находящийся в каталоге, в который был установлен Android SDK
- Перейдите в этот каталог и запустите установку Intel HAXM
Установка Intel HAXM
В процессе установки вам предложат определить объем выделяемой оперативной памяти. Вы можете оставить значение, предложенное по умолчанию. Если в процессе работы вы захотите изменить это значение – запустите установку еще раз.
В процессе установки может возникнуть и такое
В этом случае проверьте настройки в BIOS, возможно виртуализация поддерживается вашей системой, но по-умолчанию отключена.
Для того, чтобы проверить, что все установлено верно и работает, необходимо в командной строке выполнить:
sc query intelhaxm
После выполнения данной команды вы увидите текущий статус службы
Так же может пригодится способ остановить службу:
sc stop intelhaxm
sc start intelhaxm
Установка эмулятора Android x86
Описанное выше было не что иное, как подготовка почвы. Теперь необходимо установить сам эмулятор, который мы хотим «разогнать» с помощью Intel HAXM. В настоящий момент их два:
- Android 4.0.3 (API 15)
- Android 2.3.3 (API 10)
Устанавливаются они с помощью Android SDK Manager. Запускаем, отмечаем галочками интересующие нас образы и устанавливаем.
Создание виртуального устройства
После установки образа эмулятора Android для x86 необходимо создать новое виртуальное устройство с помощью Android Virtual Device Manager. Для этого:
- Запускаем ADV Manager
- Выбираем создание новойго устройства «New. »
- В окне свойств задаем произвольное название, например «Intel_Android»
- Выбираем версию, в моем случае версия «Android 4.0.3 – API Level 15»
- Устанавливаем остальные параметры (размер и наличие SD карты, разрешение и т.д.)
- Далее следует добавить обязательный параметр в раздел «Hardware» — «GPU Emulation» (кнопка «New», в списке «Property» необходимо выбрать «GPU Emulation», затем «ОК») и установить его в «yes»
Готово! Теперь осталось запустить и проверить все ли настроено верно. Выбираем созданный эмулятор и запускаем его кнопкой «Start». Далее идем в настройки и смотрим название устройства. Если все было сделано правильно, то для нашего примера, в поле «Model number» мы увидим строку «Android SDK Build for x86».
Конец мучениям и долгим ожиданиям! Наш эмулятор начал работать быстрее, причем настолько, что можно прямо из него просматривать видео с Youtube в режиме реального времени, а не как раньше в режиме слайд-шоу.
Источник
Как ускорить эмулятор Android на 400%
Последние несколько месяцев я работал над SDK для Android, входящим в платформу управления контентом Nuxeo. Особенно много работы было в последнее время, с приближением официального релиза SDK. Я хочу поделиться несколькими практическими советами по поводу разработки под Android, в частности тестирования и эмуляции. Уже после нескольких дней разработки я понял, что работа с эмулятором Android — не сахар, потому что он чудовищно медленный.
Начнём с того что он медленно запускается, но даже если использовать для ускорения запуска снапшот состояния, выполнение кода все равно происходит медленно, особенно в режиме отладки.
Тонкая настройка параметров Qemu не слишком помогла — скорость работы эмулятора осталась медленной, возможно именно поэтому большинство разработчиков предпочитает использовать реальные устройства, подключенные по USB.
В любом случае, мне хотелось найти решение, потому что я хотел показывать результат работы приложения на проекторе и не хотел чтобы демонстрируемое приложение тормозило.
Эмуляция против симуляции
Я не разрабатываю софт под платформы от Apple, но похоже что у симулятора iPhone нет таких проблем с производительностью, как у эмулятора Android.
Одна из причин состоит в том что он работает не как «настоящий симулятор», т.к. инструкции CPU, используемые в симуляторе iPhone такие же, как у компьютера, на котором запущен симулятор (x86).
Android, с другой стороны, вынужден эмулировать настоящий процессор архитектуры ARM поверх процессора x86. Это добавляет довольно значительный оверхед в плане производительности.
По крайней мере для демонстрации приложения мне ни к чему эмулировать ARM, мне нужна только возможность запустить Android и моё приложение.
Android_x86
К счастью, существует open source проект по портированию Android на процессоры x86: http://www.android-x86.org/.
В проекте есть несколько образов для скачивания, и хотя они не успевают за всеми официальными релизами Android SDK, они предоставляют загрузочный образ Android 2.3, который меня и заинтересовал.
Настройка Android_x86 внутри VirtualBox
Первый шаг: загрузить ISO-образ Android_x86. Я использовал android-x86-2.3-RC1-eeepc.iso , который может быть загружен с http://www.android-x86.org/download.
Следующий шаг: создание виртуальной машины, способной запускать этот образ.
Я использовал VirtualBox, но слышал что QEmu тоже неплохо подходит.
Итак, в VirtualBox необходимо создать новую машину:
- целевая OS: choose Linux
- версия целевой OS: другая
- Я использовал 1GB RAM и 1 CPU (остальные настройки оставил по умолчанию)
- добавить жёсткий диск: VDI drive, динамический размер, 512 Mio
- добавить CDROM, в который загружен скачанный ISO
В загрузочном меню выбираем установку на жёсткий диск:
В процессе установки придётся сделать следующее:
- создать новый раздел на жёстком диске
- отформатировать его в ext3
- выбрать этот раздел для инсталляции Android
Когда установка завершится:
- выключить виртуальную машину
- удалить устройство CDROM, указывающее на ISO образ (в окне конфигурации VirtualBox)
Загружаем виртуальную машину: у Вас теперь есть работающий образ Android x86.
Но так как по умолчанию он сконфигурирован для Eee PC, это не идеальный вариант для тестирования приложений, предназначенных для экрана смартфона.
Теперь нам необходимо изменить конфигурацию под экран телефона.
Выключаем VM и VirtualBox.
Первый шаг: создать новые режимы разрешения. Я определил 3 режима:
Здесь Android2.3 это имя созданной виртуальной машины.
Теперь, когда мы объявили новые режимы, необходимо их использовать. Для этого придётся изменить параметры ядра.
Чтобы это сделать, необходимо перезапустить виртуальную машину и в мню загрузки выбрать Debug mode, чтобы Android загрузился с командной строкой.
Запускаем виртуальную машину.
Когда она запустится, мы перемонтируем загрузочный раздел в read/write, чтобы можно было изменять конфигурацию Grub.
После этого можно будет редактировать файл menu.lst.
Теперь дублируем первый пункт меню (3 строки) и редактируем параметры ядра (первую запись «title» и две следующих строки).
Параметры по умолчанию таковы:
Параметры, которые я использовал:
Название впишите какое понравится.
Если хотите выбирать разрешение при загрузке, можно сделать так:
Сохраните свой menu.lst (:wq) и перезапустите виртуальную машину используя меню VirtualBox.
Теперь можно будет запустить виртуальную машину Android, которая будет выглядеть как телефон.
Несколько советов по использованию виртуальной машины:
- Если не видите мышь на экране Android, используйте меню VirtualBox чтобы выключить mouse integration (кнопка Host+I).
- Кнопка Windows соответствует кнопке Home в Android.
- Esc соответствует кнопке «назад» в Android
- F2 соответствует кнопке Menu
- F3 соответствует кнопке поиска
- Alt+F1 — переключение в консольный режим
- Alt+F7 — переключение в режим GUI
Соединение виртуальной машины Android, AVD и Eclipse
Целью была возможность использовать новую виртуальную машину из Eclispe для тестирования и отладки приложений. Чтобы это сработало, нудно настроить сетевое соединение между основной операционной системой (где работает Eclipse) и гостевой VM. Для этого в VirtualBox есть несколько настроек в Network settings:
- use bridge mode: он должен работать но для него может потребоваться запуск DHCP в основной ОС
- host only network: создаёт виртуальную сеть между основной и гостевой машинами; это самый простой в использовании вариант
Когда сеть будет настроена, перезапустите виртуальную машину, войдите в режим командной строки (Alt+F1) и введите:
Это выведет текущий IP виртуальной машины. Обычно это будет что то вроде 192.168.56.101 для гостевой машины, основная получает адрес 192.168.56.1.
На основной машине открываем командную строку, переходим в директорию platform-tools для Android:
Это зарегистрирует виртуальную машину в качестве нового устройства:
Теперь можно запускать и отлаживать Ваше приложение прямо из Eclipse.
Как видите, прирост скорости весьма заметный:
- Запуск VM занимает 2 секунды вместо 30
- Приложения запускаются очень быстро, даже в режиме отладки (нет тормозов, присущих эмулятору ARM)
Добавляем SD карту
Используем файл в качестве SD карты
Из командной строки Android:
Теперь перезапускаем VM в режиме отладки, перемонтируем раздел в режиме чтение+запись и редактируем menu.lst чтобы добавить один параметр ядра:
Используем отдельный раздел
Здесь потребуется чуть больше работы.
Для начала придётся создать новый жёсткий диск в VirtualBox и подключить его к виртуальной машине.
Теперь запускаем машину в режиме отладки. Используем fdisk чтобы создать раздел. Когда раздел создан, надо его отформатировать:
Теперь редактируем menu.lst и добавляем параметр:
Впечатления от использования Android_x86 в качестве окружения для тестирования
Использование
Пока виртуальная машина работает как ожидалось, и кроме скорости различий особых я не заметил. Все проекты Android установились правильно. Примеры проектов из SDK собираются и работают нормально.
Единственный заметный глюк: приложение галереи (Cooliris) сломано, я пробовал с последней ночной сборкой образа — стало немного лучше, но проблемы всё равно остаются.
Ещё одна странность: примерно в 10% случаев виртуальная машина не загружается и её приходится перезагружать. Так как загрузка происходит очень быстро, это не особо мешает, но я всё равно постараюсь понять в чём тут дело.
Скорость
Тут различия видны невооружённым глазом.
Вот немного цифр, чтобы было понятнее насколько всё ускорилось:
Эмулятор Android на ARM работает примерно наполовину медленнее чем Nexus One, а Android x86 — примерно в два раза быстрее.
Источник