Заставить эмулятор Android работать быстрее

251

Эмулятор Android немного вялый. Для некоторых устройств, таких как Motorola Droid и Nexus One, приложение работает на реальном устройстве быстрее, чем эмулятор. Это проблема при тестировании игр и визуальных эффектов.

Как заставить эмулятор работать максимально быстро? Я играл с его параметрами, но еще не нашел конфигурацию, которая покажет заметное улучшение.

hpique
источник
1
все мои приложения работают быстрее на устройстве
16
Забавно, потому что симулятор iPhone - это как раз наоборот. Приложения работают медленнее на устройстве. В большинстве случаев я предпочитаю более медленный эмулятор, потому что он стимулирует вас улучшать ваше приложение, но иногда вы просто хотите увидеть, как оно работает, как в реальном устройстве.
hpique
1
Можно сделать так, чтобы он работал НАМНОГО быстрее, как обычно, используя VirtualBox - см. Stackoverflow.com/a/6058689/40961
Дэвид д Ч е Фрейтас
5
iOS и Windows Mobile используют симуляторы, а Android - эмуляторы. Симуляторы повторно реализуют все мобильные библиотеки и API, используя хост-библиотеки, и, таким образом, работают быстро. Эмуляторы используют те же библиотеки, что и на реальных устройствах, поэтому это медленнее. С точки зрения Android, если вы используете виртуальную машину Android, это будет очень быстро. Мы предоставляем бесплатный vm здесь: leapdroid.com
huisinro
2
... и насколько сумасшедшим является то, что 6 лет спустя, и даже с HAXM и образом системы x86 и хорошо разработанной средой разработки эмулятор Android все еще работает медленно, как патока?
дата

Ответы:

230

Официальная веб-страница

~ На 50% быстрее

Окна:

  • Установите "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager / Дополнительно
  • Установите «Системные образы Intel x86 Atom» => SDK-Manager / Android 2.3.3
  • Перейдите в корневую папку Android SDK и перейдите по адресу extras \ intel \ Hardware_Accelerated_Execution_Manager. Выполните файл IntelHaxm.exe для установки. (в Android Studio вы можете перейти к: Настройки -> Android SDK -> Инструменты SDK -> Intel x86 Emulator Accelerator (установщик HAXM))

  • Создайте AVD с процессором / ABI Intel Atom x86

  • Запустите эмулятор и проверьте в консоли, что HAXM работает (откройте окно командной строки и выполните команду: sc query intelhaxm)

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

Также не забудьте установить этот

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

PS при создании AVD добавить память эмуляции: Аппаратное обеспечение / Новое / Размер оперативной памяти устройства / Установленное значение 512 или более

Linux:

  • Установите KVM: откройте GOOGLE, напишите "установка kvm"
  • Создайте AVD с процессором / ABI Intel Atom x86
  • Запустить из командной строки: эмулятор -avd avd_name -qemu -m 512 -enable-kvm
  • Или запустите из Eclipse: Run / Run Configurations / вкладка «Target» -> проверьте Intel x86 AVD и в окне «Дополнительные параметры командной строки эмулятора» добавьте: -qemu -m 512 -enable-kvm (нажмите Run)

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

PS для Fedora , для Ubuntu

OS-X:

  • В Android SDK Manager установите образ системы Intel x86 Atom
  • В Android SDK Manager установите Intel x86 Emulator Accelerator (HAXM)
  • В программе поиска перейдите в папку установки ускорителя Intel Emulator и установите IntelHAXM (откройте dmg и запустите установку). Вы можете найти это местоположение, наведя указатель мыши на элемент ускорителя эмулятора в SDK Manager.
  • Создайте или обновите AVD и укажите Intel Atom x86 в качестве ЦП. Эмулятор Intel x86 Accelerator (HAXM), отображающий расположение

PS: проверьте этот инструмент, очень удобно даже пробную

