Quantcast
Channel: Статьи Intel Developer Zone
Viewing all articles
Browse latest Browse all 357

Использование Intel® Hardware Accelerated Execution Manager (Intel® HAXM) в имитаторе Android* с API Google

$
0
0

Аннотация

Разработчики и ранее использовали имитатор Android* на базе Intel® Hardware Accelerated Execution Manager (Intel® HAXM) для разработки приложений Android*, но при тестировании приложений, использующих API Google, действовал ряд ограничений. В состав пакета Android SDK недавно был добавлен системный образ API Google на базе x86. В этой статье описывается установка, настройка и тестирование эмулятора на базе HAXM с API Google. Мы создадим приложение, чтобы продемонстрировать использование API Google и тестирование их в имитаторе на базе HAXM.

Contents

Обзор

Имитатор Android Intel HAXM работает очень быстро, так как использует аппаратно ускоренную виртуализацию. Разработчики получат ощутимый прирост производительности работы на таких этапах создания приложений, как разработка, отладка и тестирование. До сих пор не было возможности тестировать приложения Android, использующие API Google, поскольку не было образов имитатора API Google на базе x86.

Теперь стандартные образы имитатора x86 Google API доступны в составе Android SDK. В приведенной ниже статье на сайте Intel Developer Zone подробно описывается создание и настройка AVD для запуска образа API Google x86.

https://software.intel.com/en-us/blogs/2014/03/06/now-available-android-sdk-x86-system-image-with-google-apis

TВ разделе комментариев сообщили о нескольких проблемах. В некоторых системах происходит сбой приложений Google (например, Карт Google), использующих технологии OpenGL, если установить флажок Use Host GPU для образа имитатора. Возможно, эту проблему удастся решить, отключив имитацию GPU.

Установите последнюю версию образа API Google для x86

Недавно была выпущена обновленная версия образа с исправленными ошибками (v5). Выберите и установите образ, как показано ниже.


Рисунок 1. Образ API Google x86 в пакете Android SDK

Создайте конфигурацию виртуального устройства Android (AVD) и проведите тестирование

Создайте конфигурацию виртуального устройства Android для вашего профиля целевого устройства. На следующем снимке экрана показана конфигурация AVD для профиля устройства Nexus 4. Обратите внимание на параметр Target: выбрана система x86 c API Google, уровень API 19.


Рисунок 2. Выбор нужного целевого устройства для конфигурации AVD.

Запустите образ имитатора. В окне Starting Android Emulator появится сообщение HAX is working and emulator runs in fast mode (НАХ работает, имитатор запущен в быстром режиме), если HAXM успешно используется.


Рисунок 3. HAXM успешно используется.

После загрузки образа имитатора Android на экране приложений должны появиться некоторые стандартные приложения Google, такие как Карты и «Настройки Google». См. следующий снимок экрана.


Рисунок 4. Образ API Google x86 с приложениями Google

Щелкните Карты Google, чтобы проверить правильность работы вашего образа х86 API Google на базе HAXM.

Если Карты не отображаются должным образом, проверьте наличие сетевого подключения у имитатора: запустите любой веб-браузер и попробуйте открыть в нем любой веб-сайт. По умолчанию имитатор должен автоматически получить доступ к сети и подключение к Интернету (если ваша система подключена к Интернету). Применение прокси-сервера может в некоторых случаях привести к проблемам с сетевым подключением имитатора.

http://developer.android.com/tools/help/emulator.html

Устраните все проблемы сетевых подключений и убедитесь, что имитатор Android может подключаться к Интернету.

На следующем снимке экрана показано приложение Карты Google, запущенное в имитаторе Android на базе Intel HAXM. Используется созданная ранее конфигурация AVD (x86_19g).


Рисунок 5. Приложение Карты Google в образе API Google x86.

Установите пакет SDK служб Google Play

Перед использованием API Google в нашем приложении Android сначала нужно загрузить пакет Google Play Services SDK в составе Android SDK Manager.

Подробные инструкции по установке см. в следующей статье.

http://developer.android.com/google/play-services/setup.html

Ниже показан снимок экрана Android SDK Manager, где для установки выбраны службы Google Play. Этот компонент находится в разделе Extras.


Рисунок 6. Установите службы Google Play с помощью Android SDK Manager.

На более высоком уровне API Google зависят от двух основных компонентов:

  • Службы Google Play, выполняемой в качестве фоновой системной службы в ОС Android. Она автоматически обновляется из магазина Google Play, как любой другой пакет APK.
  • Клиентской библиотеки, представляющей собой тонкую оболочку API с однородным интерфейсом. Она входит в состав пакета Google Play Services SDK, который мы загрузили ранее. Разработчикам необходимо использовать в своих приложениях нужную, самую последнюю версию.

В следующей статье более подробно описывается взаимодействие этих двух компонентов для предоставления бесшовного доступа к API Google для приложений Android.

http://developer.android.com/google/play-services/index.html

Создание образца приложения для тестирования API Google в имитаторе на базе архитектуры x86

