Презентацию к лекции Вы можете скачать здесь.
Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с программой. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.
Необходимость в портировании возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.
Международные стандарты значительно упрощают портирование. Они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1), сводится к перекомпиляции программы на новой платформе. Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.
Некоторые языки программирования высокого уровня достигают портируемости путем трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.
Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера, игровой приставки или мобильного устройства) на другую платформу.
На рис 7.1 представлен пример портированной программы.
(рис 7.1) Главное окно популярного приложения Adobe Reader, предназначенного для просмотра файлов в формате *.pdf. Слева версия для ПК на базе Windows, справа Android
При портировании десктопных приложений на смартфон следует учитывать возможности мобильного устройства, отличные от возможностей персонального компьютера. Они оказывают существенное влияние на работоспособность приложений, но при этом у разработчиков появляются новые способы взаимодействия с пользователем.
К особенностям смартфонов, требующим особого внимания при разработке приложений, относятся:
С другой стороны, смартфоны обладают возможностями, отличными от традиционных для обычных компьютеров:
С одной стороны, основные принципы проектирования для мобильных устройств являются общими для всех платформ. С другой стороны, при разработке приложения под конкретную систему и Android в том числе необходимо учитывать ее особенности.
Разработка мобильного приложения "с нуля" состоит из нескольких важных этапов:
При портировании приложения на Android есть некоторые отличия от описанного процесса. Задача уже поставлена, есть работающий код, который хотелось бы использовать с минимальными изменениями. Готовое приложение нужно будет готовить к публикации и т.д. абсолютно таким же образом. Но на остальных этапах есть значительные отличия:
При выборе платформы разработки приложения необходимо сначала определиться с ее типом. Существуют три варианта: родная (нативная), Web и гибридная.
Родные (нативные) платформы позволяют создавать приложения, которые замечательно выглядят и воспринимаются, а также обеспечивают сравнительно высокую производительность. Оборотная сторона разработки родных приложений ? для каждой платформы нужно писать свой код. Портирование нативных приложений наиболее сложное.
Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности. Портирование не представляет особых сложностей.
Гибридные инструменты и среды ликвидируют этот разрыв, сочетая в себе простоту программирования и универсальность Web-приложений с блеском родных приложений. Портирование гибридных приложений зависит от многих факторов, которые могут как упрощать, так и усложнять процесс перехода на другую платформу.
Перед портированием необходимо произвести разделение платформенно-зависимых и платформенно-независимых частей программы. Если при проектировании исходного приложения соблюдался принцип отделения интерфейса от реализации, переделать его под другую платформу будет гораздо проще.
Особенности разработки интерфейсов для смартфонов изложены подробно в лекции 3 "Особенности интерфейсов для смартфонов. Принципы юзабилити". Здесь мы приведем некоторые уточнения, касающиеся особенностей переноса интерфейсов приложений на смартфоны.
При переносе ранее разработанного приложения на смартфон нельзя ограничиваться созданием уменьшенной копии. Следует принимать во внимание хотя бы эти тонкости:
(рис 7.2) Клиент социальной сети «Вконтакте» имеет визуальный якорь – верхнюю панель, при взгляде на которую пользователь видит, где он находится и что может сделатьСуществует набор официальных рекомендаций от компании 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 приводится следующие определения:
Для упрощения ситуации устройства 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) Компоненты приложения расположены по-разному на различных устройствах
Для указания альтернативных конфигураций необходимо:
<resources_name>-<config_qualifier>, где
<resources_name> – это имя каталога соответствующих ресурсов по умолчанию (для компоновки используется layout);<qualifier> – имя, определяющее индивидуальную конфигурацию устройств, для которых используются соответствующие ресурсы (ldrtl для языков, читающихся справа налево, ldltr для языков, читающихся слева направо). 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-карте. Многие модели телефонов имеют возможность подключения внешней карты через встроенный кардридер, что подразумевает возможность ее замены. Поэтому при разработке приложений следует придерживаться следующего правила. Все критичные для работы приложения файлы записываются в память устройства, а дополнительные, особенно имеющие большой объем, лучше выносить на карту памяти. Это позволит выделить и защитить функционал приложения, сэкономив место в памяти устройства.
Если приложению необходим доступ к сети, необходимо помнить следующее:
Существуют специальные программные средства (среды программирования), облегчающие портирование приложений на разные платформы. Рассмотрим некоторые из них, позволяющие получать приложения для Android.
Основополагающей концепцией Marmalade SDK является однократное написание программы и компилирование ее на все поддерживаемые платформы, без необходимости программирования на различных языках программирования и использования различных API для каждой платформы.
Процесс разработки в Marmalade чрезвычайно прост. Код пишется на С++ или с использованием HTML5, может содержать скриптовые вставки на Lua. При сборке проекта необходимо указать платформы, для которых она осуществляется, и все остальное среда делает автоматически.
Многие игры, прочно обосновавшиеся в топах магазинов приложений, от казуальных "Cut the Rope" и "Plants vs. Zombies" до крутых "Call of Duty" и "Need for Speed" были разработаны с использованием Marmalade.
Marmalade поддерживает различные мобильные платформы:
А так же десктопные платформы:
Для использования необходимо приобрести лицензию. Есть несколько вариантов лицензии, самая дешевая 15$ за месяц использования (бесплатный пробный период 30 дней). Marmalade SDK выгодно использовать при профессиональной разработке сразу под несколько платформ.
Android NDK – это набор инструментов, позволяющих реализовать части вашего приложения с использованием языков C и C + +. Он может пригодиться, если вы хотите повторно использовать существующие библиотеки кода, написанные на этих языках.
NDK — великолепный инструмент, позволяющий сочетать мощь кода x86 с графическим интерфейсом приложения-оболочки Android. Этот инструмент можно использовать для повышения производительности некоторых приложений, но необходимо соблюдать меры предосторожности, поскольку желаемого результата можно добиться не всегда.
Основная цель NDK заключается в предоставлении разработчикам следующих возможностей:
Перед использованием NDK необходимо взвесить преимущества и недостатки его использования. Использование библиотек С и С++ обычно не дает заметного улучшения производительности, однако сложность разработки всегда увеличивается в разы. Не стоит использовать Android NDK только потому, что вы хорошо знаете С/С++ и предпочитаете программировать на этих языках.
NDK не следует использовать для портирования приложений, требующих выполнения большого количества сложных операций, таких как обработка сигналов, моделирование физических процессов и т.п. В таких случаях будет проще использовать стандартные средства и переписать код с использованием соответствующих библиотек, доступных для Android SDK.
Intel® C++ Compiler для Android представляет собой компилятор для создания приложений C и C + +, ориентированные на устройства Android на базе Intel Atom. Он может быть использован совместно с набором библиотек и инструментов Android NDK.
Возможности Intel® C++ Compiler для Android:
Приложения с использованием Intel® C++ Compiler можно разрабатывать одним из двух способов:
Intel® Integrated Native Developer Experience (Intel® INDE) – это бета-версия кросс-платформенного комплекта разработчика от Intel для быстрого и легкого создания приложений для Android и Windows. INDE предоставляет полный и последовательный набор C++/Java инструментов, библиотек и примеров для настройки среды, создания кода, компиляции, отладки и анализа на устройства на базе процессоров Intel® и некоторых возможностей Android-устройств на базе ARM. Ранее была известна под именем Beacon Mountain.
Возможности Intel® INDE:
Intel XDK поддерживает разработку кроссплатформенных мобильных приложений, поэтому при переносе приложения в эту среду можно будет его использовать не только на платформе Android. Достаточно всего лишь пересобрать приложение для других платформ, и оно будет работать.
Следует учитывать, что при разработке изначально кроссплатформенного приложения не следует использовать возможности и соглашения, характерные только для одной платформы. Нужно избегать "фишек" конкретных мобильных операционных систем, при этом придерживаясь общих рекомендаций по разработке интерфейсов мобильных приложений.
Среда Intel XDK позволяет разрабатывать приложения, используя следующие технологии:
Более полный обзор среды приведен в первой части данного курса. В лабораторной работе рассмотрены некоторые практические аспекты работы с Intel XDK.
Презентацию к лекции Вы можете скачать здесь.
Процесс портирования также называют портированием или переносом, а результат — портом. Но в любом случае главной задачей при портировании является сохранение привычных пользователю интерфейса и приёмов работы с программой. Добавление новых или удаление части имеющихся свойств при портировании программных продуктов не допускается.
Необходимость в портировании возникает обычно из-за различий в системе команд процессора, различий между способами взаимодействия операционной системы и программ (API — Application Program Interface), принципиальных различий в архитектуре вычислительных систем, либо по причине некоторых несовместимостей или даже полного отсутствия используемого языка программирования в целевом окружении.
Международные стандарты значительно упрощают портирование. Они описывают среду исполнения программ таким образом, что различия между платформами становятся минимальными. Часто портирование программ между платформами, реализующими один и тот же стандарт (такой как POSIX.1), сводится к перекомпиляции программы на новой платформе. Существует также всё расширяющийся набор инструментов, облегчающих портирование, например, таких как GCC, предоставляющий неизменный язык программирования на различных платформах.
Некоторые языки программирования высокого уровня достигают портируемости путем трансляции исходного кода в промежуточный язык, имеющий компиляторы для многих процессоров и операционных систем.
Термин портирование часто применяется к компьютерным играм, а именно, к процессу переноса компьютерной игры с первоначальной целевой платформы (персонального компьютера, игровой приставки или мобильного устройства) на другую платформу.
На рис 7.1 представлен пример портированной программы.
(рис 7.1) Главное окно популярного приложения Adobe Reader, предназначенного для просмотра файлов в формате *.pdf. Слева версия для ПК на базе Windows, справа Android
При портировании десктопных приложений на смартфон следует учитывать возможности мобильного устройства, отличные от возможностей персонального компьютера. Они оказывают существенное влияние на работоспособность приложений, но при этом у разработчиков появляются новые способы взаимодействия с пользователем.
К особенностям смартфонов, требующим особого внимания при разработке приложений, относятся:
С другой стороны, смартфоны обладают возможностями, отличными от традиционных для обычных компьютеров:
С одной стороны, основные принципы проектирования для мобильных устройств являются общими для всех платформ. С другой стороны, при разработке приложения под конкретную систему и Android в том числе необходимо учитывать ее особенности.
Разработка мобильного приложения "с нуля" состоит из нескольких важных этапов:
При портировании приложения на Android есть некоторые отличия от описанного процесса. Задача уже поставлена, есть работающий код, который хотелось бы использовать с минимальными изменениями. Готовое приложение нужно будет готовить к публикации и т.д. абсолютно таким же образом. Но на остальных этапах есть значительные отличия:
При выборе платформы разработки приложения необходимо сначала определиться с ее типом. Существуют три варианта: родная (нативная), Web и гибридная.
Родные (нативные) платформы позволяют создавать приложения, которые замечательно выглядят и воспринимаются, а также обеспечивают сравнительно высокую производительность. Оборотная сторона разработки родных приложений ? для каждой платформы нужно писать свой код. Портирование нативных приложений наиболее сложное.
Мобильные Web-приложения обычно пишут на HTML5, CSS и JavaScript. Их можно написать один раз и запускать на разных платформах, но такие приложения могут уступать родным по внешнему виду, восприятию и производительности. Портирование не представляет особых сложностей.
Гибридные инструменты и среды ликвидируют этот разрыв, сочетая в себе простоту программирования и универсальность Web-приложений с блеском родных приложений. Портирование гибридных приложений зависит от многих факторов, которые могут как упрощать, так и усложнять процесс перехода на другую платформу.
Перед портированием необходимо произвести разделение платформенно-зависимых и платформенно-независимых частей программы. Если при проектировании исходного приложения соблюдался принцип отделения интерфейса от реализации, переделать его под другую платформу будет гораздо проще.
Особенности разработки интерфейсов для смартфонов изложены подробно в лекции 3 "Особенности интерфейсов для смартфонов. Принципы юзабилити". Здесь мы приведем некоторые уточнения, касающиеся особенностей переноса интерфейсов приложений на смартфоны.
При переносе ранее разработанного приложения на смартфон нельзя ограничиваться созданием уменьшенной копии. Следует принимать во внимание хотя бы эти тонкости:
(рис 7.2) Клиент социальной сети «Вконтакте» имеет визуальный якорь – верхнюю панель, при взгляде на которую пользователь видит, где он находится и что может сделатьСуществует набор официальных рекомендаций от компании 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 приводится следующие определения:
Для упрощения ситуации устройства 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) Компоненты приложения расположены по-разному на различных устройствах
Для указания альтернативных конфигураций необходимо:
<resources_name>-<config_qualifier>, где
<resources_name> – это имя каталога соответствующих ресурсов по умолчанию (для компоновки используется layout);<qualifier> – имя, определяющее индивидуальную конфигурацию устройств, для которых используются соответствующие ресурсы (ldrtl для языков, читающихся справа налево, ldltr для языков, читающихся слева направо). 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-карте. Многие модели телефонов имеют возможность подключения внешней карты через встроенный кардридер, что подразумевает возможность ее замены. Поэтому при разработке приложений следует придерживаться следующего правила. Все критичные для работы приложения файлы записываются в память устройства, а дополнительные, особенно имеющие большой объем, лучше выносить на карту памяти. Это позволит выделить и защитить функционал приложения, сэкономив место в памяти устройства.
Если приложению необходим доступ к сети, необходимо помнить следующее:
Существуют специальные программные средства (среды программирования), облегчающие портирование приложений на разные платформы. Рассмотрим некоторые из них, позволяющие получать приложения для Android.
Основополагающей концепцией Marmalade SDK является однократное написание программы и компилирование ее на все поддерживаемые платформы, без необходимости программирования на различных языках программирования и использования различных API для каждой платформы.
Процесс разработки в Marmalade чрезвычайно прост. Код пишется на С++ или с использованием HTML5, может содержать скриптовые вставки на Lua. При сборке проекта необходимо указать платформы, для которых она осуществляется, и все остальное среда делает автоматически.
Многие игры, прочно обосновавшиеся в топах магазинов приложений, от казуальных "Cut the Rope" и "Plants vs. Zombies" до крутых "Call of Duty" и "Need for Speed" были разработаны с использованием Marmalade.
Marmalade поддерживает различные мобильные платформы:
А так же десктопные платформы:
Для использования необходимо приобрести лицензию. Есть несколько вариантов лицензии, самая дешевая 15$ за месяц использования (бесплатный пробный период 30 дней). Marmalade SDK выгодно использовать при профессиональной разработке сразу под несколько платформ.
Android NDK – это набор инструментов, позволяющих реализовать части вашего приложения с использованием языков C и C + +. Он может пригодиться, если вы хотите повторно использовать существующие библиотеки кода, написанные на этих языках.
NDK — великолепный инструмент, позволяющий сочетать мощь кода x86 с графическим интерфейсом приложения-оболочки Android. Этот инструмент можно использовать для повышения производительности некоторых приложений, но необходимо соблюдать меры предосторожности, поскольку желаемого результата можно добиться не всегда.
Основная цель NDK заключается в предоставлении разработчикам следующих возможностей:
Перед использованием NDK необходимо взвесить преимущества и недостатки его использования. Использование библиотек С и С++ обычно не дает заметного улучшения производительности, однако сложность разработки всегда увеличивается в разы. Не стоит использовать Android NDK только потому, что вы хорошо знаете С/С++ и предпочитаете программировать на этих языках.
NDK не следует использовать для портирования приложений, требующих выполнения большого количества сложных операций, таких как обработка сигналов, моделирование физических процессов и т.п. В таких случаях будет проще использовать стандартные средства и переписать код с использованием соответствующих библиотек, доступных для Android SDK.
Intel® C++ Compiler для Android представляет собой компилятор для создания приложений C и C + +, ориентированные на устройства Android на базе Intel Atom. Он может быть использован совместно с набором библиотек и инструментов Android NDK.
Возможности Intel® C++ Compiler для Android:
Приложения с использованием Intel® C++ Compiler можно разрабатывать одним из двух способов:
Intel® Integrated Native Developer Experience (Intel® INDE) – это бета-версия кросс-платформенного комплекта разработчика от Intel для быстрого и легкого создания приложений для Android и Windows. INDE предоставляет полный и последовательный набор C++/Java инструментов, библиотек и примеров для настройки среды, создания кода, компиляции, отладки и анализа на устройства на базе процессоров Intel® и некоторых возможностей Android-устройств на базе ARM. Ранее была известна под именем Beacon Mountain.
Возможности Intel® INDE:
Intel XDK поддерживает разработку кроссплатформенных мобильных приложений, поэтому при переносе приложения в эту среду можно будет его использовать не только на платформе Android. Достаточно всего лишь пересобрать приложение для других платформ, и оно будет работать.
Следует учитывать, что при разработке изначально кроссплатформенного приложения не следует использовать возможности и соглашения, характерные только для одной платформы. Нужно избегать "фишек" конкретных мобильных операционных систем, при этом придерживаясь общих рекомендаций по разработке интерфейсов мобильных приложений.
Среда Intel XDK позволяет разрабатывать приложения, используя следующие технологии:
Более полный обзор среды приведен в первой части данного курса. В лабораторной работе рассмотрены некоторые практические аспекты работы с Intel XDK.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.