Геннадий Рябкин
источник
8
Это работает и в OSX. Вам необходимо установить /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgпосле загрузки пакета из менеджера SDK.
Джаретт Миллард
5
Инструкции Windows с «Use Host GPU» дали мне супер-быстрый эмулятор! (У меня есть поддерживаемый процессор Intel и видеокарта nVidia.) Анимации маслянисто-плавные ( большую часть времени ; в других случаях очень мало рывков)! Обратите внимание, что вам нужно перезапустить Eclipse, чтобы AVD Manager выбрал опцию процессора Intel Atom (x86) . Совет: не выделяйте слишком много оперативной памяти. При 1 ГБ ОЗУ эмулятор не запускался (с графическим процессором), но с 512 МБ ОЗУ он работал гладко и загружался очень быстро (опять же с использованием ГП).
ADTC
Я обнаружил, что LogCat получает спам с большим количеством предупреждений о трассировке. Чтобы отфильтровать их, используйте ^(?!.*(nativeGetEnabledTags)).*$в качестве текстового фильтра. Я сообщил об этом как об ошибке . Кроме того, я думаю, что вы должны правильно выключить устройство эмулятора (удерживайте кнопку питания, затем выберите « Выключить» ), чтобы избежать ошибок при следующем запуске (я мог бы просто закрыть эмулятор ARM, но с эмулятором Intel, просто закрытие, кажется, создает проблемы).
ADTC
Я бы дал тебе +100, если бы мог. Работает на Windows 8 и производительность увеличилась потрясающе!
Паоло М
2
Мне пришлось отключить технологию Hyper V сначала через программу и функции под панелью управления, чтобы заставить это работать.
Майк Флинн
34

ОБНОВЛЕНИЕ: Теперь, когда образ Intel x86 доступен, лучший ответ - изюминка выше.

Как правильно указал CommonsWare, эмулятор работает медленно, поскольку он эмулирует процессор ARM, что требует перевода в коды операций Intel. Эта виртуализация жует процессор.

Чтобы сделать эмулятор быстрее, вы должны дать ему больше процессора. Начните с быстрого процессора или обновите, если можете.

Затем дайте эмулятору больше вашего процессора:

  1. Отключить гиперпоточность - поскольку кажется, что эмулятор не использует более одного ядра, гиперпоточность фактически уменьшает общее время ЦП, которое получит эмулятор. Отключение HT замедлит работу приложений, использующих преимущества нескольких процессоров. Гиперпоточность должна быть отключена в вашем BIOS.
  2. Заставьте эмулятор работать на процессоре, отличном от CPU 0 - это оказывает гораздо меньшее влияние, чем отключение HT, но помогает некоторым. В Windows вы можете указать, на каком процессоре будет запускаться процесс. Многие приложения нагревают CPU 0, и по умолчанию эмулятор работает на CPU 0. Я изменяю эмулятор для запуска на последнем. Обратите внимание, что в OS X вы не можете установить сходство (см .: /superuser/149312/how-to-set-processor-affinity-on-a-mac ).

Я вижу улучшение примерно на 50% с этими двумя изменениями.

Чтобы установить привязку процессора к Windows 7:

  1. Открыть диспетчер задач
  2. Нажмите «Просмотреть все процессы» (для запуска с правами администратора, в противном случае нельзя установить привязку к процессору)
  3. Щелкните правой кнопкой мыши по emulator.exe и выберите Set Affinity ...
  4. В диалоговом окне Set Affinity выберите только последний процессор

Примечание. Когда вы изменяете сходство таким образом, оно изменяется только на протяжении всего жизненного цикла процесса. Следующий старт, вы должны сделать это снова.

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