Теперь создадим простое приложение, чтобы попробовать в работе API Google в образе Android x86 с HAXM.

Для создания образца приложения используется Android Studio. Щелкните File -> New Project, чтобы создать простое приложение с одиночным основным действием. Поскольку наш образ x86 Google API использует API уровня 19, убедитесь, что этот уровень задан в настройках Compile и Target. На следующем снимке экрана показаны все параметры, заданные для нашего образца приложения.


Рисунок 7. Создание приложения по умолчанию в Android Studio с правильными уровнями API для образа x86 Google API.

Скомпилируйте приложение и запустите его в созданной ранее конфигурации AVD (x86_19g). По умолчанию в приложении будет отображаться сообщение hello world.

Теперь добавим в приложение клиентскую библиотеку службы Google Play. Это удобнее сделать в проекте Android Studio. Нужно всего лишь отредактировать файл build.gradle в модуле нашего приложения (но не файл build.gradle основного проекта). Добавьте ссылку на последнюю версию служб Google Play в разделе зависимостей, как показано в следующем фрагменте кода.


apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        packageName "com.gapisample.app"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:4.4.52'
}

Фрагмент кода 1 ++

Подробные сведения см. в справочной документации: http://developer.android.com/google/play-services/setup.html

Службы Google Play и клиентская библиотека предоставляют доступ к нескольким API Google, включая Карты, Drive, Location, Google+, Ads и другие.

Для нашего тестового образца приложения используем API Android Карт Google. Для доступа к API Android Карт Google нам нужен ключ API. Следуйте инструкции, приведенной в следующей справочной статье, для создания ключа API: https://developers.google.com/maps/documentation/android/start#obtain_a_google_maps_api_key

Получив ключ API, измените манифест приложения, чтобы добавить этот ключ API: замените текст (), выделенный зеленым цветом, на ваш ключ API.

Прочие добавления в манифест приложения: версия службы Google Play, а также, в зависимости от использованных API, требуемые разрешения.

Для Карт Google требуются по крайней мере следующие разрешения: internet, network_state и external_storage. Подробное объяснение см. по адресу https://developers.google.com/maps/documentation/android/start#specify_app_settings_in_the_application_manifest for a detailed explanation.

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

<?xml version=”1.0” encoding=”utf-8”?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gapisample.app"><uses-feature android:glEsVersion="0x00020000" android:required="true"/><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"><activity
            android:name=".MainActivity"
            android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" /><meta-data android:name="com.google.android.maps.v2.API_KEY"
            android:value="<ADD YOUR KEY>"/></application></manifest>

Фрагмент кода 2 ++

Теперь у нас есть доступ к API Google и возможность вызова объектов Карт Google.

https://developers.google.com/maps/documentation/android/map

Чтобы просто вызвать Карты Google, можно просто использовать MapFragment и заменить наш код hello world на него. Измените содержимое файла activity_main.xml по умолчанию на следующий фрагмент кода согласно инструкциям, указанным на странице https://developers.google.com/maps/documentation/android/start#add_a_map

<?xml version="1.0" encoding="utf-8"?><fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:name="com.google.android.gms.maps.MapFragment"/>

Фрагмент кода 3 ++

Скомпилируйте приложение и запустите его на имитаторе. Теперь вместо сообщения hello world все пространство должно быть занято элементом MapFragment, отображающим базовые карты Google с элементами управления по умолчанию.


Рисунок 8. Действующий API Карт Google, протестированный в имитаторе Android на базе HAXM с помощью нашего образца приложения.

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

Заключение

В этой статье описывается установка и настройка системного образа API Google на базе x86 в имитаторе Android на базе HAXM. Также описана настройка пакета Google Play Service SDK и создание простого приложения для тестирования API Google в имитаторе.

Об авторе

Ашок Эмани (Ashok Emani) работает инженером по программному обеспечению в отделе Intel Software and Services Group. В настоящее время он занимается проектами по масштабированию систем на основе процессоров Intel® Atom™.

Уведомление об оптимизации
Компиляторы Intel могут не обеспечивать ту же степень оптимизации для микропроцессоров других производителей (не корпорации Intel), даже если в них реализованы такие же возможности для оптимизации, как в микропроцессорах Intel. К ним относятся наборы команд SSE2, SSE3 и SSSE3 и другие возможности для оптимизации. Корпорация Intel не гарантирует доступность, функциональность или эффективность какой-либо оптимизации на микропроцессорах других производителей.
Микропроцессорная оптимизация, реализованная в этом продукте, предназначена только для использования с микропроцессорами Intel. Некоторые виды оптимизации, применяемые не только для микроархитектуры Intel, зарезервированы для микропроцессоров Intel. Ознакомьтесь с руководством пользователя и справочным руководством по соответствующему продукту для получения более подробной информации о конкретных наборах команд, которых касается данное уведомление.
Редакция уведомления № 20110804

++Пример исходного кода распространяется на условиях лицензионного соглашения корпорации Intel на использование образцов исходного кода OBL (совместимого с MS-LPL).


Viewing all articles
Browse latest Browse all 357

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>