В помощь веб-разработчику: эмуляторы мобильных устройств

    Я думаю некоторые из веб-разработчиков сталкивались с задачей создания сайтов и сервисов под мобильные платформы. И проблема возникает в том момент, когда надо протестировать свое творение. И если найти тот или иной девайс все же не проблема, то протестировать на максимальном количеством устройств достаточно сложно. И тут на помощь приходят ОНИ — эмуляторы. В данном посте я рассмотрю вопросы установки и запуска эмуляторов следующих мобильных устройств, с целью запуска на них нужного сервиса: Win Mobile, iPhone, BlackBerry, Android, Symbian^3.

    Windows Mobile



    Необходимый софт




    Установка образов


    Образы виртуальных машин устанавливаются из файла Images5.0.msi (для Windows Mobile 5.0). Инсталляция проходит быстро и легко. В меню «Пуск\Программы» создается папка с ярлыками «Microsoft Windows Mobile 5.0 MSFP Emulator Images» или «Windows Mobile 6 SDK», в зависимости от выбранной версии ОС.

    image

    Опишу коротко предназначение каждого ярлыка:

    Device Emulator Manager – запуск менеджера, позволяющего управлять работой запущенных эмуляторов. Об этой программе поговорим ниже.

    XXXXX – Coldboot – запуск «чистого» образа Windows Mobile, версия с настройками по умолчанию, то есть «голая» система.

    XXXXX – Savestate – запуск виртуального компьютера из сохраненного ранее состояния.

    Версия «Smartphone QVGA» отличается от обычной «Smartphone» тем, что у QVGA разрешение дисплея 320х240 пикселей, а стандартное разрешение для WM-смартфонов считается 176х220 точек. Сейчас производители в основном выпускают смартфоны с разрешением 320x240, так что QVGA-режим наиболее актуален.

    Рекомендую также посмотреть свойства ярлыков для запуска виртуальной машины.

    Немного о запуске


    Эмулятор принимает первоначальные настройки лишь в качестве аргументов командной строки, а при самостоятельном (без параметров) запуске файла DeviceEmulator.exe выводится лишь список допустимых аргументов.

    image

    Например, ярлык «Pocket PC – Coldboot» вызывает эмулятор со следующими параметрами:

    C:\Program Files\Microsoft Device Emulator\1.0\DeviceEmulator.exe» pocketpc.nb0 /memsize 128 /skin Pocket_PC.xml /vmid {f1b1af09-969d-4035-8223-b800c75f451f} /s pocketpc.dess /p /funckey 193

    Итак, все готово. Жмем для примера «PocketPC – Coldboot» и в дальнейшем будем работать именно с образом Pocket PC. Перед нами появилось окно с виртуальным КПК, который можно использовать для различных экспериментов. А пока предлагаю перейти к настройке эмулятора.

    Настройка эмулятора


    Как уже писалось выше, основные параметры передаются DeviceEmulator.exe в качестве аргументов, поэтому открыв настройки эмулятора (File/Settings) мы увидим, что некоторые свойства изменить нельзя (они заблокированы от греха подальше).

    image

    На вкладке General можно изменить поля Host key и FuncKey, которые не играют практически никакой роли при использовании эмулятора, поэтому их можно не трогать (поясним, что эти параметры влияет на работу с клавиатурой). А вот параметр Shared Folder очень даже полезен и позволяет использовать папку на ПК в качестве виртуальной карты памяти для эмулятора. Можно либо выбрать каталог из списка, либо ввести путь вручную. Стоит обратить внимание, что введенный адрес должен существовать, иначе эмулятор выдаст ошибку.

    Все параметры с этой вкладки можно задать, используя параметры командной строки:

    /binfile – полное имя файла с образом виртуальной машины. Например: “C:\Program Files\Microsoft Device Emulator\1.0\DeviceEmulator.exe” “C:\Program Files\Windows Mobile 6 SDK\PocketPC\Deviceemulation\0419\PPC_RUS_GSM_VR.BIN”. Если эмулятор запускается из папки с образом, то полный путь до файла можно не указывать

    /memsize size – установить объем виртуальной памяти в size мегабайт. Например /memsize 64

    /sharefolder directoryname – путь к общей папке. Например: /sharefolder “C:\PPC_SD”

    /funckey key – установка FuncKey. Например: /funckey 193

    /hostkey keyname – установка Host key (“None”, “Left-Alt” или “Right-Alt”). Например: /hostkey Left-Alt

    /flash filename – позволяет установить поле “Flash memory file” для эмуляции флэш-памяти через файл. Например: /flash ppc_flash.bn

    image

    Далее переходим на вкладку Display. Здесь можно либо выбрать готовый Skin/Скин (внешность виртуального КПК), либо указать разрешение вручную. Каждый скин описывается в XML-файле, который хранится в папке с образами (или в отдельных папках). Что же касается режима Video (можно выбрать либо Video, либо Skin), то поля Screen width, Screen height и Color depth скорее всего будут задизейблен, так как параметры экрана можно задать в через командную строку, о чем говорилось выше. Режим Zoom 2x увеличивает размеры дисплея эмулятора в 2 раза, не меняя при этом фактического разрешения экрана виртуального КПК. Always on top – всегда держать эмулятор над остальными окнами, Show tooltips – показывать всплывающие подсказки. Orientation – поворот КПК на 0, 90, 180 или 270 градусов по часовой стрелке.

    Менеджер эмуляторов


    Отдельно стоит упомянуть программу Device Emulator Manager (DEM), которая позволяет работать сразу с несколькими образами, включать/выключать их, подключать к кредлу, перезагружать и прочее.

    image

    Кнопка Refresh нужна для ручного обновления состояния виртуальных машин. Эту кнопку необходимо нажимать после запуска/закрытия эмулятора. Каждый образ имеет свой номер (ID), через который можно в DEM работать с виртуальным КПК.

    Пункт меню «File->Restore Image» позволяет восстановить образ, сохраненный через «Save state and exit» (см. выше), состояние виртуальной машины сохраняется в файле с расширением .dess.

    Если рядом с пунктом меню «File->No Security Prompts» стоит галочка, то при запуске эмулятора запросы на подключение сетевого адаптера/периферии и прочее появляться не будут. Этому пункту соответствует параметр командной строки /nosecuritypromt

    В меню «Actions» находятся различные действия, которые можно совершить с виртуальной машиной (это же меню открывает при клике правой кнопкой мыши на ID образа):
    • Connect – подключить утилиты разработчика к эмулятору (у меня все время было пункт был заблокирован).
    • Cradle – подключить к кредлу, ActiveSync должен найти КПК.
    • Uncradle – отключить от кредла.
    • Shutdown – выключить
    • Reset – мягкая перезагрузка, «софт ресет» (только обнуление ОЗУ);
    • Clear Save State – очистить сохраненные параметры, аналог жесткой перезагрузки, «хард ресет» (возвращает КПК в заводское состояние).
    • Bring to Front – перенести окно эмулятора на передний план.


    image

    Чтобы ActiveSync опознал подключение виртуального КПК, в его настройках параметров подключения должна стоять галочка «Разрешить подкл. к след. объектам» и выбран пункт DMA.

    Можно работать!

    (Большая часть материала взята отсюда)

    iPhone



    Для этой платформы синхронизации нет, так как он позволяет запускать только браузер.
    Для запуска этого эмулятора нам понадобится Safari под Windows, версия либо 3 либо 4. Соответственно, в зависимости от версии сафари качается и нужная версия эмулятора: 3 или 4. Разница заключается в версии WebKit, который и рендерит картинку.
    После того как все скачано, надо сначала установить сафари, а после этого разархивировать в отдельную папку эмулятор. В случае 4 желательно скопировать все файлы из этой папки

    C:\Program Files\Common Files\Apple\Apple Application Support

    в папку куда был разархивирован эмулятор. Запускаем эмулятор и идем по адресу своего приложения.

    Android



    Сначала качаем Android SDK. (Найти Standalone эмулятор к сожалению не вышло). После скачивания запускаем установку и видим примерно следующее:

    image

    В нем нам предлагают скачать все последние обновления. Можно закрывать его смело и переходить на Available packages, где выбираем нужную версию платформы.

    image

    Напомню, в плане веб рендеринга разница между 1.5 и 2.1 огромна.
    Теперь идем на вкладку Virtual device где создаем устройство нужной нам версии.

    image

    Profit!
    Для синхронизации я использовал HTC Sync.

    BlackBerry



    Самые толстые закачки тут. Мне пришлось выкачать почти 150 метров, что ужасно. SDK весит еще около 300 метров. Epic. Кроме того, чтобы все это скачать сначала придется зарегистрироваться, что вообще ни в какие ворота не лезет. Но от слов к делу.
    Качаем сначала BlackBerry Email MDS. После этого качаем сам эмулятор. Зависимость модель-версия ОС можно посмотреть вот тут.
    Скачиваем и устанавливаем. После этого сначала запускаем BlackBerry Email MDS, и ждем пока в консоль перестанут идти новые сообщение. После этого запускаем эмулятор и снова профит.

    Тулзу для синхронизации качаем тут.

    Symbian^3



    Установка эмулятора


    Сначала идем на страницу загрузок, на которой нам надо скачать следующие файлы:

    • binaries_epoc.zip
    • binaries_winscw_lib.zip
    • binaries_winscw_udeb.zip
    • binaries_winscw_urel.zip
    • tools_epoc.zip


    После скачивания все надо распаковать в одну папку.
    Когда все это выполнено для запуска эмулятора потребуется запустить файл:

    %home_dir%\epoc32\release\winscw\urel\epoc.exe

    Запускается он долго, я бы даже сказал очень долго. В первый запуск от вас потребуется ввести свою страну и время. Если эмулятор не запускается или валится с ошибками, то следует запускать вот такой файл:

    %home_dir%\epoc32\release\winscw\udeb\epoc.exe

    К сожалению, он работает еще медленнее, так что запаситесь терпением =)

    Подключение к сети


    Но это еще не все, так как наша задача состоит в запуске веб приложения. Переходим к процессу соединения с интернетом.
    Здесь есть два способа:

    • используя WinPCap — тулза для прямого обращения к сетевой карте;
    • используя TAP-Win32 — еще одна тулза, которая создает виртуальную сетевую карту, которая объединяется в сеть с реальной.


    Путь первый (который я и использовал). Качаем тулзу со страницы проекта и устанавливаем. Продукт бесплатный и, по заверениям разработчиков symbian, стабильный.

    Теперь создадим и настроим файл CommsDat, который и отвечает за подключение к сети.
    В папке

    %home_dir%\epoc32\winscw\c

    находится файл ethernetced.xml, отвечающий за настройки. Очень важным элементов в нем является область ограниченная тэгом . Именно в ней прописываются настройки подключения к прокси, что достаточно актуально.
    Далее в переменных среды следует добавить новую переменную EPOCROOT, в которой указан путь до корневой папки, куда были распакованы файлы. Кроме того, в PATH следует добавить следующий путь:

    %home_dir%\epoc32\tools

    После этого в консоли запускаем EnableLanConnection.cmd, который делает следующее:

    • Делает бэкап существующего commsDat;
    • Создает новый commsDat с учетом измененного ethernetced.xml;
    • Запускает NetCards.exe для определения сетевой карты и обнаружения актуального подключения;
    • Запускает

      %home_dir%\epoc32\release\winscw\udeb\DbCreator.exe
      для внесения дополнительных настроек в окружение эмулятора.


    Путь второй. К сожалению, вторая тулза пока что не поставляется отдельно, поэтому придется качать целиком все PDT. Устанавливается она так же одновременно с PDT и ставит дефолтный ip для устройства 192.168.0.1. Настроить его можно выполнив следующую команду в консоли:

    netsh interface ip set address TAP-Win32 static 192.168.0.77 255.255.255.0

    Проверка на работоспособность

    Чтобы проверить, что все работает, запускаем браузер и пытаемся пройти по нужному адресу. При первом подключении предлагается выбрать одну из точек доступа:

    • GPRS IAP Placehol...
    • GPRS IAP Placehol...
    • Ethernet No Daem...
    • Incorrect ethernet...
    • Incorrect ethernet...
    • Ethernet with Dae...
    • Incorrect ethernet...
    • Ethernet with Dae...


    Нам нужно последнее — Ethernet with Daemon Dynamic IP.

    UPD1

    К полезным эмуляторам так же отнесем Opera Mobile emulator и Opera Mini Simulator. Спасибо pepelsbey и Akos.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 36
    • 0
      Как-то картинки не картинятся ;)
    • 0
      Статья очень толковая, спасибо! Несколько раз сталкивался с этой проблемой. Геморроился изрядно. :(
      • 0
        хорошая статья.
        iphone только не хватает :)
        • +2
          Не издевайся над человеком ;)
        • +2
          Для этих целей есть еще хорошая штука — Adobe Device Central. Там совершенно нереальная база девайсов.
          А еще эмулятор есть, на сколько я помню, в PhoneGap
          • 0
            хорошая статья. но для тестирования нативных приложений айфона и андроида (да и симбы) лучше все использовать эмулятор в SDK. А еще лучше не полагаться на эмулятор, а тестировать на реальных устройствах, иначе выйдет унылое говно.
            • –1
              «А еще лучше не полагаться на эмулятор, а тестировать на реальных устройствах, иначе выйдет унылое говно.»
              Ребята, делавшие аккордеон для айпада с вами не согласны
              • +1
                ребятам повезло. некоторый функционал работает радикально иначе на устройствах. недавно столкнулись с этим по симбе. там даже файловая структура проекта в эмуляторе и на телефонах отличается. так же недавно столкнулись с подобной ситуацией по ipad, когда приложение работает в эмуляторе, но на устройстве даже не запускается, так как различные методы использования БД.
              • 0
                К сожалению согласен. За несколько лет разработок и допилок на мобилы могу точно сказать, что эмуляторы — это от лукавого. Разработку вести, конечно, можно, но тестировать только на реальных устройствах.
                • 0
                  Докину свои пять копеек. Для меня было неприятным сюрпризом, что большую часть css сайта который я делал эмулятор windows mobile отображал как я хотел, а на реальном устройстве царила какая-то вакханалия. Так что чем быстрее найдется настоящий девайс, тем лучше и меньше нервов будет потрачено.
                • +1
                  Вот тут полностью и целиком согласен. Итоговое тестирование только на реальных девайсах. Потому что по опыту разработки под мобильные девайсы могу сказать — поведение эмулятора, как правило, серьезно отличается от поведения девайса. Особенно в плане объема памяти, доступных для него.

                  А у некоторых западных операторов — типа Vodafone — есть еще и такая штука, как Navarro proxy на пути от рядового юзера к интернетам. Там вообще есть возможность выбрать — конвертировать содержимое сайта для просмотра через WAP или нет. Что характерно, воспроизвести на эмуляторе загрузку той странички, на которой пользователю предлагается выбрать, как именно рендерить контент, из России невозможно.

                  Вообще, для серьезных продуктов лучше использовать сервисы вроде DeviceAnywhere. Платный, но зато там приложение (или сайт) можно тестить на реальных телефонах в реальном времени. Что иногда очень сильно спасает. Ну, и набор телефонов — очень большой.
                  Кажется, есть аналоги, но лично я пользуюсь этим.
                  • 0
                    DeviceAnywhere тормознутый, дорогой, но надёжный. Тоже не нашли ему никакой альтернативы.
                  • 0
                    Думаю, никто с этим не спорит :)
                    Только вот статья называется «в помощь веб-разработчику...», так что про нативные приложения речи не шло.
                    А те, кто разрабатывает нативные приложения, и обычно так, во-первых, знают, где взять эмуляторы, во-вторых, обычно имеют базовый набор девайсов для тестирования.
                    • 0
                      Во-первых, я говорил не о разработке нативных приложений. Я привел вполне себе конкретную ситуацию, которая может быть воспроизведена только на девайсе. И по-моему она напрямую относится к тестированию веб-сайта.

                      Во-вторых, такие ситуации не единичны. Работа эмулятора и реального девайса всегда отличается. Кто вам гарантирует, что нет серьезных различий в работе браузера?

                      В-третьих, я четко сказал про использование девайсов на конечном этапе тестирования. Я же не сказал «не используйте эмуляторы вообще».

                      В-четвертых, базовый набор девайсов вас не спасет. В общем случае по крайней мере. Потому что одна и та же модель телефона может работать по-разному в зависимости от того, выпустил ли его T-Mobile или тот же Vodafone. Я уже молчу про возможные приколы с сетевыми соединениями.
                      • 0
                        Хм… вроде же, по дереву комментариев чётко видно, кому я отвечал :)

                        То, что работа отличается, я тоже ни сколько не оспариваю. Как минимум потому, что в эмуляторе обычно некий эталонный слепок системы, а в реальности иногда задумываешься, как вообще производитель конкретный железки смог пройти сертификацию, если её работа не удовлетворяет базовым спецификациям платформы. Но, имхо, браузер — отдельный случай, так как обычно является частью платформы, поэтому можно рассчитывать на одинаковую (без учёта скорости) его работу на эмуляторе и на девайсе. Это чисто моё имхо, я не занимаюсь вебом для мобильников, но как-то не слышал о разнице в рендеренге на разных девайсах в рамках одной платформы.

                        А про базовый набор я писал просто потому, что именно разработчикам можно не рассказывать про необходимость отладки на реальном железе :) Базовый набор удобен для локальной отладки, а финальное тестирование, конечно, приходится заказывать.
                        • 0
                          Дьявол, не заметил позиции в дереве. Сорри )
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Это вообще жуть, хотя я возлагал надежды :\
                    • 0
                      Жаль большинство эмиулятор не кроссплатформены. Как я понимаю, из приведённых только Android нормальное работает на Linux/Mac OX X, а iPhone, наоборот, только на Mac OS X.
                      • 0
                        нет, iPhone работает как раз под виндой
                      • 0
                        сталкивался с порталом deviceanywhere.com — у них один из сервисов предлагает как раз тестирование на реальных железках (ipad есть в том числе). Девайсов просто огромное количество (>1500 разных моделей). Заявляют, что код исполняется на настоящем железе, а интерфейс доступа сделан на java.
                        Правда сервис платный, ценник показался не очень низким (продают доступ к сетам девайсов за $100, либо почасовой доступ — от $13 в час).
                        Своего заказчика не смогли раскрутить на оплату, но тот, кто понимает важность тестирования — должен согласится.

                        • 0
                          Вот неплохой эмулятор iPhone под Windows, www.genuitec.com/mobile/ Сейчас его использую для тестирования, правда javascript работает немного иначе чем на самом Iphone (столкнулся разницей в работе с touch events)
                          • 0
                            А под новую Windows Mobile 7 еще эмулятора нет? Я на сайте мелкомягких поискал — нет ничего, может что не официальное существует?
                          • +1
                            Виндоус, хнык…
                            • +1
                              Я бы ещё добавил Opera Mobile emulator и Opera Mini Simulator
                              • 0
                                Спасибо, а то задолбало ходить по офису и смотреть у разных людей на разных девайсах
                                • –2
                                  Спасибо, а то задолбало ходить по офису и смотреть у разных людей на разных девайсах
                                  • –2
                                    тьфу, два раза запостило коммент
                                  • 0
                                    Для проверки отображения вап-сайтов на моделях телефонов 3х-5и летней давности (а таких на рынке еще довольно много), если лень искать телефоны, использую WAP Proof — отличное решение.
                                    Для других девайсов используется Adobe Device Central
                                    • 0
                                      Хорошая статья, недавно встал ребром вопрос тестирования сайтов под iphone/ipad. Пересмотрел все вебовые и виндовые варианты. Самое приближенное MobiOne но все равно не то. Что уж говорить про эмулятор из статьи если в нем даже маусоверы работают. Разрешение да совместимость с сафари разве что тестить. Пробовал андроидовый эмулятор, почти оно, но нет эмуляции мультитачей, а мне как раз на сайт надо было добавить такой функционал.

                                      В конце концов протрахался некоторое время и таки настроил iphone sdk под virtualbox.
                                      Бегает все вполне резво, по крайней мере симулятор работает шустрее чем андройдовый :) (особенно если на андройдовом выставить разрешение 1024. можно сразу вешаться) Даже задумался может чтонить под ифон теперь написать.
                                      20гиг, правда, это хозяйство занимает.

                                      Если кому интересно, могу краткий пост сделать как что делал, подводные камни итп.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.