mcohen75
источник
22
Процент ЦП удвоился, когда вы отключили гиперпоточность, потому что вы вдвое сократили количество логических процессоров.
Timothy003
1
Это работает как шарм, но .. Знаете ли вы, как сделать это на Ubuntu 11.10?
Изумрудный
1
@ Timothy003 да, абсолютно правильно. И удвоил процессор, который будет использовать эмулятор.
mcohen75
3
Вы видите только удвоение в показах менеджера задач числа; не в реальности. Если у вас недостаточно программного обеспечения, чтобы сгенерировать достаточно работы, чтобы иметь эквивалент по крайней мере 4 потоков на 100% ЦП, то несколько приложений, интенсивно использующих ЦП, все равно будут эффективно получать почти все ядро, а не половину ядра, которое вы наивно предполагаете. что означает диспетчер задач.
Дэн возится с огнем
3
Чтобы подтвердить то, что говорит @Dan Neely: у меня одноядерное приложение, которое просто сжигает 100% ресурсов процессора. Когда у меня HT, он показывает около 25%, без него - около 50%, но на самом деле вычисляет то, что он должен вычислять одновременно. Так что без разницы (по крайней мере на песчаном мосту).
bartosz.r
17

Я хотел бы предложить дать Genymotion вращение. Он работает в Oracle VirtualBox и на законных основаниях будет работать со скоростью 60 кадров в секунду.

Вот скриншот из одного из моих семинаров, работающих на бюджетной модели MacBook Air 2012 года:

Эмулятор Nexus 7 работает на скорости 56,6 кадров в секунду

Если вы не можете прочитать текст, это эмулятор Nexus 7, работающий со скоростью 56,6 кадров в секунду. Дополнительный (большой!) Бонус заключается в том, что сервисы Google Play и Google Play поставляются в комплекте с виртуальными машинами.

(Источник демонстрационной анимации можно найти здесь .)

Пол Ламмерцма
источник
12

Включите аппаратное ускорение графического процессора (в дополнение к HAXM от Intel), если вы используете API 15 v3 или новее и SDK Tools v17 +. Графическое ускорение для эмулятора использует преимущества графического оборудования вашего компьютера разработки, в частности его графического процессора (GPU), для ускорения рисования экрана. Это дает заметный прирост скорости.

Чтобы включить графическое ускорение, включенное по умолчанию на вашем эмуляторе : при создании AVD в разделе «Оборудование» нажмите «Создать», выберите «Эмуляция графического процессора» и установите значение «Да».

Чтобы включить ускорение только во время выполнения : используйте флаг -gpu при запуске эмулятора следующим образом:

emulator -avd <avd_name> -gpu on

Источник: Google Использование руководства по эмулятору .

Джон Леманн
источник
10

Редактирование Хотя использование образов Intel дает некоторый прирост производительности, производительность, получаемая с помощью Genymotion, значительно выше. Смотрите ответ Пола Ламмерцма .

Предыдущий ответ

В ADT rev 17 эмулятор поддерживает запуск системных образов x86 в режиме виртуализации в Windows и Mac OS X. Это заметно влияет на производительность.

ADT rev. 17, примечания: http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html.

Настройка ускорения виртуальной машины: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

ThomasW
источник
7

Недавно я перешел с ядра 2 @ 2.5 с 3 ГБ оперативной памяти на i7 @ 1.73 с 8 ГБ оперативной памяти (обе системы работали с Ubuntu 10.10), и эмулятор теперь работает как минимум в два раза быстрее. Бросить больше оборудования на это, безусловно, помогает.

TripleG
источник
На самом деле это не решение: из-за этого эмулятор может иметь более высокую пропускную способность за раз, но фактически он не будет работать быстрее.
Четче
4

Я заметил, что по умолчанию в эмуляторе используется только Core 0, где большинство приложений Windows по умолчанию используют любое ядро. Кроме того, если вы поместите его на другое ядро ​​(например, последнее ядро), это может привести к тому, что эмулятор сойдет с ума. Если вы можете, вы можете попытаться поместить свои приложения с интенсивным использованием ЦП на другие ядра ЦП для увеличения скорости.

Аппаратно, получите самый быстрый процессор, который вы можете получить, который работает для одноядерных приложений. Более двух ядер могут не испытывать значительных различий в производительности эмулятора.

Затмение + эмулятор Android вместе съедают тонну оперативной памяти. Я бы порекомендовал 3 гигабайта оперативной памяти хотя бы потому, что я использовал систему с 2 гигабайтами оперативной памяти, и она замедлилась, потому что в системе не хватило оперативной памяти и начал использовать файл подкачки.

