Разработка приложений для смартфонов на ОС Аndroid

Принципы переноса ранее разработанных приложений на смартфон

Разбить на страницы
Показывать лекцию целиком

Общие принципы портирования приложений

Презентацию к лекции Вы можете скачать здесь.

Портирование приложений

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

Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с программой. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.

Необходимость в портировании возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.

Международные стандарты значительно упрощают портирование. Они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1), сводится к перекомпиляции программы на новой платформе. Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.

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

Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера, игровой приставки или мобильного устройства) на другую платформу.

На рис 7.1 представлен пример портированной программы.

(рис 7.1) Главное окно популярного приложения Adobe Reader, предназначенного для просмотра файлов в формате *.pdf. Слева версия для ПК на базе Windows, справа Android

Технические особенности смартфонов, влияющие на работу приложений

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

К особенностям смартфонов, требующим особого внимания при разработке приложений, относятся:

  • Ограниченный доступный объем памяти, как оперативной, так и используемой для хранения пользовательских приложений.
  • Сравнительно невысокая скорость обработки информации.
  • Слабый графический процессор.
  • Ограниченный срок работы устройства от батареи.
  • Небольшой экран.
  • С другой стороны, смартфоны обладают возможностями, отличными от традиционных для обычных компьютеров:

  • Сенсорный экран. Здесь отличие только от традиционных ноутбуков, десктопов и нетбуков, т.к. планшеты и ультрабуки тоже обладают возможностями сенсорного ввода.
  • Наличие датчиков gps, гироскопа, акселерометра и других, позволяющих использовать изменение положения устройства в пространстве.
  • Небольшой размер позволяет легко переключаться между горизонтальным и вертикальным расположением экрана в отличие от устройств с физической клавиатурой.
  • Особенности портирования приложений на мобильные платформы

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

    Разработка мобильного приложения "с нуля" состоит из нескольких важных этапов:

  • Постановка задачи.
  • Создание прототипа (бумажного или приложения-заглушки).
  • Определение системных требований и выбор инструмента.
  • Работа над графикой и дизайном приложения и разработка приложения (эти процессы обычно выполняются разными людьми и идут параллельно).
  • Тестирование и оптимизация.
  • Подготовка и публикация приложения в магазине.
  • Сбор аналитики и получение обратной связи.
  • Исправление недочетов и выпуск обновлений.
  • При портировании приложения на Android есть некоторые отличия от описанного процесса. Задача уже поставлена, есть работающий код, который хотелось бы использовать с минимальными изменениями. Готовое приложение нужно будет готовить к публикации и т.д. абсолютно таким же образом. Но на остальных этапах есть значительные отличия:

  • Интерфейс, графические элементы и дизайн необходимо продумать на этапе прототипирования и переделать подходящим образом.
  • Необходимо выбрать наиболее удобный инструмент разработки.
  • При разработке нужно будет подключить работающий код портируемого приложения.
  • В процессе тестирования и оптимизации возможны значительные изменения в коде исходного приложения (например, при работе с графикой), к этому надо быть готовым.
  • При выборе платформы разработки приложения необходимо сначала определиться с ее типом. Существуют три варианта: родная (нативная), Web и гибридная.

    Родные (нативные) платформы позволяют создавать приложения, которые замечательно выглядят и воспринимаются, а также обеспечивают сравнительно высокую производительность. Оборотная сторона разработки родных приложений ? для каждой платформы нужно писать свой код. Портирование нативных приложений наиболее сложное.

    Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности. Портирование не представляет особых сложностей.

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

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

    Особенности разработки интерфейсов с учетом возможностей смартфона

    Особенности разработки интерфейсов для смартфонов изложены подробно в лекции 3 "Особенности интерфейсов для смартфонов. Принципы юзабилити". Здесь мы приведем некоторые уточнения, касающиеся особенностей переноса интерфейсов приложений на смартфоны.

    Особенности визуального дизайна интерфейсов смартфонов

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

  • Элементы управления на экране должны бросаться в глаза. Смартфоны используются людьми, которые стоят, ходят, находятся в разнообразном оживленном окружении, так что элементы управления на экране должны быть гораздо более очевидными, чем их аналоги в настольных приложениях.
  • Рекомендуется располагать наиболее важное в центре экрана.
  • Используйте минимальное количество визуальных элементов. Из исходного приложения необходимо убрать все лишнее, сгруппировать по функционалу, сделать дополнительные окна.
  • Дизайн приложения должен быть максимально простым и понятным.
  • Создавайте визуальные якоря. Для решения задачи пользователю смартфона часто приходится пройти через несколько экранов. Нужно применять визуальные якоря, помогающие пользователям ориентироваться (рис 7.2).(рис 7.2) Клиент социальной сети «Вконтакте» имеет визуальный якорь – верхнюю панель, при взгляде на которую пользователь видит, где он находится и что может сделать
  • Элементы управления следует делать достаточно крупными, чтобы их можно было активировать пальцами. Минимальный размер – 7-10 мм.
  • Используйте крупные шрифты без засечек.
  • Четко указывайте наличие дополнительной информации за пределами экрана. Многие люди не привыкли к идее маленького экрана, требующего прокрутки информации. Если данных больше, чем помещается на экране, не забудьте подчеркнуть это обстоятельство. В идеале дайте пользователю понять, как получить доступ к дополнительным данным.
  • Если предполагается перевод интерфейса на другие языки, необходимо учитывать, что в некоторых языках слова длиннее, чем в других. Необходимо выделять элементам, содержащим текст, достаточное количество драгоценного места на экране.
  • Учитывайте мобильный контекст использования. Люди имеют обыкновение пользоваться смартфонами на ходу, стоя, в общественном транспорте и т.д. Интерфейс должен быть таким, чтобы приложением было удобно пользоваться в разных ситуациях.
  • Обязательно учитывайте официальные рекомендации разработчика платформы.
  • Рекомендации по дизайну приложений для Android

    Существует набор официальных рекомендаций от компании Google по разработке дизайна приложений для Android (рис 7.3). Информацию можно найти по ссылке. При портировании приложения на Android необходимо обязательно придерживаться этих рекомендаций.

    (рис 7.3) Примеры оформления приложений согласно официальным рекомендациям

    Использование технических возможностей смартфонов при проектировании интерфейсов

    Некоторые технические особенности смартфона влияют на пользовательский интерфейс. Прежде всего, мы говорим о сенсорных экранах. Практически все смартфоны на Android снабжены сенсорными экранами, реагирующими на нажатие пальца. Большинство современных смартфонов поддерживает технологию мультитач (мультикасание) – функцию сенсорных систем ввода, осуществляющую одновременное определение координат двух и более точек касания. Мультикасание используется в жестовых интерфейсах, например, для изменения масштаба изображения (рис 7.4). Кроме того, экраны мультикасания позволяют работать с устройством одновременно нескольким пользователям.

    (рис 7.4) Наиболее известные мультитач-жесты

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

    (рис 7.5) Возможные положения смартфона в пространстве

    Поэтому следует уделить особое внимание расположению элементов управления. Области, прикосновение к которым вызывает серьезные последствия (уход с экрана, удаление данных и т.п.), не должны быть доступны для случайного нажатия. Рекомендуется их располагать вверху. В то же время часто используемые элементы лучше всего размещать внизу. При этом не следует назначать одному из нижних углов наиболее используемое действие. От четверти до трети пользователей часто или даже всегда держат телефон в левой руке. Считая, что телефон будут держать исключительно в правой, вы рискуете получить негативные отзывы и потерять часть клиентов (рис 7.6).

    (рис 7.6) Пользователь может держать смартфон как в правой, так и в левой руке

    Джон Бергман (John Bergman) — исполнительный директор компании Guild Software Inc, опытный разработчик, дизайнер и руководитель онлайн-игр в своей статье "Реализация сенсорного интерфейса в новых и существующих играх" сообщает следующее.

    Раньше интерфейс всех без исключения видеоигр и компьютерных игр имел одну важную общую черту: когда пользователь нажимал на клавишу, он на ощупь чувствовал нажатие клавиши; это позволяло немедленно узнать, что команда пользователя была дана, даже до получения звуковой и визуальной реакции игры. Одна из серьезнейших проблем создания игр с сенсорным управлением заключается в том, что эта проверенная, удобная, привычная и безотказная механическая связь заменяется гладким стеклом, не обеспечивающим никакой тактильной обратной связи. Это лишает игрока уверенности в своих действиях. Если опираться только на визуальную и акустическую обратную связь, увеличивается задержка между каждым действием и реакцией на него; возникает запаздывание, значительно затрудняющее управление в некоторых типах игр.

    Есть несколько способов разрешения сложившейся ситуации. Например, на некоторых устройствах можно использовать вибрацию в качестве альтернативы тактильной обратной связи. Вибрацию поддерживают почти все телефоны и ряд планшетов. Такая обратная связь удобна при работе с меню и другими элементами интерфейса; она обеспечивает "ощущение" подтверждения того или иного действия без звука (пользователь может играть в тихом общественном месте). Но это решение ни в коем случае нельзя считать панацеей: вибрация поддерживается не всеми устройствами, уровень обратной связи ограничивается слабой вибрацией, да и задержки существенно больше, чем при нажатии обычных кнопок.

    Ряд преимуществ есть и у механики "длительного касания", когда пользователь касается и удерживает нажатой определенную область экрана до какого-либо события. Это может быть, например, контекстное меню или дополнительные параметры. Как правило, длительные касания не очень интуитивны, поэтому лучше оставить их для второстепенных функций игры. Впрочем, они могут быть удобны для опытных игроков; с помощью длительных касаний можно фиксировать дополнительное подтверждение для определенных типов игр. Длительное касание должно сопровождаться правильно подобранным использованием вибрационной, акустической и визуальной обратной связи, чтобы сообщить пользователю об успешности выполненной операции (особенно для таких действий как перетаскивание объектов).

    Влияние размера экрана на разработку приложения

    Устройства Android различаются не только физическими размерами, но и разрешением экрана. В руководстве для разработчиков Android приводится следующие определения:

  • Разрешение – общее число физических пикселей на экране.
  • Экранная плотность – количество пикселей в физической области экрана, как правило, называют DPI (точек на дюйм).
  • Плотностно-независимая точка (DP) – это виртуальная единица-пиксел, которая используется при определении интерфейса макета, чтобы сделать размеры макета или его положения независимым от плотности образом. Плотностно-независимая точка эквивалентна одному физическому пикселю на 160 DPI, которая является базовой плотностью и берется в системе как "средняя" плотность экрана. Во время работы система в фоновом режиме обрабатывает любое масштабирование единиц DP по мере необходимости, исходя из фактической плотности использованного экрана. Преобразование единиц DP в пиксели выполняется следующим образом: пиксель = DP * (DPI/ 160).
  • Для упрощения ситуации устройства Android по физическим размерам подразделяются на два типа – телефонный (разрешение меньше 600 DP) и планшетный (разрешение больше или равно 600 DP) (рис 7.7).

    (рис 7.7) Варианты размеров устройств Android, выраженные в плотностно-независимых точках

    Android делит экран плотности на пять основных плотностей:LDPI (низкий), MDPI (средний), HDPI (высокий), XHDPI (очень высокий) и XXHDPI (очень-очень высокий). Это важно, поскольку разработчику необходимо предоставить все графические ресурсы (растровые изображения) в наборах различной плотности. Для любого смартфонного приложения необходимо иметь хотя бы MDPI и HDPI наборы.

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

    Расстояние между элементами управления не должно быть меньше 8DP.

    (рис 7.8) Минимальные габариты элементов управления

    Портирование графики, работа с файловой системой и сетью

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

    Разработка интерфейсов для разных экранов

    Почти каждое приложение должно обеспечивать поддержку конкретных конфигураций устройств. Необходимо подключить различные варианты компоновки интерфейсов для различных плотностей экранов (рис 7.9). Во время выполнения программы Android обнаруживает текущую конфигурацию устройства и загружает соответствующие ресурсы для вашего приложения.

    (рис 7.9) Компоненты приложения расположены по-разному на различных устройствах

    Для указания альтернативных конфигураций необходимо:

  • Создайте новый каталог в res/ с именем в виде <resources_name>-<config_qualifier>, где
  • <resources_name> – это имя каталога соответствующих ресурсов по умолчанию (для компоновки используется layout);
  • <qualifier> – имя, определяющее индивидуальную конфигурацию устройств, для которых используются соответствующие ресурсы (ldrtl для языков, читающихся справа налево, ldltr для языков, читающихся слева направо).
  • Можно добавить больше одного квалификатора, отделив каждый новый дефисом.
  • Сохраните соответствующие файлы в этот новый каталог. Файлы ресурсов должны быть названы точно так же, как файлы в ресурсах по умолчанию (см. листинг 1, 2).
  •  res/
        layout/   
            main.xml  (по умолчанию)
        layout-ar/  
            main.xml  (для арабских стран)
        layout-ldrtl/  
            main.xml  (для любого языка, предусматривающего чтение справа налево,
                      кроме арабского, потому что соответствующий квалификатор 
                      имеет более высокий приоритет)
    
    res/
        drawable/   
            icon.png
            background.png    
        drawable-hdpi/  
            icon.png
            background.png  
     

    Листинг 2. Пример сформированного каталога с ресурсами (drawable).

    Квалификатор hdpi указывает, что ресурсы в этой директории рассчитаны для устройств с экраном высокой плотности. Изображения в каждом из этих каталогов рассчитаны на различные типы экранов, однако имена файлов совпадают. Таким образом, ID ресурса, который использован для ссылки на Icon.png или background.png один и тот же. При этом Android выбирает наиболее подходящую для конкретного экрана версию каждого ресурса.

    Более подробные таблицы квалификаторов смотри здесь.

    Работа с файловой системой и сетью

    Система Android устроена таким образом, что одно приложение не может получить доступ к файлам другого. Это сделано в целях безопасности. Однако подобное ограничение не распространяется на файлы, расположенные на SD-карте. Многие модели телефонов имеют возможность подключения внешней карты через встроенный кардридер, что подразумевает возможность ее замены. Поэтому при разработке приложений следует придерживаться следующего правила. Все критичные для работы приложения файлы записываются в память устройства, а дополнительные, особенно имеющие большой объем, лучше выносить на карту памяти. Это позволит выделить и защитить функционал приложения, сэкономив место в памяти устройства.

    Если приложению необходим доступ к сети, необходимо помнить следующее:

  • Чаще всего wi-fi бесплатен или дешев, а мобильный интернет стоит дорого. Приложение наверняка будет нуждаться в обновлениях, поэтому стоит предусмотреть установку только через wi-fi. Если же приложение нуждается в периодической (но не обязательно!) синхронизации, можно сделать в настройках опцию "Синхронизировать только через wi-fi", чтобы пользователь мог настроить программу так, как ему удобно.
  • Работа с сетевыми сервисами требует повышенного расхода энергии, что отрицательно сказывается на времени работы устройства. Поэтому следует жестко контролировать подключения и отключения от сети, время работы сервисов.
  • Необходимо думать о безопасности передачи информации. Следует использовать защищенные сетевые протоколы (например, HTTPS) для передачи пользовательских паролей и другой конфиденциальной информации.
  • Обзор программных средств. Инструменты Intel. Intel XDK

    Существуют специальные программные средства (среды программирования), облегчающие портирование приложений на разные платформы. Рассмотрим некоторые из них, позволяющие получать приложения для Android.

    Marmalade Juice – инструмент кроссплатформенной разработки

    Marmalade SDK — кроссплатформенное SDK от Ideaworks3D Limited. Представляет собой набор библиотек, образцов, инструментов и документации, необходимых для разработки, тестирования и развертывания приложений для мобильных устройств.

    Основополагающей концепцией Marmalade SDK является однократное написание программы и компилирование ее на все поддерживаемые платформы, без необходимости программирования на различных языках программирования и использования различных API для каждой платформы.

    Процесс разработки в Marmalade чрезвычайно прост. Код пишется на С++ или с использованием HTML5, может содержать скриптовые вставки на Lua. При сборке проекта необходимо указать платформы, для которых она осуществляется, и все остальное среда делает автоматически.

    Многие игры, прочно обосновавшиеся в топах магазинов приложений, от казуальных "Cut the Rope" и "Plants vs. Zombies" до крутых "Call of Duty" и "Need for Speed" были разработаны с использованием Marmalade.

    Marmalade поддерживает различные мобильные платформы:

  • iOS версии 4.3 и выше.
  • Android версии 2.1 и выше (в том числе х86).
  • Windows Phone 8.
  • Tizen 2.2 и др.
  • А так же десктопные платформы:

  • Windows XP и выше.
  • OSX 10.6 и выше.
  • Для использования необходимо приобрести лицензию. Есть несколько вариантов лицензии, самая дешевая 15$ за месяц использования (бесплатный пробный период 30 дней). Marmalade SDK выгодно использовать при профессиональной разработке сразу под несколько платформ.

    Android NDK

    Android NDK – это набор инструментов, позволяющих реализовать части вашего приложения с использованием языков C и C + +. Он может пригодиться, если вы хотите повторно использовать существующие библиотеки кода, написанные на этих языках.

    NDK — великолепный инструмент, позволяющий сочетать мощь кода x86 с графическим интерфейсом приложения-оболочки Android. Этот инструмент можно использовать для повышения производительности некоторых приложений, но необходимо соблюдать меры предосторожности, поскольку желаемого результата можно добиться не всегда.

    Основная цель NDK заключается в предоставлении разработчикам следующих возможностей:

  • Компиляция встроенной библиотеки C/C++ для использования (при вызове кодом Java) в пакете Android.
  • Перекомпиляция встроенных библиотек ARM для x86 (микроархитектура Intel® Atom™) с возможностью портирования при необходимости.
  • Перед использованием NDK необходимо взвесить преимущества и недостатки его использования. Использование библиотек С и С++ обычно не дает заметного улучшения производительности, однако сложность разработки всегда увеличивается в разы. Не стоит использовать Android NDK только потому, что вы хорошо знаете С/С++ и предпочитаете программировать на этих языках.

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

    Intel® C++ Compiler для Android

    Intel® C++ Compiler для Android представляет собой компилятор для создания приложений C и C + +, ориентированные на устройства Android на базе Intel Atom. Он может быть использован совместно с набором библиотек и инструментов Android NDK.

    Возможности Intel® C++ Compiler для Android:

  • Разработка приложений для Android мобильных устройств на базе процессоров Intel.
  • Совместимость с Android NDK.
  • Совместимость с GNU C++ в Android NDK для поддержки нескольких архитектур.
  • Разработка на Windows, OS X или Linux.
  • Поддержка Eclipse и командной строки.
  • Простая и быстрая загрузка и установка.
  • Поддержка Android Jelly Bean и Android KitKat.
  • Приложения с использованием Intel® C++ Compiler можно разрабатывать одним из двух способов:

  • Подключить инструменты Intel® C++ Compiler к Android NDK.
  • Использовать Intel® C++ Compiler в качестве автономного компилятора.
  • Intel® Integrated Native Developer Experience beta

    Intel® Integrated Native Developer Experience (Intel® INDE) – это бета-версия кросс-платформенного комплекта разработчика от Intel для быстрого и легкого создания приложений для Android и Windows. INDE предоставляет полный и последовательный набор C++/Java инструментов, библиотек и примеров для настройки среды, создания кода, компиляции, отладки и анализа на устройства на базе процессоров Intel® и некоторых возможностей Android-устройств на базе ARM. Ранее была известна под именем Beacon Mountain.

    Возможности Intel® INDE:

  • Медиа: легко добавить видео и аудио расширения, которые работают на актуальных версиях популярных смартфонов и планшетов. Intel® INDE Media Pack содержит примеры приложений, позволяющих:
  • Работать с камерой и осуществлять захват содержимого экрана.
  • Редактировать видео.
  • Работать с потоковым видео.
  • Поддерживать устройства Android на базе архитектур Intel и ARM.
  • Потоки: эффективная реализация параллелизма с помощью Intel® Threading Building Blocks (Intel® TBB). Intel® TBB является великолепной библиотекой шаблонов C++ и предназначена для разработки высокопроизводительных и масштабируемых приложений. Приложения, использующие параллелизм, могут работать на устройствах Android с версией не меньше 4.3 и клиентских версиях Microsoft Windows 7-8.1.
  • Компиляция: используется Intel® C++ Compiler для Android. Компилятор исходного кода совместим с GCC, что позволяет легко использовать их совместно. Некоторые подробности про работу с компилятором приведены выше.
  • Построение кода: максимальная производительность графики достигается посредством использования Compute Code Builder. Этот инструмент помогает создавать, компилировать, отлаживать и анализировать такие API как Google Renderscript и OpenCL™. Compute Code Builder можно использовать в автономном режиме или интегрировать с Microsoft Visual Studio или Eclipse. Разработанные таким образом приложения могут работать на устройствах Android с версией не меньше 4.3 и клиентских версиях Microsoft Windows 7-8.1.
  • Анализ и отладка: эти инструменты можно использовать:
  • В режиме реального времени для анализа исполнения кода, использования CPU/GPU, выполнения различных задач.
  • Для анализа и отладки захваченных кадров.
  • В пакет входят the Intel® Graphics Performance Analyzer (Intel® GPA) System Analyzer, Intel® GPA Platform Analyzer, Intel® GPA Frame Analyzer и Intel® Frame Debugger. Средства доступны для Microsoft Windows 7-8.1 и Android 4.4.
  • Общие настройки среды: можно быстро настроить среду под себя, потратив на это не часы, а минуты. Можно выбрать часть инструментов и установить только их. Может работать с Google Android SDK (включая Eclipse), плагином Microsoft Visual Studio, Android NDK и другими средствами.
  • Intel XDK

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

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

    Среда Intel XDK позволяет разрабатывать приложения, используя следующие технологии:

  • Язык гипертекстовой разметки HTML5.
  • Каскадные таблицы стилей CSS3.
  • Встраиваемый язык программирования JavaScript.
  • Более полный обзор среды приведен в первой части данного курса. В лабораторной работе рассмотрены некоторые практические аспекты работы с Intel XDK.

    Страницы:

    Общие принципы портирования приложений

    Презентацию к лекции Вы можете скачать здесь.

    Портирование приложений

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

    Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с программой. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.

    Необходимость в портировании возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.

    Международные стандарты значительно упрощают портирование. Они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1), сводится к перекомпиляции программы на новой платформе. Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.

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

    Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера, игровой приставки или мобильного устройства) на другую платформу.

    На рис 7.1 представлен пример портированной программы.

    (рис 7.1) Главное окно популярного приложения Adobe Reader, предназначенного для просмотра файлов в формате *.pdf. Слева версия для ПК на базе Windows, справа Android

    Технические особенности смартфонов, влияющие на работу приложений

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

    К особенностям смартфонов, требующим особого внимания при разработке приложений, относятся:

  • Ограниченный доступный объем памяти, как оперативной, так и используемой для хранения пользовательских приложений.
  • Сравнительно невысокая скорость обработки информации.
  • Слабый графический процессор.
  • Ограниченный срок работы устройства от батареи.
  • Небольшой экран.
  • С другой стороны, смартфоны обладают возможностями, отличными от традиционных для обычных компьютеров:

  • Сенсорный экран. Здесь отличие только от традиционных ноутбуков, десктопов и нетбуков, т.к. планшеты и ультрабуки тоже обладают возможностями сенсорного ввода.
  • Наличие датчиков gps, гироскопа, акселерометра и других, позволяющих использовать изменение положения устройства в пространстве.
  • Небольшой размер позволяет легко переключаться между горизонтальным и вертикальным расположением экрана в отличие от устройств с физической клавиатурой.
  • Особенности портирования приложений на мобильные платформы

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

    Разработка мобильного приложения "с нуля" состоит из нескольких важных этапов:

  • Постановка задачи.
  • Создание прототипа (бумажного или приложения-заглушки).
  • Определение системных требований и выбор инструмента.
  • Работа над графикой и дизайном приложения и разработка приложения (эти процессы обычно выполняются разными людьми и идут параллельно).
  • Тестирование и оптимизация.
  • Подготовка и публикация приложения в магазине.
  • Сбор аналитики и получение обратной связи.
  • Исправление недочетов и выпуск обновлений.
  • При портировании приложения на Android есть некоторые отличия от описанного процесса. Задача уже поставлена, есть работающий код, который хотелось бы использовать с минимальными изменениями. Готовое приложение нужно будет готовить к публикации и т.д. абсолютно таким же образом. Но на остальных этапах есть значительные отличия:

  • Интерфейс, графические элементы и дизайн необходимо продумать на этапе прототипирования и переделать подходящим образом.
  • Необходимо выбрать наиболее удобный инструмент разработки.
  • При разработке нужно будет подключить работающий код портируемого приложения.
  • В процессе тестирования и оптимизации возможны значительные изменения в коде исходного приложения (например, при работе с графикой), к этому надо быть готовым.
  • При выборе платформы разработки приложения необходимо сначала определиться с ее типом. Существуют три варианта: родная (нативная), Web и гибридная.

    Родные (нативные) платформы позволяют создавать приложения, которые замечательно выглядят и воспринимаются, а также обеспечивают сравнительно высокую производительность. Оборотная сторона разработки родных приложений ? для каждой платформы нужно писать свой код. Портирование нативных приложений наиболее сложное.

    Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности. Портирование не представляет особых сложностей.

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

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

    Особенности разработки интерфейсов с учетом возможностей смартфона

    Особенности разработки интерфейсов для смартфонов изложены подробно в лекции 3 "Особенности интерфейсов для смартфонов. Принципы юзабилити". Здесь мы приведем некоторые уточнения, касающиеся особенностей переноса интерфейсов приложений на смартфоны.

    Особенности визуального дизайна интерфейсов смартфонов

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

  • Элементы управления на экране должны бросаться в глаза. Смартфоны используются людьми, которые стоят, ходят, находятся в разнообразном оживленном окружении, так что элементы управления на экране должны быть гораздо более очевидными, чем их аналоги в настольных приложениях.
  • Рекомендуется располагать наиболее важное в центре экрана.
  • Используйте минимальное количество визуальных элементов. Из исходного приложения необходимо убрать все лишнее, сгруппировать по функционалу, сделать дополнительные окна.
  • Дизайн приложения должен быть максимально простым и понятным.
  • Создавайте визуальные якоря. Для решения задачи пользователю смартфона часто приходится пройти через несколько экранов. Нужно применять визуальные якоря, помогающие пользователям ориентироваться (рис 7.2).(рис 7.2) Клиент социальной сети «Вконтакте» имеет визуальный якорь – верхнюю панель, при взгляде на которую пользователь видит, где он находится и что может сделать
  • Элементы управления следует делать достаточно крупными, чтобы их можно было активировать пальцами. Минимальный размер – 7-10 мм.
  • Используйте крупные шрифты без засечек.
  • Четко указывайте наличие дополнительной информации за пределами экрана. Многие люди не привыкли к идее маленького экрана, требующего прокрутки информации. Если данных больше, чем помещается на экране, не забудьте подчеркнуть это обстоятельство. В идеале дайте пользователю понять, как получить доступ к дополнительным данным.
  • Если предполагается перевод интерфейса на другие языки, необходимо учитывать, что в некоторых языках слова длиннее, чем в других. Необходимо выделять элементам, содержащим текст, достаточное количество драгоценного места на экране.
  • Учитывайте мобильный контекст использования. Люди имеют обыкновение пользоваться смартфонами на ходу, стоя, в общественном транспорте и т.д. Интерфейс должен быть таким, чтобы приложением было удобно пользоваться в разных ситуациях.
  • Обязательно учитывайте официальные рекомендации разработчика платформы.
  • Рекомендации по дизайну приложений для Android

    Существует набор официальных рекомендаций от компании Google по разработке дизайна приложений для Android (рис 7.3). Информацию можно найти по ссылке. При портировании приложения на Android необходимо обязательно придерживаться этих рекомендаций.

    (рис 7.3) Примеры оформления приложений согласно официальным рекомендациям

    Использование технических возможностей смартфонов при проектировании интерфейсов

    Некоторые технические особенности смартфона влияют на пользовательский интерфейс. Прежде всего, мы говорим о сенсорных экранах. Практически все смартфоны на Android снабжены сенсорными экранами, реагирующими на нажатие пальца. Большинство современных смартфонов поддерживает технологию мультитач (мультикасание) – функцию сенсорных систем ввода, осуществляющую одновременное определение координат двух и более точек касания. Мультикасание используется в жестовых интерфейсах, например, для изменения масштаба изображения (рис 7.4). Кроме того, экраны мультикасания позволяют работать с устройством одновременно нескольким пользователям.

    (рис 7.4) Наиболее известные мультитач-жесты

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

    (рис 7.5) Возможные положения смартфона в пространстве

    Поэтому следует уделить особое внимание расположению элементов управления. Области, прикосновение к которым вызывает серьезные последствия (уход с экрана, удаление данных и т.п.), не должны быть доступны для случайного нажатия. Рекомендуется их располагать вверху. В то же время часто используемые элементы лучше всего размещать внизу. При этом не следует назначать одному из нижних углов наиболее используемое действие. От четверти до трети пользователей часто или даже всегда держат телефон в левой руке. Считая, что телефон будут держать исключительно в правой, вы рискуете получить негативные отзывы и потерять часть клиентов (рис 7.6).

    (рис 7.6) Пользователь может держать смартфон как в правой, так и в левой руке

    Джон Бергман (John Bergman) — исполнительный директор компании Guild Software Inc, опытный разработчик, дизайнер и руководитель онлайн-игр в своей статье "Реализация сенсорного интерфейса в новых и существующих играх" сообщает следующее.

    Раньше интерфейс всех без исключения видеоигр и компьютерных игр имел одну важную общую черту: когда пользователь нажимал на клавишу, он на ощупь чувствовал нажатие клавиши; это позволяло немедленно узнать, что команда пользователя была дана, даже до получения звуковой и визуальной реакции игры. Одна из серьезнейших проблем создания игр с сенсорным управлением заключается в том, что эта проверенная, удобная, привычная и безотказная механическая связь заменяется гладким стеклом, не обеспечивающим никакой тактильной обратной связи. Это лишает игрока уверенности в своих действиях. Если опираться только на визуальную и акустическую обратную связь, увеличивается задержка между каждым действием и реакцией на него; возникает запаздывание, значительно затрудняющее управление в некоторых типах игр.

    Есть несколько способов разрешения сложившейся ситуации. Например, на некоторых устройствах можно использовать вибрацию в качестве альтернативы тактильной обратной связи. Вибрацию поддерживают почти все телефоны и ряд планшетов. Такая обратная связь удобна при работе с меню и другими элементами интерфейса; она обеспечивает "ощущение" подтверждения того или иного действия без звука (пользователь может играть в тихом общественном месте). Но это решение ни в коем случае нельзя считать панацеей: вибрация поддерживается не всеми устройствами, уровень обратной связи ограничивается слабой вибрацией, да и задержки существенно больше, чем при нажатии обычных кнопок.

    Ряд преимуществ есть и у механики "длительного касания", когда пользователь касается и удерживает нажатой определенную область экрана до какого-либо события. Это может быть, например, контекстное меню или дополнительные параметры. Как правило, длительные касания не очень интуитивны, поэтому лучше оставить их для второстепенных функций игры. Впрочем, они могут быть удобны для опытных игроков; с помощью длительных касаний можно фиксировать дополнительное подтверждение для определенных типов игр. Длительное касание должно сопровождаться правильно подобранным использованием вибрационной, акустической и визуальной обратной связи, чтобы сообщить пользователю об успешности выполненной операции (особенно для таких действий как перетаскивание объектов).

    Влияние размера экрана на разработку приложения

    Устройства Android различаются не только физическими размерами, но и разрешением экрана. В руководстве для разработчиков Android приводится следующие определения:

  • Разрешение – общее число физических пикселей на экране.
  • Экранная плотность – количество пикселей в физической области экрана, как правило, называют DPI (точек на дюйм).
  • Плотностно-независимая точка (DP) – это виртуальная единица-пиксел, которая используется при определении интерфейса макета, чтобы сделать размеры макета или его положения независимым от плотности образом. Плотностно-независимая точка эквивалентна одному физическому пикселю на 160 DPI, которая является базовой плотностью и берется в системе как "средняя" плотность экрана. Во время работы система в фоновом режиме обрабатывает любое масштабирование единиц DP по мере необходимости, исходя из фактической плотности использованного экрана. Преобразование единиц DP в пиксели выполняется следующим образом: пиксель = DP * (DPI/ 160).
  • Для упрощения ситуации устройства Android по физическим размерам подразделяются на два типа – телефонный (разрешение меньше 600 DP) и планшетный (разрешение больше или равно 600 DP) (рис 7.7).

    (рис 7.7) Варианты размеров устройств Android, выраженные в плотностно-независимых точках

    Android делит экран плотности на пять основных плотностей:LDPI (низкий), MDPI (средний), HDPI (высокий), XHDPI (очень высокий) и XXHDPI (очень-очень высокий). Это важно, поскольку разработчику необходимо предоставить все графические ресурсы (растровые изображения) в наборах различной плотности. Для любого смартфонного приложения необходимо иметь хотя бы MDPI и HDPI наборы.

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

    Расстояние между элементами управления не должно быть меньше 8DP.

    (рис 7.8) Минимальные габариты элементов управления

    Портирование графики, работа с файловой системой и сетью

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

    Разработка интерфейсов для разных экранов

    Почти каждое приложение должно обеспечивать поддержку конкретных конфигураций устройств. Необходимо подключить различные варианты компоновки интерфейсов для различных плотностей экранов (рис 7.9). Во время выполнения программы Android обнаруживает текущую конфигурацию устройства и загружает соответствующие ресурсы для вашего приложения.

    (рис 7.9) Компоненты приложения расположены по-разному на различных устройствах

    Для указания альтернативных конфигураций необходимо:

  • Создайте новый каталог в res/ с именем в виде <resources_name>-<config_qualifier>, где
  • <resources_name> – это имя каталога соответствующих ресурсов по умолчанию (для компоновки используется layout);
  • <qualifier> – имя, определяющее индивидуальную конфигурацию устройств, для которых используются соответствующие ресурсы (ldrtl для языков, читающихся справа налево, ldltr для языков, читающихся слева направо).
  • Можно добавить больше одного квалификатора, отделив каждый новый дефисом.
  • Сохраните соответствующие файлы в этот новый каталог. Файлы ресурсов должны быть названы точно так же, как файлы в ресурсах по умолчанию (см. листинг 1, 2).
  •  res/
        layout/   
            main.xml  (по умолчанию)
        layout-ar/  
            main.xml  (для арабских стран)
        layout-ldrtl/  
            main.xml  (для любого языка, предусматривающего чтение справа налево,
                      кроме арабского, потому что соответствующий квалификатор 
                      имеет более высокий приоритет)
    
    res/
        drawable/   
            icon.png
            background.png    
        drawable-hdpi/  
            icon.png
            background.png  
     

    Листинг 2. Пример сформированного каталога с ресурсами (drawable).

    Квалификатор hdpi указывает, что ресурсы в этой директории рассчитаны для устройств с экраном высокой плотности. Изображения в каждом из этих каталогов рассчитаны на различные типы экранов, однако имена файлов совпадают. Таким образом, ID ресурса, который использован для ссылки на Icon.png или background.png один и тот же. При этом Android выбирает наиболее подходящую для конкретного экрана версию каждого ресурса.

    Более подробные таблицы квалификаторов смотри здесь.

    Работа с файловой системой и сетью

    Система Android устроена таким образом, что одно приложение не может получить доступ к файлам другого. Это сделано в целях безопасности. Однако подобное ограничение не распространяется на файлы, расположенные на SD-карте. Многие модели телефонов имеют возможность подключения внешней карты через встроенный кардридер, что подразумевает возможность ее замены. Поэтому при разработке приложений следует придерживаться следующего правила. Все критичные для работы приложения файлы записываются в память устройства, а дополнительные, особенно имеющие большой объем, лучше выносить на карту памяти. Это позволит выделить и защитить функционал приложения, сэкономив место в памяти устройства.

    Если приложению необходим доступ к сети, необходимо помнить следующее:

  • Чаще всего wi-fi бесплатен или дешев, а мобильный интернет стоит дорого. Приложение наверняка будет нуждаться в обновлениях, поэтому стоит предусмотреть установку только через wi-fi. Если же приложение нуждается в периодической (но не обязательно!) синхронизации, можно сделать в настройках опцию "Синхронизировать только через wi-fi", чтобы пользователь мог настроить программу так, как ему удобно.
  • Работа с сетевыми сервисами требует повышенного расхода энергии, что отрицательно сказывается на времени работы устройства. Поэтому следует жестко контролировать подключения и отключения от сети, время работы сервисов.
  • Необходимо думать о безопасности передачи информации. Следует использовать защищенные сетевые протоколы (например, HTTPS) для передачи пользовательских паролей и другой конфиденциальной информации.
  • Обзор программных средств. Инструменты Intel. Intel XDK

    Существуют специальные программные средства (среды программирования), облегчающие портирование приложений на разные платформы. Рассмотрим некоторые из них, позволяющие получать приложения для Android.

    Marmalade Juice – инструмент кроссплатформенной разработки

    Marmalade SDK — кроссплатформенное SDK от Ideaworks3D Limited. Представляет собой набор библиотек, образцов, инструментов и документации, необходимых для разработки, тестирования и развертывания приложений для мобильных устройств.

    Основополагающей концепцией Marmalade SDK является однократное написание программы и компилирование ее на все поддерживаемые платформы, без необходимости программирования на различных языках программирования и использования различных API для каждой платформы.

    Процесс разработки в Marmalade чрезвычайно прост. Код пишется на С++ или с использованием HTML5, может содержать скриптовые вставки на Lua. При сборке проекта необходимо указать платформы, для которых она осуществляется, и все остальное среда делает автоматически.

    Многие игры, прочно обосновавшиеся в топах магазинов приложений, от казуальных "Cut the Rope" и "Plants vs. Zombies" до крутых "Call of Duty" и "Need for Speed" были разработаны с использованием Marmalade.

    Marmalade поддерживает различные мобильные платформы:

  • iOS версии 4.3 и выше.
  • Android версии 2.1 и выше (в том числе х86).
  • Windows Phone 8.
  • Tizen 2.2 и др.
  • А так же десктопные платформы:

  • Windows XP и выше.
  • OSX 10.6 и выше.
  • Для использования необходимо приобрести лицензию. Есть несколько вариантов лицензии, самая дешевая 15$ за месяц использования (бесплатный пробный период 30 дней). Marmalade SDK выгодно использовать при профессиональной разработке сразу под несколько платформ.

    Android NDK

    Android NDK – это набор инструментов, позволяющих реализовать части вашего приложения с использованием языков C и C + +. Он может пригодиться, если вы хотите повторно использовать существующие библиотеки кода, написанные на этих языках.

    NDK — великолепный инструмент, позволяющий сочетать мощь кода x86 с графическим интерфейсом приложения-оболочки Android. Этот инструмент можно использовать для повышения производительности некоторых приложений, но необходимо соблюдать меры предосторожности, поскольку желаемого результата можно добиться не всегда.

    Основная цель NDK заключается в предоставлении разработчикам следующих возможностей:

  • Компиляция встроенной библиотеки C/C++ для использования (при вызове кодом Java) в пакете Android.
  • Перекомпиляция встроенных библиотек ARM для x86 (микроархитектура Intel® Atom™) с возможностью портирования при необходимости.
  • Перед использованием NDK необходимо взвесить преимущества и недостатки его использования. Использование библиотек С и С++ обычно не дает заметного улучшения производительности, однако сложность разработки всегда увеличивается в разы. Не стоит использовать Android NDK только потому, что вы хорошо знаете С/С++ и предпочитаете программировать на этих языках.

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

    Intel® C++ Compiler для Android

    Intel® C++ Compiler для Android представляет собой компилятор для создания приложений C и C + +, ориентированные на устройства Android на базе Intel Atom. Он может быть использован совместно с набором библиотек и инструментов Android NDK.

    Возможности Intel® C++ Compiler для Android:

  • Разработка приложений для Android мобильных устройств на базе процессоров Intel.
  • Совместимость с Android NDK.
  • Совместимость с GNU C++ в Android NDK для поддержки нескольких архитектур.
  • Разработка на Windows, OS X или Linux.
  • Поддержка Eclipse и командной строки.
  • Простая и быстрая загрузка и установка.
  • Поддержка Android Jelly Bean и Android KitKat.
  • Приложения с использованием Intel® C++ Compiler можно разрабатывать одним из двух способов:

  • Подключить инструменты Intel® C++ Compiler к Android NDK.
  • Использовать Intel® C++ Compiler в качестве автономного компилятора.
  • Intel® Integrated Native Developer Experience beta

    Intel® Integrated Native Developer Experience (Intel® INDE) – это бета-версия кросс-платформенного комплекта разработчика от Intel для быстрого и легкого создания приложений для Android и Windows. INDE предоставляет полный и последовательный набор C++/Java инструментов, библиотек и примеров для настройки среды, создания кода, компиляции, отладки и анализа на устройства на базе процессоров Intel® и некоторых возможностей Android-устройств на базе ARM. Ранее была известна под именем Beacon Mountain.

    Возможности Intel® INDE:

  • Медиа: легко добавить видео и аудио расширения, которые работают на актуальных версиях популярных смартфонов и планшетов. Intel® INDE Media Pack содержит примеры приложений, позволяющих:
  • Работать с камерой и осуществлять захват содержимого экрана.
  • Редактировать видео.
  • Работать с потоковым видео.
  • Поддерживать устройства Android на базе архитектур Intel и ARM.
  • Потоки: эффективная реализация параллелизма с помощью Intel® Threading Building Blocks (Intel® TBB). Intel® TBB является великолепной библиотекой шаблонов C++ и предназначена для разработки высокопроизводительных и масштабируемых приложений. Приложения, использующие параллелизм, могут работать на устройствах Android с версией не меньше 4.3 и клиентских версиях Microsoft Windows 7-8.1.
  • Компиляция: используется Intel® C++ Compiler для Android. Компилятор исходного кода совместим с GCC, что позволяет легко использовать их совместно. Некоторые подробности про работу с компилятором приведены выше.
  • Построение кода: максимальная производительность графики достигается посредством использования Compute Code Builder. Этот инструмент помогает создавать, компилировать, отлаживать и анализировать такие API как Google Renderscript и OpenCL™. Compute Code Builder можно использовать в автономном режиме или интегрировать с Microsoft Visual Studio или Eclipse. Разработанные таким образом приложения могут работать на устройствах Android с версией не меньше 4.3 и клиентских версиях Microsoft Windows 7-8.1.
  • Анализ и отладка: эти инструменты можно использовать:
  • В режиме реального времени для анализа исполнения кода, использования CPU/GPU, выполнения различных задач.
  • Для анализа и отладки захваченных кадров.
  • В пакет входят the Intel® Graphics Performance Analyzer (Intel® GPA) System Analyzer, Intel® GPA Platform Analyzer, Intel® GPA Frame Analyzer и Intel® Frame Debugger. Средства доступны для Microsoft Windows 7-8.1 и Android 4.4.
  • Общие настройки среды: можно быстро настроить среду под себя, потратив на это не часы, а минуты. Можно выбрать часть инструментов и установить только их. Может работать с Google Android SDK (включая Eclipse), плагином Microsoft Visual Studio, Android NDK и другими средствами.
  • Intel XDK

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

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

    Среда Intel XDK позволяет разрабатывать приложения, используя следующие технологии:

  • Язык гипертекстовой разметки HTML5.
  • Каскадные таблицы стилей CSS3.
  • Встраиваемый язык программирования JavaScript.
  • Более полный обзор среды приведен в первой части данного курса. В лабораторной работе рассмотрены некоторые практические аспекты работы с Intel XDK.

    Вернуться к учебному плану