
Применением эмуляторов для разработки мобильных приложений под Android на PC-платформе уже давно никого не удивить. С этой точки зрения небольшой эксперимент, проведенный тестовой лабораторией «Компостера», не претендует на исключительность и экстремальность. Тем не менее, запуск Android-версии популярной диагностической утилиты AIDA64 на виртуальной машине Android Virtual Device поможет увидеть ряд скрытых свойств и возможностей эмулятора, виртуальной среды и выработать аргументированную позицию о возможности или невозможности непосредственного доступа приложений к аппаратным ресурсам мобильной платформы.
Приступаем к работе
Выбор модели и установка опций для эмулируемого устройства. В данном опыте в качестве платформы будем использовать любой виртуальный девайс из доступных в базе данных AVD:
Эту картинку придется наблюдать 5-10 минут, так как виртуальный ARM процессор работает достаточно медленно. Логично предположить, что при выборе X86 системы производительность будет выше в силу большего сходства набора инструкций эмулирующего и эмулируемого процессоров. Но для этого должен быть установлен пакет Intel HAXM (Hardware-Accelerated Execution Manager), который, в свою очередь требует поддержи технологии виртуализации Intel VT-x.
Хост платформа (ноутбук ASUS N750JK, процессор Intel Core i7-4700HQ) поддерживает эту технологию, но в целях безопасности, опыт проводится на виртуальной машине Oracle Virtual Box. Вот мы и ответили на вопрос: нужна ли аппаратная поддержка вложенной виртуализации?
Загружаем APK-файл на виртуальную машину
Для загрузки APK-файла на виртуальную машину потребуется утилита ADB:
После этого можно уже запустить диагностическую утилиту AIDA64 и получить доступ к ее меню.
AVD устройство идентифицируется как эмулятор из набора SDK. Задачу создания виртуальной платформы неотличимой от физического устройства, разработчики не ставили.
Архитектура процессора, набор инструкций, ревизия, количество ядер и поддерживаемые интерфейсы ABI (Application Binary Interface) доступны для идентификации. Как видим, Android – это не только Java-машина. Попутно заметим, что утилизация процессора на все 100%: эмуляция ARM-процессора на x86 платформе дело утомительное…
Разрешение экрана, геометрические характеристики, функциональные расширения OpenGL доступны для идентификации. А вот частота обновления экрана для виртуальной машины – параметр весьма условный.
Доступна информация о беспроводных коммуникацях и GSM-провайдерах мобильных услуг:
А здесь наблюдаем несуществующий объект, информация не коррелирует с состоянием батареи хост-платформы, а у виртуальной машины батареи нет. Требования совместимости обязывают сделать вид, что батарея есть и даже заряжается?
Достаточно подробная информация об операционной системе и виртуальной машине JAVA:
Конфигурируя виртуальную машину можно определить набор устройств и дисциплину доступа к ним. На данном этапе исследования мы проигнорировали такую возможность, поэтому устройства не найдены.
Температурных сенсоров не обнаружено, что в общем-то не совсем правильно, так как хост-платформа оснащена системой аппаратного мониторинга. Температура процессора для операционной среды доступна и может быть использована в качестве иллюстрации возможностей виртуального Андроида.
Обнаружено несколько вспомогательных датчиков, в том числе датчик ускорения, сенсор магнитного поля для функции встроенного компаса и датчики положения и движения. Позволим себе предположить, что в экране, описанном выше перечисляются датчики подсистемы аппаратного мониторинга, контролирующие внутреннее состояние устройства, а здесь — механические, магнитные и температурные датчики, анализирующие параметры внешней среды. Не забываем что машина виртуальная и рассуждения о датчиках весьма условны.
Резюме
Эмулятор Android SDK достаточно корректен для обеспечения запуска утилиты низкоуровневой диагностики, а утилита AIDA64 достаточно стабильна, для работы в виртуальной (экстремально медленной) среде. Все не так плохо в мобильной индустрии?