Я чувствую, что лучшие процессоры для него, вероятно, будут иметь высокую тактовую частоту (используйте тактовую частоту только в качестве меры для процессоров той же серии, кстати), хорошо обрабатывать не SIMD-операции и иметь механизм турбонаддува. Существует не так много эталонных тестов на основе Java, но в целом нужно искать эталонные тесты приложений, такие как сжатие и управление. Не смотрите на игры или мультимедиа, так как SIMD сильно на них влияет. Если вы найдете Java, даже лучше.

Джо П
источник
4

В этом году Google I / O (2011), Google продемонстрировал более быстрый эмулятор. Проблема не столько в байт-коде между ARM и x86, сколько в программном рендеринге, выполняемом QEMU. Они обходят рендеринг QEMU и отправляют рендеринг непосредственно X-серверу, как мне кажется. Они показали автомобильную игру с действительно хорошей производительностью и частотой кадров.

Интересно, когда это будет доступно для разработчиков ...

Cesar
источник
Есть новости об этом эмуляторе? Как его звали?
Alcor
У меня нет никаких новостей. Я не следил за обновлениями эмулятора Android за последний год или около того.
Цезарь
3

Google недавно анонсировала новый эмулятор для Android. Это намного быстрее и лучше, чем старый. Вы можете найти больше информации об этом здесь .

Koc
источник
1

Я думаю, это потому, что виртуальная машина clr использует процессор напрямую, без перевода кода операции. Это может быть оптимизация для приложения clr или Windows Mobile / Windows Phone 7, запущенный на процессоре INTEL. Платформа Android основана на Linux и теоретически вы можете запустить Android на виртуальной машине в среде i686. В этом случае виртуальные машины, такие как vmware, могут выполнять некоторые коды операций напрямую. Но эта опция будет разрешена только если вы пишете на Java. Потому что Java интерпретирует их байт-код или прекомпилирует его перед выполнением. см .: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

Ассад
источник
1

Спасибо, @zest! Работал как шарм. Некоторые примечания: необходимо применить исправление Intel для HAXM для решения проблемы паники ядра: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager. Также обратите внимание Если у вас есть более одного abi, вам нужно удалить его из-за ошибки в последней версии Android API (r19): https://code.google.com/p/android/issues/detail?id= 66740 (в этом случае удалите armeabi-v7a, так как вам нужен abi x86). Кроме 45 минут, которые потребовались мне для их решения, это было очень полезным упражнением с точки зрения увеличения производительности эмулятора.

horcle_buzz
источник
1

Вы также можете попробовать эмулятор Android для Visual Studio , который также можно установить как отдельный эмулятор (Visual Studio вам не нужен). Обратите внимание, что он может быть установлен только на Windows Pro или выше.

Дэвид Достал
источник
1

Используйте Genymotion вместо эмулятора. Genymotion имеет лучшую производительность https://www.genymotion.com

Олег Тарашкевич
источник
1

выберите эмулятор низкого разрешения (например, Nexus S), если у вас нет хорошей видеокарты (как я)

Дэн Алботяну
источник
0

Я использовал процессор Intel (86) / ABI. Я создал еще один эмулятор, используя ARM (armeabi-v7a), и я обнаружил, что скорость улучшается. Я использую платформу 4.1.2 API уровня 16

strange_developer
источник
0

Я надеюсь, что это поможет вам.

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

Это решило мою проблему ...

RajeshVijayakumar
источник
0

Обновите текущую версию Android Studio до Android Studio 2.0, а также обновите образы системы.

Эмулятор Android Studio 2.0 работает примерно в 3 раза быстрее, чем предыдущий эмулятор Android, а с помощью усовершенствований ADB вы теперь можете передавать приложения и данные в 10 раз быстрее, чем на физическое устройство. Как и физическое устройство, официальный эмулятор Android также включает встроенные сервисы Google Play, так что вы можете протестировать больше функций API. Наконец, новый эмулятор имеет богатые новые функции для управления звонками, батареей, сетью, GPS и многим другим.

Umer
источник