В настоящее время рынок iOS, как и рынок Android, переживает настоящий бум. Стоило только App Store достичь пика популярности, как Android Market (переименованный в Google Play) стал молниеносно наращивать обороты – в мире беспроводных коммуникаций иначе не бывает. Вот почему сегодня любая толковая компания, желающая заиметь мобильное приложение для продвижения собственного бизнеса, оказывается перед серьезной проблемой: как донести такое приложение и до пользователей iPhone, и до аудитории Android?
В итоге многие компании отдают предпочтение iPhone, но достаточно скоро может возникнуть необходимость портировать программу на другую платформу. Сеть просто кишит различными эмуляторами устройств, благодаря чему можно приступать к разработке и тестированию приложения практически сразу, прямо на ПК. Но насколько эффективна будет такая разработка? Представьте себе, насколько разнообразны формы, размеры, разрешение экрана и марки имеющихся в наличии устройств, на которых используется операционная система Android. Если разработчик не хочет выпускать приложение «на авось», то ему просто не обойтись без тестирования программы на реальных устройствах. Кроме того, чем больше разных устройств он при этом задействует – тем лучше.
Процессы портирования с Android на iOS и наоборот – далеко не одинаковые. Ключевая разница заключается в том, что с системой iOS работает всего три устройства – iPhone/iPod (разрешение экрана одинаковое, свойства несколько отличаются) и iPad (позволяющий без особых проблем использовать различные версии ОС); при этом, уже имеется несметное множество устройств, с поддержкой Android, и они продолжают появляться как грибы после дождя.
Более того, все устройства с Android – уникальные и специфичные: у них разные очертания экрана, соотношение сторон дисплея и т.д. С учетом всех этих сложностей при портировании приложений iOS на Android неизбежно возникнут проблемы. Давайте рассмотрим наиболее актуальные из них.
Портирование многоязычного приложения
Сравнительно немногие приложения имеют только одну языковую версию – в большинстве программ их две или больше. Очевидно, что языки очень отличаются, и одно и то же слово совершенно по-разному пишется по-английски, по-французски, по-немецки, по-итальянски, по-русски, по-китайски и т.д. Вот почему текст выглядит по-своему в каждой отдельной языковой версии приложения.
Некоторые недобросовестные разработчики иногда просто сокращают слова, если они не помещаются в текстовом поле. Разумеется, это самый простой и быстрый способ. Но его последствия могут быть катастрофическими. Пользователь может увидеть на экране нечто вроде «Derz. gibt es keine Internetverb. zur Verfüg» (сокращенная немецкая фраза, означающая «Отсутствует соединение с Интернетом» - прим. пер.). И кому охота читать эту абракадабру и догадываться, что бы она могла означать?
Рассмотрим для примера одно из новых приложений – AR.FreeFlight version 2.0 – интерфейс которого локализован на 9 языках! (в том числе присутствует японская и китайская версия). Важнейшей задачей было сохранить весь текст, поэтому, пришлось воспользоваться доступным инструментарием. Каждый экран для каждой языковой версии копировался и, при необходимости, модифицировался. Под модификациями здесь понимается изменение размеров шрифта, междустрочного интервала, а также введение отступов.
В Android отсутствует нативная поддержка арабского алфавита. Когда разработчики столкнулись с такой проблемой (была поставлена задача написать программу с арабской локализацией), было решено сгенерировать каждый текстовый экран в виде изображения (это делалось в приложении для ПК, написанном на языке Java). И только тогда арабские символы стали отображаться правильно!
Итак, эту задачу решить удалось, но могут возникнуть многочисленные проблемы с пользовательскими шрифтами. Случается, что некоторые устройства не поддерживают шрифты определенного типа – но как узнать о такой ситуации заранее? Хороший вариант – протестировать приложение на как можно более разнообразных устройствах.
Интерфейс и дизайн
Типичная ошибка – просто скопировать интерфейс приложения iPhone в Android. Необходимо учитывать, что пользователи iOS (как и пользователи Android) привыкли к определенному интерфейсу, и, если в какой-то программе элементы будут скомпонованы совершенно иначе, то могут возникнуть значительные неудобства
Нужно знать свойства платформы. Приведем типичный пример: часы и индикатор зарядки батареи на Samsung Galaxy Tab, Motorola Xoom и большинстве планшетов с Android по умолчанию отображаются в нижней части экрана. В iPhone такая характеристика отсутствует, и обычно эти элементы размещаются в самом приложении. Тем не менее, если мы портируем приложение с iOS на Android, то нужно дважды подумать, прежде чем изобретать велосипед!
На каждом смартфоне есть собственная оригинальная цветовая гамма (палитра). Но некоторые компании, производящие устройства для работы с Android, с завидной регулярностью изменяют стандартное цветовое оформление на брендовое, сделанное специально для нужд фирмы. Это еще одно обстоятельство, которое необходимо иметь в виду, портируя приложение (правда, со временем стандартное оформление устройства может измениться).
Что же делать? Для успешной разработки нужно копировать для себя всю графику из программы. При этом не помешали бы консультации дизайнера. Да, это более трудоемкая задача, отбирающая больше времени, но в данном случае овчинка выделки стоит.
Однако в устройствах с Android недавно была замечена еще одна интересная функциональная деталь: обмен информацией между приложением устройством для определения разрешения экрана. В связи с этим возникает две сложности.
На планшетах с операционной системой Android 3.0 и выше приложение, в файле описания которого ничего не сказано о поддержке планшетов, обычно масштабируется. Таким образом, устройство может «обмануть» приложение, которое будет «полагать», что работает на экране с разрешением 480х768 пикселей (а может быть, и с совершенно другими параметрами) – притом, что в действительности разрешение планшета составляет 1280х800 пикселей. Конечно, изображение в таком случае будет выглядеть далеко не идеально.
На большинстве новейших устройств, работающих с операционной системой Android 3.0 и выше, системные кнопки, раньше бывшие частью оборудования, превратились в программные компоненты (то есть оказались прямо на экране). Из-за этого в распоряжении программы остается всего 1194х800 пикселей вместо заявленных 1280х800. Из-за этого становится сложно правильно подобрать правильные размеры для отображаемых на экране ресурсов. Согласитесь, если некоторые элементы экрана внезапно окажутся перекрыты кнопками – это довольно серьезная расплата за игнорирование описанных фактов.
Потенциальные проблемы с медиафайлами
В iOS аудио- и виде-файлы, как правило, воспроизводятся верно и гладко. Но устройства с Android (особенно, работающие со сравнительно старыми версиями операционной системы) обычно не слишком хорошо приспособлены к работе с видео. Вы должны быть готовы к неожиданным сбоям, в частности, к проблемам, которые связаны с пользовательским интерфейсом: при запуске видео экран может мерцать, при попытке поместить элементы пользовательского интерфейса «поверх» воспроизводимого видеоролика возможно замедление работы, и т.д.
Рассмотрим, например, Kindle Fire. C ним связан любопытный факт: Kindle Fire обрезает последние 300 миллисекунд любого воспроизводимого в нем аудио-трека. Но эту проблему уже научились обходить: просто в конце каждой дорожки добавляется 300 миллисекунд тишины.
С Kindle Fire связана и еще одна, более экзотическая проблема. Как правило, системные диалгоговые окна имеют тонкие прозрачные края. Но в диалоговом окне Kindle Fire эти границы гораздо шире. Таким образом, часть интерфейса в некоторых диалоговых окнах (например, в Facebook) просто не отображается. Кроме того, эта проблема обусловлена тем, что нативная библиотечная функция Facebook реализована так, что программа учитывает только ширину дисплея, но не ширину диалогового окна. Следует найти решение и для этой проблемы.
Соединяемость по Bluetooth
В некоторых приложениях исключительную важность приобретает обеспечение соединения со сторонними устройствами по Bluetooth. Типичными примерами таких программ являются некоторые медицинские приложения, ориентированные на профессиональных врачей. Им приходится соединять по Bluetooth несколько устройств для сбора и передачи информации о состоянии пациента и т.д. Таким образом, если подобное приложение работает в iOS, то переход в Android будет равносилен прыжку в другое измерение.
Во-первых, всегда необходимо проверять, функционирует ли Bluetooth на каких-либо устройствах, где вы тестируете свое приложение. Например, на Kindle Fire и планшете Nook такая связь в принципе отсутствует (равно как и GPS-система глобального позиционирования). Клиенту необходимо объяснить, что на таких устройствах приложение с Bluetooth работать не будет – из-за ограничений, обусловленных самими устройствами.
Чтобы сразу исключить претензии пользователя («Почему эта программа не работает у меня на Андроиде?!.») разработчик должен указывать требования к оборудованию в файле описания (манифесте) Android. Таким образом, Google Play просто не будет показывать приложение тем пользователям, чьи устройства не обладают необходимыми функциональными возможностями.
Android правильно устанавливает и поддерживает соединение Bluetooth, лишь когда одно устройство работает в паре с другим. Мобильное устройство предложит пользователю выбрать другое устройство для соединения, поэтому будет рационально сделать в программе кнопку «Scan for available devices» (Проверить наличие доступных устройств).
Есть еще один нюанс, который необходимо учитывать: каждое устройство может одновременно устанавливать ограниченное количество соединений по Bluetooth, и для разных устройств с Android это количество варьируется.
Так как же подчинить себе рынок?
Учитывая все вышеизложенное, резюмируем: если мы хотим идти в ногу с разработкой приложений под Android, то нам совершенно не обойтись без тестирования приложений на разнообразных имеющихся в продаже смартфонах и планшетах. Иными словами, глубокие знания о тонкостях различных устройств – великое благо, а вот выпуск на рынок приложения, не прошедшего надлежащего тестирования, порочен по определению. Это равносильно тому, как если бы вы попытались с завязанными глазами вести машину по незнакомой дороге. Никогда не знаешь, где может случиться авария и в какой ситуации может отказать новоиспеченное приложение для Android.
http://blog.lemberg.co.uk/android-development/testing-on-real-devices/
Apple показала iPhone 14 и сразу несколько Apple Watch. Главное
7 сентября прошла осенняя презентация Apple, на которой компания представила новую линейку iPhone, несколько Apple Watch и беспроводные наушники. Рассказываем о новинках презентации.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.